Datasets_GetPreparation
const url = 'https://junction-api.qualiastudios.dev/v1/accounts/example/datasets/example/preparation';const options = {method: 'GET', headers: {'X-API-Key': '<X-API-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://junction-api.qualiastudios.dev/v1/accounts/example/datasets/example/preparation \ --header 'X-API-Key: <X-API-Key>'What the newest prepare run did to an upload (every upload is prepared after it lands): the Task it matched and applied, or the Task it drafted; the takes it split; the dataset’s own task names and the decisions a person made on them. A dataset with no run (a merged dataset, an upload before preparation existed) answers state NONE.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The account id.
The dataset id.
Responses
Section titled “ Responses ”OK
What the newest prepare run did to an upload. Its splits make the next version’s episodes (v0 keeps the takes as uploaded); the rest is a proposal or a flag, and no Task was published.
object
Accounts/{account}/datasets/{dataset}/preparation
Where the newest run is.
The newest run’s id.
The dataset version the run read.
When the run was queued.
When the run last changed.
Why the run failed.
The matched or drafted Task. Unset for a run that discovery split into tasks: each has its own Task, in discovery.
object
True when a published Task matched; false when the run drafted one.
Tasks/{task}: the matched Task, or the draft.
The matched revision; 0 for a draft.
Match score, 0 to 1 (0 for a draft).
One line on what the score rests on.
The top candidates, best first (at most 5).
Another Task the match scored.
object
Tasks/{task}
The Task’s name.
Match score, 0 to 1.
The TASK_ASSIGNED event that applied the match; empty when not applied.
How many episodes the match was applied to.
True once that event was undone.
The event that undid it.
The Task’s name.
The takes it split.
object
Only takes split into two or more pieces.
One take the run split into pieces.
object
The as-uploaded (v0) episode.
The take’s duration in seconds.
The windows kept as pieces.
A window of a take, in take time.
object
Start, seconds from the take’s start.
End, seconds from the take’s start.
The idle stretches the cut found.
A window of a take, in take time.
object
Start, seconds from the take’s start.
End, seconds from the take’s start.
The pieces, in span order, in the version the split made.
The split event.
Takes the run left whole or could not split.
The dataset’s own task names.
object
None, outcome_split, single, too_many, sparse, codes or informative.
One line on why.
The rule offers the names (informative).
A person may confirm them (informative, sparse).
One per distinct name, most episodes first.
One distinct task name.
object
Ts_
The string as the dataset gives it.
Episodes that carry it.
It looks like a rig or session code.
It can never be confirmed (see blocked_reason).
The person’s decision; unset when nobody decided.
object
The task name the person gave it.
True: use it as a task. False: a person said no.
Who decided.
object
What kind of actor it is.
The person’s user id when kind is PERSON; empty otherwise.
The person’s display name at the time, for rendering without a lookup.
The rule code, or for a MODEL the Qualia model tier (e.g. “qualia-vlm”; “qualia” for any other model), when not a person.
The run a model or rule finding came from, when it has one.
The API key’s id when a person acted through one; empty for a session. Never the key itself.
Signed identity evidence recorded with the change, kept apart from the principal above. Unset on older records and wherever none was signed.
object
How the principal authenticated.
The user id of a person verified as starting the work: the person of a session, or the person a trusted service’s signed job record names. Empty when nobody was verified.
The initiator’s display name at the time, never their email.
The user id of the key’s creator at the time. Not who used the key.
Who owned the key at the time.
The owning space’s id (a workspace or the organization) when
credential_owner is SPACE.
When.
Why it is blocked: outcome words, a code, already a task label.
The tasks discovery found; unset on runs from before discovery.
object
Where discovery is.
The tasks, by task_key.
One discovered task.
object
The matched Task or the draft’s id; empty when no draft was made.
Sha256 of the task’s sorted member take ids.
The task’s name: its Task’s name when it has one (as the Task’s page shows it), else the name discovery gave it.
Takes in the task.
The task’s health: ok, or the reasons it may hold more than one task, comma-separated (inverse, margin), or flagged without one.
The picked reference takes’ ids, best first.
Takes no task holds (their map failed): not linked, not checked.
Why discovery fell back or failed; empty otherwise.
Unset when the upload’s task names were not assessed (a fallback).
object
The names are offered, the discovered tasks disagree with them, and none is confirmed yet.
The sentence that says how they disagree; empty when they agree.
FAILED or FALLBACK, and the tasks are the episodes’ own task strings (their task label, else their instruction), one per distinct string, each with its own Task; takes without a string are unsorted.
Takes without a published annotation. Above zero, the run is partial: the other takes’ annotations stand.
The first 100 of those takes, each with why.
A take whose proposed annotation did not publish.
object
Accounts/{account}/datasets/{dataset}/episodes/{episode}
Why, as the run recorded it.
What the run flagged without failing, one sentence each: a model that answered in place of the one asked for (“3 reads answered by a fallback model instead of Qualia VLM”, Qualia names only), whose labels may be weaker. A read is a reply whose model was checked, not a label. A SUCCEEDED run whose task discovery failed says so here in one fixed sentence (“Task discovery did not finish, so the takes were prepared as one task for the whole dataset.”), or ”… prepared as a task per instruction they carry.” when the takes’ own task strings gave the tasks (discovery.task_strings_fallback), or, for a failed re-run that left earlier tasks standing, “Finding the tasks again did not finish; the tasks found before stand.”; the reason is in discovery.reason. Empty when none.
Example
{ "state": "STATE_UNSPECIFIED", "taskStrings": { "candidates": [ { "confirmation": { "actor": { "kind": "KIND_UNSPECIFIED", "attribution": { "authentication": "AUTHENTICATION_UNSPECIFIED", "credentialOwner": "CREDENTIAL_OWNER_UNSPECIFIED" } } } } ] }, "discovery": { "status": "STATUS_UNSPECIFIED" }}default
Section titled “default ”Default error response
A refusal from the API itself.
object
The gRPC code name in upper case, e.g. NOT_FOUND.
Whether the same call may succeed if retried.
Empty, except when a dataset copy or move is refused: then one google.rpc.ErrorInfo with the refusal’s reason code, its domain and, in metadata, the datasets it names.
object
A refusal from the gateway before the call reaches the API, for example 401 bad or missing API key, 403 key lacks the scope or environment closed, 413 body too large.
object
What went wrong.
Example generated
{ "code": "example", "message": "example", "retryable": true, "details": [ {} ]}