Skip to main content

Submit and track a job

Submit to POST /v1/products/{product}/jobs. The 202 response returns a public dap_… job ID. Save it and read GET /v1/product-jobs/{job_id} for status and results. Use the same organization and team context for uploads, submission, and reads.

Poll for completion

Request parameters and response schema Set JOB_ID to the returned job ID, BEEBLE_API_KEY to your key, and BEEBLE_TEAM_ID if your organization uses internal teams:
Response (200, abbreviated):
Set a polling timeout and save the job ID to resume later. A client timeout does not cancel the job. You can also use webhooks.

Download results

Read outputs after success. For SwitchX, download outputs.render; other products use different fields. Each product guide includes a completed response and the field to download. Check that a URL is non-null before downloading. If a signed URL expires, read the same job again for a fresh URL.

Output schemas

Use the response schema for the endpoint you called. The model catalog’s input_schema describes submission inputs, not the returned files. The OpenAPI response schema defines the job envelope. outputs is an open object; product-specific download fields are not typed in that schema. For SwitchX with alpha_mode: "fill", outputs.alpha is null.

Safe retries

  1. Save the idempotency key and request body before submitting.
  2. On a timeout or lost response, retry with the same key, body, organization, and team.
  3. Use a new idempotency key for each new job. Before replacing an earlier attempt, confirm it was rejected or failed.
submitting or unknown may mean the job has already started and charged. Replay the original request; do not submit a replacement with a new key.
Changing the body under the same key returns 409. See Billing & credits before assuming a failed job was refunded.
Organization API keys have no concurrent-job limit. An uncertain submission still retains its original request identity: waiting does not resolve its outcome or make a replacement safe. Replay the same request, and contact support if its outcome cannot be confirmed.

List jobs

Request parameters and response schema Response (200, empty page):
The response contains jobs and next_cursor. Pass a non-null next_cursor as before to read the next page. limit accepts 1–100 and defaults to 20. Listings contain saved statuses; read an individual job for fresh status and output URLs.

Access after submission

Reads are scoped to the key owner, organization, and selected team. Disabling a product for new submissions still allows reads and replay of its existing jobs, subject to continuing key, membership, and organization security checks. Revoking a key or removing its access can also stop callback delivery.