Idempotency-Key, including single-asset requests
to POST /v1/assets. Reuse the same key and body after a timeout. A changed body
returns 409 idempotency_conflict. Keys are scoped to the Team; replacing an
API key does not create a new submission. Team requests must keep persist
enabled. Queued work starts when capacity and available credits permit it;
billing behavior depends on the Team’s configured pricing policy. Fixed-price
delivery can charge only on success; legacy metered jobs may report reservations.
Do not infer customer pricing or a card charge from provider usage or budget fields.
1. Submit the batch
Submit up to 1,000 asset inputs in one request. Give every item a uniquecustom_id
so your own catalog IDs appear beside its job status:
batch.json:
POST /v1/images with the same Team key
and use the returned image_id values in each input. URLs and uploaded images can
be mixed, with up to eight references per asset. Original bytes and view labels
are retained. An image uploaded to a personal account or another Team cannot
be used by this Team key.
Replace example.com URLs with real image URLs, or use uploaded image IDs.
2. Track progress
The202 response contains batch_id and a Location header. Poll the batch
rather than polling every individual job:
Follow
next_cursor while has_more is true. Successful items remain available
when another item fails. completed means all accepted items reached a terminal
state; inspect succeeded_items and failed_items before treating the batch as
successful. If ingestion is cancelled early, unsubmitted_items reports inputs
that never became jobs. Cancellation of running work can remain pending until its
workers are confirmed stopped. Billing status is reported separately from generation status.
3. Download successful items
items_url links to the authenticated items endpoint. Each item includes
artifact_status, published_formats and a result link when successful.
Publication records the completed export bundle; it does not guarantee storage
availability at the moment of download. validation_status: "not_reported"
means no simulation validation verdict is exposed. It does not mean that QA
was skipped: a delivered bundle can contain physics-qa.json with executed results
while the public job field remains not_reported. Inspect those results and their
input hashes; do not interpret job success as a QA pass. Successful export does not
certify geometry, physics or Isaac compatibility.
See Billing & limits for automatic queueing and charge fields, and Downloads & bundle formats for each successful asset.
Retry selected items
SendPOST /v1/batches/{source_batch_id}/retry with a new Idempotency-Key and:
index values from the items endpoint. Select 1–1,000
unique indices of failed or cancelled jobs. Successful, running, unsubmitted,
still-stopping or financially unreconciled items are rejected before acceptance.
The whole selection is checked; the server does not silently skip invalid items.
A 202 returns a new batch ID. Its status includes source_batch_id; each
new job includes retry_of_job_id and retains the original custom_id, prompt,
references and view labels. Original jobs/results remain unchanged. The new batch
pins the Team release current at retry acceptance and uses fresh per-job
budgets, subject to the same credit and capacity controls. Retried items queue
automatically within the Team processing limit. Optional max_cost_cents applies
to the new batch.
Retry a lost response with the same key and selection to recover the same
batch; changing the selection or limits under that key returns 409. Changing
only selection order is equivalent. A different key authorizes another retry and
may incur another generation charge.
If authoring succeeded and only export failed, use export-only recovery instead of paying to author the asset again.