Tasks
Is my task_id still valid after the task finishes?
Is my task_id still valid after the task finishes?
Yes. A
task_id is durable. Read status and output any time, and continue the task with
new instructions whenever you want more from it. See The task model.Should I continue a task or start a new one?
Should I continue a task or start a new one?
Continue whenever the request refines previous work: add a column, find more rows, narrow
the criteria, fix empty fields. A continued task keeps its plan, rows, and task-local
files; a new task starts from nothing. Start fresh only when the goal itself is unrelated.
See Follow-up tasks.
Why did I get a 409 when continuing a task?
Why did I get a 409 when continuing a task?
A task runs one turn at a time. Continuing or executing while a turn is in flight is
rejected with
409 rather than queued. Wait for the current turn to end, or stop it with
POST /task/{task_id}/stop. See Errors.Does clarify: false skip planning?
Does clarify: false skip planning?
No. The agent always plans.
clarify: false means it infers defaults and proceeds without
stopping; clarify: true allows one blocking question before execution. See
Human in the loop.Can I change the model tier after starting?
Can I change the model tier after starting?
No.
version applies to the start routes only, and the task stays on that tier for its
whole life, including every continue. Read it back as tier on GET /task/{task_id}. See
Model tiers.Waiting and reading results
Why does my poll loop never exit?
Why does my poll loop never exit?
Two common causes. First, a finished task returns to
status: "plan", which is also its
state before executing, so waiting on status alone misreads it. Second, loops that only
wait for plan plus idle never exit on a task that was deleted or ran out of credits.
Task lifecycle has the complete terminal check to copy.Why is row["title"] an object instead of a string?
Why is row["title"] an object instead of a string?
Output rows are made of cells. Every field pairs its value with the source it came from:
{"value": "Acme", "source_id": "s1"}. Flatten to plain values when you only want the
data, and keep the cells when you need provenance. See
Outputs and sources.What are the underscore keys in my rows?
What are the underscore keys in my rows?
Keys prefixed with
_ are row metadata, not columns: _row_id, _sources, and lineage or
validation fields. Skip them when presenting results.
Structured output includes a flatten helper that drops them.Do I have to hold a stream open for long tasks?
Do I have to hold a stream open for long tasks?
No. Streaming is optional. Poll
GET /task/{task_id} when you only care about the result,
and reach for the SSE routes when you want to watch the agent work. See
Live messages.Keys, credits, and limits
Which header carries the API key?
Which header carries the API key?
Either
X-API-Key: YOUR_KEY or Authorization: Bearer YOUR_KEY. Use the full key you
copied when creating it; the shortened key shown later in settings is display-only and
returns 401. See API overview.How do I check my credit balance?
How do I check my credit balance?
GET /credits returns the balance, and task status responses carry per-task credit usage.
A task that runs out of credits fails with 402 and an error of out_of_credits. See
Rate limits.Why was my version value rejected?
Why was my version value rejected?
ranger and scout are the only accepted values for version. Anything else returns
422 with {"error": "invalid_request", "param": "version"}. See Model tiers.What files can I upload, and how big?
What files can I upload, and how big?
.csv, .txt, .md, and .markdown, up to 10 MB and 10,000 rows. Upload through the
presign flow, and send the PUT to the presigned URL without any Autumn auth headers. See
Attach a CSV.