Skip to main content
POST
Create a dataset from logs

Authorizations

Authorization
string
header
required

Your workspace API key, e.g. sk_sovereign_..., sent as Authorization: Bearer <key>.

Body

application/json
name
string
required
Maximum string length: 80
Example:

"support-bot-v1"

holdout_pct
integer
default:0

Also create a second, DISJOINT "{name}-eval" dataset holding this percentage of examples. No example appears in both — that's what makes it valid as an eval source.

Required range: 0 <= x <= 50
Example:

10

filters
object

Which logged exchanges to curate. Omit for all of them. Keys: model, tag (the task label sent as X-Omnia-Tag; a dataset scoped to one task beats one built from mixed traffic), segment (an auto-detected traffic segment, a segment value from GET /v1/logs), finish_reason, cache_hit (boolean), start and end (unix seconds).

sources
object

Which models feed the build. The same task (tag) usually spans every model you route it to; this chooses among them.

quality
object

The quality ladder (default cleaned). In every mode, exchanges a human graded FAIL never enter a dataset.

Response

The created dataset(s) and the curation summary.

training_name
string
training_count
integer
eval_name
string

Present when holdout_pct > 0.

eval_count
integer
summary
object

Curation accounting: total, kept, dropped {unparseable, errored, truncated, empty, duplicate, human_failed}, and the multi-turn folding counts. Every drop is counted by reason, so a dataset is never silently thinner than you think.

quality
object

What the quality gate actually did: mode, criterion_id and criterion_name (judge mode), the judge's kappa at build time, human_pass_kept, ungraded_excluded (graded mode), judged / judge_passed / judge_failed / judge_unparsed and judge_spend_usd (judge mode). A dataset never claims more than what happened.