Or jump from this list on a smaller screen.

This is a page from the Audivra documentation. Developer exportsindex: http://127.0.0.1:3000/docs/llms.txt, full corpus: http://127.0.0.1:3000/docs/llms-full.txt, OpenAPI: http://127.0.0.1:3000/docs/openapi.json, Postman: http://127.0.0.1:3000/docs/postman.json. Press ⌘K to search docs.

POST /api/v1/generate/batch

Queue many talking-head jobs in one request. Paid plans only. Jobs run through the same async pipeline — this is not 500 parallel GPU renders.

POST
/api/v1/generate/batch
Auth required

Requires Starter or above. Max 50 / 200 / 500 items by plan. Payload cap 1.5 MB. Uses the generate rate bucket (100 req/min on paid).

Parameters

NameTypeRequiredDescription
itemsarrayNoJSON array of generate payloads
jsonlstringNoJSONL body (or send Content-Type: application/x-ndjson)
dry_runbooleanNoValidate without enqueueing jobs
webhook_urlstringNoHTTPS callback for batch.completed

Request body

JSON
{
  "items": [
    { "text": "First clip", "voice_id": "aurora" },
    { "text": "Second clip", "avatar_id": "studio-host" }
  ]
}

Response

JSON
{
  "batch_size": 2,
  "jobs": [
    { "job_id": "a1", "status": "queued", "poll": "/api/v1/jobs/a1" }
  ]
}

Errors

StatusMeaning
401Unauthorized
402Quota exceeded on an item
403Free Trial cannot batch; plan item cap exceeded
429Generate rate bucket exceeded

JSONL

JSONL + dry_run
curl -X POST http://127.0.0.1:3000/api/v1/generate/batch \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"dry_run":true,"jsonl":"{\"request_id\":\"1\",\"payload\":{\"text\":\"Hello\"}}\n{\"request_id\":\"2\",\"payload\":{\"text\":\"Second\"}}"}'
Queue a small batch
curl -X POST http://127.0.0.1:3000/api/v1/generate/batch \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"text":"Hello from Audivra"}]}'

Estimate credits first: POST /api/v1/estimate. Single jobs: POST /api/v1/generate.