Skip to main content
For inference calls you don’t want to block on (long-context document processing, batch prompts, mobile clients that can’t hold an SSE stream), submit the same request body as you would to /v1/messages or /v1/chat/completions, but wrap it in /v1/jobs. qlaud returns a job id immediately; the actual upstream call runs on a Cloudflare Queue consumer and the response is retrievable via GET /v1/jobs/:id.

POST /v1/jobs — Submit

Body

Response (202)

GET /v1/jobs/:id — Poll

Response shape varies by status

Queued or running:
Succeeded:
Failed:

Status transitions

Typical wall-clock latencies:
  • queuedrunning: ~5–10 s (queue dispatch + cold consumer start)
  • runningsucceeded: same as the synchronous call would have taken (mostly upstream model latency)

When to use jobs vs. synchronous

Errors

Limits (v1)

  • Streaming jobs (chunk persistence + retrieval) is a separate phase. For now, jobs always force stream: false upstream and return the full response on GET.
  • No webhook-on-completion (poll for now). Coming later via Svix.
  • Job results are stored inline in D1 (1 MB row cap covers virtually every chat-completion response). Larger response bodies move to R2 in a future release.