{"openapi":"3.1.0","info":{"title":"Voyager API","description":"Generate images, video, speech, music, sound effects and 3D with your Voyager workspace's credits. Authenticate with `Authorization: Bearer vy_live_…`. Every response carries `X-Request-ID` and the `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset` (seconds until the window resets) headers; a 429 adds `Retry-After`. Errors share one envelope (`ErrorResponse`).","version":"1.0.0","x-voyager-agent-prompt":"Set up the Voyager API in this project.\n\nVoyager generates images, video, speech, music, sound effects, 3D and object masks with the same models\nand credits as the Voyager app. Docs: https://docs.voyager.so/api  (agent-readable:\nhttps://docs.voyager.so/llms.txt, OpenAPI: https://api.voyager.so/v1/openapi.json)\n\n1. Key: read it from the env var VOYAGER_API_KEY. Never hard-code it or commit it; add\n   VOYAGER_API_KEY= to .env.example and make sure .env is git-ignored. If it's missing,\n   ask me to create one at https://voyager.so/dashboard/api (paid plans).\n2. Base URL https://api.voyager.so/v1, header: Authorization: Bearer $VOYAGER_API_KEY\n3. Pick a model: GET /models?type=image|video|speech|music|sound_effect|3d|segment. Read\n   GET /models/{id} for its input_schema before building a request.\n4. Optional cost check: POST /estimate with the same body as step 5; it returns\n   estimated_charge (credits) and can_run.\n5. Create: POST /jobs {\"model\": \"<id>\", \"operation\": \"<op>\", \"input\": {...}} with an Idempotency-Key header\n   (a new UUID per logical request; reuse it when retrying the same request).\n6. Wait: GET /jobs/{id}?wait=25 until status is succeeded, failed or canceled\n   (honor Retry-After / poll_after_ms). Or pass \"webhook_url\" and verify the\n   Standard Webhooks signature with the secret from the dashboard.\n7. Results: job.outputs[].url is a signed link valid for 1 hour; download it right\n   away, or GET /jobs/{id} again for a fresh link. Files are kept 30 days.\n8. Errors are {\"error\": {\"code\",\"message\",\"retryable\",...}}. 402 = out of credits or\n   not on a paid plan (show error.details.upgrade_url to me). 429 = slow down: wait\n   Retry-After seconds. Retry only when retryable is true, with the same Idempotency-Key.\n\nMinimal example (curl):\n  curl -s https://api.voyager.so/v1/jobs \\\n    -H \"Authorization: Bearer $VOYAGER_API_KEY\" -H \"Content-Type: application/json\" \\\n    -H \"Idempotency-Key: $(uuidgen)\" \\\n    -d '{\"model\":\"nano-banana-2.1\",\"operation\":\"text-to-image\",\"input\":{\"prompt\":\"a red fox in snow\",\"aspect_ratio\":\"16:9\"}}'\n  curl -s \"https://api.voyager.so/v1/jobs/<job id>?wait=25\" -H \"Authorization: Bearer $VOYAGER_API_KEY\"\n\nWrite a small typed client (create → wait → download) with retries as above, then\ngenerate one test image to prove it works and tell me what it cost (job.credits.charged;\nif credits.state is still \"pending\", report job.credits.estimated and say it's an estimate).\n"},"paths":{"/models":{"get":{"tags":["Models"],"summary":"List models","description":"The models the API can run, with expected price and (when known) availability for this workspace.","operationId":"listModels","security":[{"bearerAuth":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"enum":["image","video","speech","music","sound_effect","3d","segment"],"type":"string"},{"type":"null"}],"description":"Only models of this job type.","title":"Type"},"description":"Only models of this job type."},{"name":"operation","in":"query","required":false,"schema":{"anyOf":[{"enum":["text-to-image","edit","text-to-video","image-to-video","reference-to-video","tts","music","sound-effects","text-to-3d","image-to-3d","image-to-3d-body","align-3d","segment-image","segment-image-data","segment-video","segment-video-data","segment-everything","image-embedding"],"type":"string"},{"type":"null"}],"description":"Only models that run this operation.","title":"Operation"},"description":"Only models that run this operation."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Words in the id, name or description.","title":"Q"},"description":"Words in the id, name or description."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/models/{model_id}":{"get":{"tags":["Models"],"summary":"Get a model","description":"One model with the JSON Schema of its `input` per operation, defaults, an example and price detail.","operationId":"getModel","security":[{"bearerAuth":[]}],"parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"X-Voyager-Cast-Version","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1: each operation's input_schema takes Cast v1 (saved cards, selections, inline packages) and states cast_capabilities.","title":"X-Voyager-Cast-Version"},"description":"1: each operation's input_schema takes Cast v1 (saved cards, selections, inline packages) and states cast_capabilities."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelDetail"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/jobs":{"post":{"tags":["Jobs"],"summary":"Create a job","description":"Start a generation. 201 with the queued job, or 200 with the finished job when it ends within\n``Prefer: wait=N`` (``Preference-Applied`` echoes it).","operationId":"createJob","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A new UUID per logical request; resend it on retries. Same key + same body returns the original job at any age; a different body is 409.","title":"Idempotency-Key"},"description":"A new UUID per logical request; resend it on retries. Same key + same body returns the original job at any age; a different body is 409."},{"name":"prefer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"wait=N (≤ 60): return the finished job if it ends.","title":"Prefer"},"description":"wait=N (≤ 60): return the finished job if it ends."},{"name":"X-Voyager-Cast-Version","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1: input.cast takes saved cards with selections and inline packages, input.cast_policy and input.cast_plan, and answers carry cast_usage. Omit for today's string Cast.","title":"X-Voyager-Cast-Version"},"description":"1: input.cast takes saved cards with selections and inline packages, input.cast_policy and input.cast_plan, and answers carry cast_usage. Omit for today's string Cast."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRequest"}}}},"responses":{"201":{"description":"Accepted; poll GET /v1/jobs/{id} or wait for the webhook.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Preference-Applied":{"$ref":"#/components/headers/Preference-Applied"}}},"200":{"description":"Finished within Prefer: wait, or an idempotent replay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Preference-Applied":{"$ref":"#/components/headers/Preference-Applied"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Billing wall: a paid plan or more credits is needed (details.upgrade_url).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"Not allowed for this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"The request is well formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"get":{"tags":["Jobs"],"summary":"List jobs","description":"Your jobs in this workspace, newest first. Send the same filters with each page's cursor.","operationId":"listJobs","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"enum":["image","video","speech","music","sound_effect","3d","segment"],"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["queued","running","succeeded","failed","canceled"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Only jobs created after this instant.","title":"Created After"},"description":"Only jobs created after this instant."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/estimate":{"post":{"tags":["Jobs"],"summary":"Estimate a job","description":"What a job with this body would cost. Reserves nothing; null when unknown; not a price cap (the charge is the\njob's real cost). ``can_run`` is false when the plan, model access or balance refuses it, or it is unknown.\n\nAn https URL in ``input`` is priced as it is (checked, never downloaded or stored). One exception: a source\nrecording for a speech, voice or audio model, whose price depends on its length, is imported into your workspace\nto measure it (a reference file that expires after 7 days, like any imported reference); send a file_ id from\nPOST /v1/files to avoid the import.","operationId":"estimateJob","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Accepted and validated; an estimate starts nothing.","title":"Idempotency-Key"},"description":"Accepted and validated; an estimate starts nothing."},{"name":"X-Voyager-Cast-Version","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1: input.cast takes saved cards with selections and inline packages, input.cast_policy and input.cast_plan, and answers carry cast_usage. Omit for today's string Cast.","title":"X-Voyager-Cast-Version"},"description":"1: input.cast takes saved cards with selections and inline packages, input.cast_policy and input.cast_plan, and answers carry cast_usage. Omit for today's string Cast."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Estimate"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Billing wall: a paid plan or more credits is needed (details.upgrade_url).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"The request is well formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/jobs/{job_id}":{"get":{"tags":["Jobs"],"summary":"Get a job","description":"The job with fresh one-hour output links. While it is active, ``Retry-After`` says when to poll again.","operationId":"getJob","security":[{"bearerAuth":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"description":"Long-poll up to N seconds.","default":0,"title":"Wait"},"description":"Long-poll up to N seconds."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/jobs/{job_id}/cancel":{"post":{"tags":["Jobs"],"summary":"Cancel a job","description":"Ask to stop a job. A queued job that has not reached its provider is canceled at once and costs nothing (any\ntype). A running image, video or speech job is canceled best effort (work done may still be charged); other\nrunning jobs are 409 ``cancel_unsupported``. Returns the job as it now stands: a job that finished first stays\nfinished.","operationId":"cancelJob","security":[{"bearerAuth":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Accepted and validated; a cancel is idempotent itself.","title":"Idempotency-Key"},"description":"Accepted and validated; a cancel is idempotent itself."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/files":{"post":{"tags":["Files"],"summary":"Upload or import a file","description":"An upload (``status: pending`` with ``upload_url``: PUT the bytes with ``headers``, then\n``POST /v1/files/{id}/complete``), or with ``url`` an import, ready at once. With ``Idempotency-Key``, a retry\nreturns the same file (an upload still pending gets a fresh ``upload_url``).","operationId":"createFile","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A new UUID per logical request; resend it on retries to get the same file, never a duplicate.","title":"Idempotency-Key"},"description":"A new UUID per logical request; resend it on retries to get the same file, never a duplicate."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileObject"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Billing wall: a paid plan or more credits is needed (details.upgrade_url).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"The request is well formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/files/{file_id}/complete":{"post":{"tags":["Files"],"summary":"Complete an upload","description":"Check the uploaded bytes and make the file usable: ``ready``, or ``failed`` with ``error`` (wrong type, size\nother than declared, over the plan's limit). Idempotent; 409 ``upload_incomplete`` before the PUT, 409\n``idempotency_in_flight`` while the same key's completion is still running.","operationId":"completeFile","security":[{"bearerAuth":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A new UUID per logical request; resend it on retries to get the same file, never a duplicate.","title":"Idempotency-Key"},"description":"A new UUID per logical request; resend it on retries to get the same file, never a duplicate."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileObject"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/files/{file_id}":{"get":{"tags":["Files"],"summary":"Get a file","description":"A file with a fresh one-hour ``url`` (ready), or its upload state (pending, failed).","operationId":"getFile","security":[{"bearerAuth":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileObject"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"delete":{"tags":["Files"],"summary":"Delete a file","description":"Delete a file now. A file a running job still uses, or one saved in a Cast card, is 409 ``asset_in_use``.","operationId":"deleteFile","security":[{"bearerAuth":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"204":{"description":"Successful Response","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/files/{file_id}/content":{"get":{"tags":["Files"],"summary":"Download a file","description":"The signed link from a job or file object (``exp``/``sig``, one hour). Revalidated on every request.","operationId":"getFileContent","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"The bytes (single-range requests answer 206).","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}},"audio/*":{"schema":{"type":"string","format":"binary"}},"model/gltf-binary":{"schema":{"type":"string","format":"binary"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found, expired or revoked.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"206":{"description":"The requested byte range (a single Range request).","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}},"audio/*":{"schema":{"type":"string","format":"binary"}},"model/gltf-binary":{"schema":{"type":"string","format":"binary"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"head":{"tags":["Files"],"summary":"Check a file download","description":"The signed link from a job or file object (``exp``/``sig``, one hour). Revalidated on every request.","operationId":"headFileContent","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"The bytes (single-range requests answer 206).","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}},"audio/*":{"schema":{"type":"string","format":"binary"}},"model/gltf-binary":{"schema":{"type":"string","format":"binary"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found, expired or revoked.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"206":{"description":"The requested byte range (a single Range request).","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}},"audio/*":{"schema":{"type":"string","format":"binary"}},"model/gltf-binary":{"schema":{"type":"string","format":"binary"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/cast":{"get":{"tags":["Cast"],"summary":"List Cast","description":"This workspace's Cast: characters, locations and props with their reference images, newest change first.","operationId":"listCast","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CastList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"post":{"tags":["Cast"],"summary":"Create a Cast card","description":"A new card from images you own. Each reference is copied to a permanent Cast file. Send an\n`Idempotency-Key` to retry safely: the same key and body return the card made the first time.","operationId":"createCast","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Any unique string up to 200 characters (a UUID is fine). Same key and body: the original answer.","title":"Idempotency-Key"},"description":"Any unique string up to 200 characters (a UUID is fine). Same key and body: the original answer."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CastCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cast"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"The request is well formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/cast/{cast_id}":{"get":{"tags":["Cast"],"summary":"Get a Cast card","description":"One card by id (cst_…) or slug, with fresh links to its references.","operationId":"getCast","security":[{"bearerAuth":[]}],"parameters":[{"name":"cast_id","in":"path","required":true,"schema":{"type":"string","title":"Cast Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cast"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"patch":{"tags":["Cast"],"summary":"Update a Cast card","description":"Change the fields you send; `references`, when sent, replaces them all. Needs `expected_version`.","operationId":"updateCast","security":[{"bearerAuth":[]}],"parameters":[{"name":"cast_id","in":"path","required":true,"schema":{"type":"string","title":"Cast Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CastUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cast"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"The request is well formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"delete":{"tags":["Cast"],"summary":"Delete a Cast card","description":"Delete the card and the reference files no other card uses. Jobs already started keep theirs.","operationId":"deleteCast","security":[{"bearerAuth":[]}],"parameters":[{"name":"cast_id","in":"path","required":true,"schema":{"type":"string","title":"Cast Id"}},{"name":"expected_version","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Refuse (409) if the card changed since.","title":"Expected Version"},"description":"Refuse (409) if the card changed since."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CastDeleted"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/cast/{cast_id}/references":{"post":{"tags":["Cast"],"summary":"Add a Cast reference","description":"Add an image you own to the card (at most 8 references). An `Idempotency-Key` makes a retry safe.","operationId":"addCastReference","security":[{"bearerAuth":[]}],"parameters":[{"name":"cast_id","in":"path","required":true,"schema":{"type":"string","title":"Cast Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Any unique string up to 200 characters (a UUID is fine). Same key and body: the original answer.","title":"Idempotency-Key"},"description":"Any unique string up to 200 characters (a UUID is fine). Same key and body: the original answer."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferenceAdd"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cast"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"422":{"description":"The request is well formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/cast/{cast_id}/references/{file_id}":{"delete":{"tags":["Cast"],"summary":"Remove a Cast reference","description":"Remove one reference; its file is deleted when no other card uses it.","operationId":"removeCastReference","security":[{"bearerAuth":[]}],"parameters":[{"name":"cast_id","in":"path","required":true,"schema":{"type":"string","title":"Cast Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"expected_version","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"The card's current version.","title":"Expected Version"},"description":"The card's current version."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cast"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"Not found in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"Conflict with the resource's current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/voices":{"get":{"tags":["Voices"],"summary":"List voices","description":"Voices for speech jobs. A voice renders only on its own engine's models (`compatible_models`).","operationId":"listVoices","security":[{"bearerAuth":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"enum":["premade","mine"],"type":"string","description":"premade: the managed catalog; mine: your voice clones in this workspace.","default":"premade","title":"Source"},"description":"premade: the managed catalog; mine: your voice clones in this workspace."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Search premade voices.","title":"Q"},"description":"Search premade voices."},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language"}},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Gender"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"enum":["elevenlabs","fishaudio","inworld"],"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"Not allowed for this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/account":{"get":{"tags":["Account"],"summary":"Get account","description":"The key's workspace, its plan, available credits and this key's limits. Works on every plan.","operationId":"getAccount","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited. Retry after Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"Temporarily unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}},"security":[{"bearerAuth":[]}]}},"/machines/presets":{"get":{"tags":["machines"],"summary":"List Presets","description":"Ready-made machine setups. `render` (the default) runs Vork and Blender; `compute` cannot run Vork.","operationId":"listCloudMachinePresets","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachinePresetList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}},"security":[{"API Key":[]}]}},"/machines/gpus":{"get":{"tags":["machines"],"summary":"List Gpus","description":"Every GPU you can lease, with its price.","operationId":"listCloudMachineGpus","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineGpuList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}},"security":[{"API Key":[]}]}},"/machines/images":{"get":{"tags":["machines"],"summary":"List Images","description":"The machine images (operating system and software) you can start a machine with.","operationId":"listCloudMachineImages","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineImageList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}},"security":[{"API Key":[]}]}},"/machines/jobs/{job}":{"get":{"tags":["machines"],"summary":"Get Job","operationId":"getCloudMachineJob","security":[{"API Key":[]}],"parameters":[{"name":"job","in":"path","required":true,"schema":{"type":"string","title":"Job"}},{"name":"wait","in":"query","required":false,"schema":{"type":"number","maximum":60.0,"minimum":0,"description":"Wait up to N seconds for the job to end.","default":0,"title":"Wait"},"description":"Wait up to N seconds for the job to end."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineJob"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/jobs/{job}/logs":{"get":{"tags":["machines"],"summary":"Get Job Logs","operationId":"getCloudMachineJobLogs","security":[{"API Key":[]}],"parameters":[{"name":"job","in":"path","required":true,"schema":{"type":"string","title":"Job"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"description":"`next_cursor` from the last chunk.","title":"Cursor"},"description":"`next_cursor` from the last chunk."},{"name":"follow","in":"query","required":false,"schema":{"type":"boolean","description":"Stream output as plain text until the job ends.","default":false,"title":"Follow"},"description":"Stream output as plain text until the job ends."}],"responses":{"200":{"description":"A chunk of output, or with `follow=true` a `text/plain` stream until the job ends.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineLogChunk"}},"text/plain":{"schema":{"type":"string"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/jobs/{job}/cancel":{"post":{"tags":["machines"],"summary":"Cancel Job","description":"Stop a running job (SIGTERM, then SIGKILL after 10 s).","operationId":"cancelCloudMachineJob","security":[{"API Key":[]}],"parameters":[{"name":"job","in":"path","required":true,"schema":{"type":"string","title":"Job"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineJob"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines":{"post":{"tags":["machines"],"summary":"Create Machine","description":"Lease a GPU machine. It starts in the background (`status: starting`); wait with `GET /machines/{id}?wait=60`.\nIt bills per second until it is paused or released; it pauses itself after `idle_timeout` idle seconds.","operationId":"createCloudMachine","security":[{"API Key":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Repeat a request safely: the same key and body return the original result.","title":"Idempotency-Key"},"description":"Repeat a request safely: the same key and body return the original result."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"get":{"tags":["machines"],"summary":"List Machines","description":"Your workspace's machines, newest first.","operationId":"listCloudMachines","security":[{"API Key":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":63},{"type":"null"}],"title":"Name"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Comma-separated: starting, ready, paused, released, failed.","title":"Status"},"description":"Comma-separated: starting, ready, paused, released, failed."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineList"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}":{"get":{"tags":["machines"],"summary":"Get Machine","operationId":"getCloudMachine","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}},{"name":"wait","in":"query","required":false,"schema":{"type":"number","maximum":60.0,"minimum":0,"description":"Wait up to N seconds for it to become ready.","default":0,"title":"Wait"},"description":"Wait up to N seconds for it to become ready."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}},"delete":{"tags":["machines"],"summary":"Release Machine","description":"Release the machine: billing stops and its disk is deleted. Returns the final machine with its cost.","operationId":"releaseCloudMachine","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Repeat a request safely: the same key and body return the original result.","title":"Idempotency-Key"},"description":"Repeat a request safely: the same key and body return the original result."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/pause":{"post":{"tags":["machines"],"summary":"Pause Machine","description":"Stop billing and keep the disk. Running a command or moving files resumes it.","operationId":"pauseCloudMachine","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Repeat a request safely: the same key and body return the original result.","title":"Idempotency-Key"},"description":"Repeat a request safely: the same key and body return the original result."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/resume":{"post":{"tags":["machines"],"summary":"Resume Machine","operationId":"resumeCloudMachine","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Repeat a request safely: the same key and body return the original result.","title":"Idempotency-Key"},"description":"Repeat a request safely: the same key and body return the original result."}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Machine"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/run":{"post":{"tags":["machines"],"summary":"Run Command","description":"Run a command. With `wait: true` it answers with the output once the command ends (up to about 60 s; after\nthat it answers 202 with the running job). A paused machine is resumed first (`resumed: true`).","operationId":"runCloudMachineCommand","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Repeat a request safely: the same key and body return the original result.","title":"Idempotency-Key"},"description":"Repeat a request safely: the same key and body return the original result."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineRun"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineRunResult"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"202":{"description":"The job, still running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineJob"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/files/upload":{"post":{"tags":["machines"],"summary":"Upload Files","description":"Put files on the machine. Send files up to 4 MiB inline (`content_base64`); larger ones come back with an\n`upload_url` to PUT and an `upload_id` to commit (`POST …/files/upload/complete`). Unchanged files are skipped.","operationId":"uploadCloudMachineFiles","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineUpload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineUploadResult"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/files/upload/complete":{"post":{"tags":["machines"],"summary":"Complete Upload","description":"Commit files uploaded to their `upload_url`s onto the machine.","operationId":"completeCloudMachineUpload","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineCompleteUpload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineCompleteResult"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/files/download":{"post":{"tags":["machines"],"summary":"Download Files","description":"Get files or whole folders from the machine: small files inline (base64), the rest as download links.","operationId":"downloadCloudMachineFiles","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineDownload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineDownloadResult"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/ports":{"post":{"tags":["machines"],"summary":"Open Port","description":"Serve a port on the machine at a public `https://<id>.run.voyager.computer/` link (HTTP and WebSocket). Anyone\nwith the link can reach it while the machine runs.","operationId":"openCloudMachinePort","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachinePortOpen"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachinePortLink"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}},"/machines/{machine}/snapshots":{"post":{"tags":["machines"],"summary":"Snapshot Machine","description":"Save the machine's disk. Start new machines from it with `from_snapshot`.","operationId":"snapshotCloudMachine","security":[{"API Key":[]}],"parameters":[{"name":"machine","in":"path","required":true,"schema":{"type":"string","title":"Machine"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Repeat a request safely: the same key and body return the original result.","title":"Idempotency-Key"},"description":"Repeat a request safely: the same key and body return the original result."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MachineSnapshotCreate"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineSnapshot"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"400":{"description":"The request is invalid (`INVALID_REQUEST`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"401":{"description":"Missing or invalid credential.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"402":{"description":"Not enough credits (`INSUFFICIENT_CREDITS`); `details.upgrade_url` links to billing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"403":{"description":"This workspace needs a paid Voyager plan with a completed payment (`PLAN_REQUIRED`, `VERIFICATION_REQUIRED`; `details.upgrade_url`), or the key lacks a scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"404":{"description":"No such machine, job or path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"409":{"description":"The machine is in the wrong state for this (e.g. `MACHINE_NOT_READY`, `MACHINE_RELEASED`), or the Idempotency-Key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}},"429":{"description":"Rate limited; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"503":{"description":"No capacity or a temporary outage; retry after `Retry-After` seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}}}}}}},"components":{"schemas":{"Account":{"properties":{"object":{"type":"string","const":"account","title":"Object","default":"account","description":"Always \"account\"."},"workspace":{"$ref":"#/components/schemas/Workspace","description":"The workspace this key belongs to."},"api_key":{"$ref":"#/components/schemas/ApiKeyInfo","description":"The key making this request."},"plan":{"$ref":"#/components/schemas/Plan","description":"The workspace's Voyager plan."},"credits":{"$ref":"#/components/schemas/Credits","description":"The workspace's credit balance."},"limits":{"$ref":"#/components/schemas/Limits","description":"Rate, concurrency and queue limits that apply to this key."}},"type":"object","required":["workspace","api_key","plan","credits","limits"],"title":"Account"},"ApiKeyInfo":{"properties":{"id":{"type":"string","title":"Id","description":"The key's id."},"name":{"type":"string","title":"Name","description":"The key's name, as set when it was created."}},"type":"object","required":["id","name"],"title":"ApiKeyInfo"},"Cast":{"properties":{"object":{"type":"string","const":"cast","title":"Object","default":"cast","description":"Always \"cast\"."},"id":{"type":"string","title":"Id","description":"cst_… Pass in input.cast (up to 4) on a job."},"slug":{"type":"string","title":"Slug","description":"A short handle for this Cast card, unique in the workspace."},"name":{"type":"string","title":"Name","description":"The card's display name."},"kind":{"type":"string","enum":["character","location","prop"],"title":"Kind","description":"What this Cast card is: a character, a location or a prop."},"style":{"type":"string","enum":["photoreal","stylized"],"title":"Style","description":"How references render: photoreal or stylized."},"description":{"type":"string","title":"Description","description":"What the card shows; prefixed to the prompt of jobs that feature it."},"version":{"type":"integer","title":"Version","description":"Increases on every change; pass it as expected_version to change it safely."},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id","description":"A voice for this character, when set."},"references":{"items":{"$ref":"#/components/schemas/CastReference"},"type":"array","title":"References","description":"The card's reference images, in order."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When it was created (ISO 8601)."},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"When it last changed (ISO 8601)."}},"type":"object","required":["id","slug","name","kind","style","description","version","voice_id","references"],"title":"Cast"},"CastCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name","description":"The card's display name."},"kind":{"type":"string","enum":["character","location","prop"],"title":"Kind","description":"What this Cast card is: a character, a location or a prop."},"style":{"type":"string","enum":["photoreal","stylized"],"title":"Style","description":"How references render: photoreal or stylized."},"description":{"type":"string","maxLength":600,"title":"Description","description":"Fixed features that never change between shots.","default":""},"references":{"items":{"$ref":"#/components/schemas/ReferenceIn"},"type":"array","maxItems":8,"title":"References","description":"The card's reference images, in order."},"slug":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Slug","description":"Short handle; derived from the name if omitted."},"voice_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Voice Id","description":"A voice (vox_…) for this character."}},"type":"object","required":["name","kind","style"],"title":"CastCreate"},"CastDeleted":{"properties":{"object":{"type":"string","const":"cast","title":"Object","default":"cast","description":"Always \"cast\"."},"id":{"type":"string","title":"Id","description":"The deleted card's id."},"deleted":{"type":"boolean","const":true,"title":"Deleted","default":true,"description":"Always true."}},"type":"object","required":["id"],"title":"CastDeleted"},"CastList":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list","description":"Always \"list\"."},"data":{"items":{"$ref":"#/components/schemas/Cast"},"type":"array","title":"Data","description":"This page's items."},"has_more":{"type":"boolean","title":"Has More","description":"Whether another page follows."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Pass as `cursor` to read the next page; null on the last page."}},"type":"object","required":["data","has_more","next_cursor"],"title":"CastList"},"CastReference":{"properties":{"file_id":{"type":"string","title":"File Id","description":"The reference image (a file_ id)."},"role":{"type":"string","enum":["hero","fullbody","angle","expression","outfit","plate","style"],"title":"Role","description":"What the image shows of the card: hero, fullbody, angle, expression, outfit, plate or style."},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note","description":"A short note about this reference."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Signed link to the image, valid about an hour."},"url_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Url Expires At","description":"When `url` stops working (ISO 8601); read the object again for a fresh link."}},"type":"object","required":["file_id","role","note","url"],"title":"CastReference"},"CastUpdate":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version","description":"The version you read; a stale one is 409 version_conflict."},"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name","description":"A new display name."},"kind":{"anyOf":[{"type":"string","enum":["character","location","prop"]},{"type":"null"}],"title":"Kind","description":"A new kind."},"style":{"anyOf":[{"type":"string","enum":["photoreal","stylized"]},{"type":"null"}],"title":"Style","description":"A new style."},"description":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Description","description":"A new description."},"references":{"anyOf":[{"items":{"$ref":"#/components/schemas/ReferenceIn"},"type":"array","maxItems":8},{"type":"null"}],"title":"References","description":"Replaces every reference when given."},"slug":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Slug","description":"A new slug."},"voice_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Voice Id","description":"Send null to clear."}},"type":"object","required":["expected_version"],"title":"CastUpdate"},"Concurrency":{"properties":{"scope":{"type":"string","const":"user","title":"Scope","description":"Counted per person across the app, the MCP and every one of their keys; not per workspace. Speech and 3D jobs are also bounded by a workspace-wide cap on those job types."},"parallel_generations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parallel Generations","description":"Generations running at once; more wait queued."},"workspace":{"$ref":"#/components/schemas/WorkspaceConcurrency","description":"Speech and 3D jobs also share a workspace-wide cap."}},"type":"object","required":["scope","parallel_generations","workspace"],"title":"Concurrency"},"Credits":{"properties":{"available":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Available","description":"The workspace's credit balance, as its Voyager dashboard shows it; null when it could not be read."},"unit":{"type":"string","const":"credits","title":"Unit","default":"credits","description":"Always \"credits\"."}},"type":"object","required":["available"],"title":"Credits"},"ErrorBody":{"properties":{"type":{"$ref":"#/components/schemas/ErrorType","description":"Stable category to branch on."},"code":{"type":"string","enum":["invalid_request","invalid_input","content_policy","upstream_unavailable","rate_limited","queue_full","model_unavailable","model_not_found","insufficient_credits","paid_plan_required","model_not_in_plan","model_access_required","outcome_unknown","expired","not_found","conflict","forbidden","internal_error","catalog_unavailable","billing_unavailable","no_voyager_seat","credits_reloading","cast_not_supported","voice_cloning_unavailable","too_many_references","payload_too_large","upload_too_large","intake_full","invalid_url","fetch_failed","unsupported_file","invalid_api_key","idempotency_conflict","idempotency_in_flight","invalid_idempotency_key","invalid_cursor","invalid_webhook_url","method_not_allowed","account_unavailable","plan_required_for_faces","version_conflict","slug_taken","already_referenced","asset_in_use","upload_incomplete","cancel_unsupported","unsupported_model","invalid_job_id","voice_required","observation_timeout","reference_unavailable","queue_timeout","reference_missing"],"title":"Code","description":"Stable machine code; never renamed once published (x-voyager-errors lists each)."},"message":{"type":"string","title":"Message","description":"For developers. Not localized."},"doc_url":{"type":"string","title":"Doc Url","description":"https://docs.voyager.so/api/errors#<code>"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"Also in the X-Request-ID header; quote it to support."},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable","description":"Whether the same request can succeed later."},"retry_after_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retry After Ms","description":"How long to wait before retrying."},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"The request field at fault, as a path (e.g. input.resolution); set on invalid_input."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Code-specific detail, e.g. upgrade_url on a billing wall."}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorBody"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ErrorBody","description":"What went wrong."}},"type":"object","required":["error"],"title":"ErrorResponse","description":"Every non-2xx answer."},"ErrorType":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on."},"Estimate":{"properties":{"object":{"type":"string","const":"estimate","title":"Object","default":"estimate","description":"Always \"estimate\"."},"model":{"type":"string","title":"Model","description":"The model estimated."},"operation":{"type":"string","title":"Operation","description":"The operation estimated."},"estimated_charge":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Charge","description":"Expected credits for this request; null when unknown."},"required_hold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Required Hold","description":"Credits held when the job is accepted, at today's prices; null when unknown."},"available_credits":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Available Credits","description":"The workspace's credit balance, as its Voyager dashboard shows it; null when unknown."},"can_run":{"type":"boolean","title":"Can Run","description":"False when the plan, access or balance refuses it, or it is unknown."},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"Why not, as the error code a create would get: model_not_in_plan, model_access_required, insufficient_credits, credits_reloading (retry shortly), free_allowance_exhausted, free_window_limit, free_media_limit, paid_plan_required, no_voyager_seat, model_unavailable; estimate_unavailable when it could not be read."},"upgrade_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upgrade Url","description":"Where to upgrade the plan or add credits, when that is the reason."},"estimate_basis":{"anyOf":[{"type":"string","enum":["fallback","provisional"]},{"type":"null"}],"title":"Estimate Basis","description":"\"fallback\" when nothing prices this request and estimated_charge is its model's fallback rate; \"provisional\" when shared pricing rules forecast it without proving the bill (an unmeasured or assumed length, a sampled rate). Show either as an estimate; absent for an exact price. Neither ever refuses the job."},"estimate_source":{"anyOf":[{"type":"string","enum":["a","b","c","d","e"]},{"type":"null"}],"title":"Estimate Source","description":"With estimate_basis fallback, the rate's evidence: a its own settlements, b its provider's published price, c its own other prices scaled, d a peer model's, e its media type's default."},"cast_usage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Cast Usage","description":"With X-Voyager-Cast-Version: 1 and input.cast: what the Elements compile to. Pass its plan as input.cast_plan to create the job only if the Elements still compile to it."}},"type":"object","required":["model","operation","estimated_charge","required_hold","available_credits","can_run"],"title":"Estimate"},"FileCreate":{"title":"FileCreate","description":"Either an upload (PUT the bytes to upload_url, then complete) or an import from a URL.","oneOf":[{"title":"FileUpload","type":"object","properties":{"file_name":{"title":"File Name","type":"string","maxLength":200,"minLength":1},"content_type":{"title":"Content Type","description":"image/png, image/jpeg, video/mp4, audio/mpeg…","type":"string","maxLength":100},"size_bytes":{"title":"Size Bytes","description":"Exact size of the file you will PUT.","type":"integer","minimum":1.0}},"required":["file_name","content_type","size_bytes"],"additionalProperties":false},{"title":"FileImport","type":"object","properties":{"url":{"title":"Url","description":"Import a public https file instead.","type":"string","maxLength":4096},"file_name":{"title":"File Name","type":"string","maxLength":200,"minLength":1}},"required":["url"],"additionalProperties":false}]},"FileObject":{"properties":{"id":{"type":"string","title":"Id","description":"file_…; pass it in a job's input (image, images, video, audio…)."},"object":{"type":"string","const":"file","title":"Object","default":"file","description":"Always \"file\"."},"status":{"type":"string","enum":["pending","ready","failed"],"title":"Status","description":"pending until the upload completes, then ready (or failed)."},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"image, video, audio, model3d or other (ready files)."},"file_name":{"type":"string","title":"File Name","description":"The file's name."},"content_type":{"type":"string","title":"Content Type","description":"The file's media type, e.g. image/png."},"size_bytes":{"type":"integer","title":"Size Bytes","description":"Size in bytes."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Ready files: signed download link, valid one hour."},"url_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Url Expires At","description":"When `url` stops working (ISO 8601); read the object again for a fresh link."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When the file is deleted: references 7 days, outputs 30 days, Cast never; pending uploads 24 h."},"retention":{"anyOf":[{"type":"string","enum":["reference","output","cast","pending"]},{"type":"null"}],"title":"Retention","description":"How long the file is kept."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When it was created (ISO 8601)."},"error":{"anyOf":[{"$ref":"#/components/schemas/JobError"},{"type":"null"}],"description":"Why the upload failed, when status is failed."},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width","description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height","description":"Height in pixels, when known."},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Length in seconds, when known."},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Url","description":"PUT the bytes here with `headers`, then complete."},"method":{"anyOf":[{"type":"string","const":"PUT"},{"type":"null"}],"title":"Method","description":"The HTTP method to upload the bytes with, while pending."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers","description":"Headers to send with the upload, while pending."},"upload_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Upload Expires At","description":"When upload_url stops accepting the bytes (ISO 8601)."}},"type":"object","required":["id","status","file_name","content_type","size_bytes","expires_at"],"title":"FileObject"},"Job":{"properties":{"id":{"type":"string","title":"Id","description":"job_…"},"object":{"type":"string","const":"job","title":"Object","default":"job","description":"Always \"job\"."},"type":{"type":"string","title":"Type","description":"image, video, speech, music, sound_effect or 3d."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"The model that ran (or will run) the job."},"operation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation","description":"e.g. text-to-image, edit, image-to-video, tts."},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled"],"title":"Status","description":"queued, running, succeeded, failed or canceled."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"The job's input, as sent."},"outputs":{"items":{"$ref":"#/components/schemas/JobOutput"},"type":"array","title":"Outputs","description":"The files the job made, once it succeeded."},"credits":{"$ref":"#/components/schemas/JobCredits","description":"What the job is expected to cost and what it was charged."},"error":{"anyOf":[{"$ref":"#/components/schemas/JobError"},{"type":"null"}],"description":"Why the job failed or was canceled."},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata","description":"The metadata sent with the job, echoed as is."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"When it was created (ISO 8601)."},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When the job started running (ISO 8601); null while queued."},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When the job reached a terminal status (ISO 8601); null until then."},"poll_after_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Poll After Ms","description":"While active: when to poll again."},"links":{"$ref":"#/components/schemas/JobLinks","description":"Links to read and cancel the job."},"cast_usage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Cast Usage","description":"Jobs created with X-Voyager-Cast-Version: 1 and input.cast: what the Elements compiled to (strategy, card versions, sent and omitted photos, warnings). Absent on every other job."}},"type":"object","required":["id","type","model","operation","status","input","outputs","credits","error","metadata","created_at","started_at","completed_at","poll_after_ms","links"],"title":"Job"},"JobCredits":{"properties":{"estimated":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated","description":"Estimated charge when the job is accepted. Not a cap."},"held":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Held","description":"Credits held for this job now, where proven; null when unknown."},"charged":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Charged","description":"Final charge once settled; null until then (never a stand-in zero)."},"released":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Released","description":"Held credits returned, where proven; null when unknown."},"state":{"type":"string","enum":["pending","settled","unresolved"],"title":"State","description":"pending: the final charge may still arrive; settled: final; unresolved: this API will not state it (see your usage), or the job's outcome could not be proven."},"charge_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charge Ref","description":"The charge reference in your usage records; quote it to support."}},"type":"object","required":["estimated","held","charged","released","state","charge_ref"],"title":"JobCredits"},"JobError":{"properties":{"code":{"type":"string","title":"Code","description":"A stable machine code (see x-voyager-errors)."},"message":{"type":"string","title":"Message","description":"For developers. Not localized."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Code-specific detail."}},"type":"object","required":["code","message"],"title":"JobError"},"JobLinks":{"properties":{"self":{"type":"string","title":"Self","description":"GET this job."},"cancel":{"type":"string","title":"Cancel","description":"POST here to cancel the job."}},"type":"object","required":["self","cancel"],"title":"JobLinks"},"JobList":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list","description":"Always \"list\"."},"data":{"items":{"$ref":"#/components/schemas/Job"},"type":"array","title":"Data","description":"This page's items."},"has_more":{"type":"boolean","title":"Has More","description":"Whether another page follows."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Pass as `cursor` to read the next page; null on the last page."}},"type":"object","required":["data","has_more","next_cursor"],"title":"JobList"},"JobOutput":{"properties":{"id":{"type":"string","title":"Id","description":"file_… id; GET /v1/files/{id} for a fresh link."},"object":{"type":"string","const":"file","title":"Object","default":"file","description":"Always \"file\"."},"type":{"type":"string","title":"Type","description":"image, video, audio, model3d or other."},"mime_type":{"type":"string","title":"Mime Type","description":"The file's media type, e.g. image/png or video/mp4."},"file_name":{"type":"string","title":"File Name","description":"The file's name."},"size_bytes":{"type":"integer","title":"Size Bytes","description":"Size in bytes."},"url":{"type":"string","title":"Url","description":"Signed download link, valid one hour."},"url_expires_at":{"type":"string","format":"date-time","title":"Url Expires At","description":"When `url` stops working (ISO 8601); read the object again for a fresh link."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When the file itself is deleted (outputs are kept 30 days)."},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width","description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height","description":"Height in pixels, when known."},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Length in seconds, when known."},"formats":{"anyOf":[{"items":{"$ref":"#/components/schemas/JobOutputFormat"},"type":"array"},{"type":"null"}],"title":"Formats","description":"3D jobs: every downloadable format."},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url","description":"3D jobs: a still preview."},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"What the file is beside the main output: mask, cutout, mask_video, data or preview (segmentation)."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Per-file facts: a mask's object_id, score and box (source pixels), a mask video's frames."}},"type":"object","required":["id","type","mime_type","file_name","size_bytes","url","url_expires_at","expires_at"],"title":"JobOutput"},"JobOutputFormat":{"properties":{"format":{"type":"string","title":"Format","description":"glb, fbx, usdz, obj or ply."},"id":{"type":"string","title":"Id","description":"The format's id."},"url":{"type":"string","title":"Url","description":"A link to the file in this format."},"url_expires_at":{"type":"string","format":"date-time","title":"Url Expires At","description":"When `url` stops working (ISO 8601); read the object again for a fresh link."}},"type":"object","required":["format","id","url","url_expires_at"],"title":"JobOutputFormat"},"JobRequest":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model","description":"A model id from GET /v1/models."},"operation":{"anyOf":[{"type":"string","enum":["text-to-image","edit","text-to-video","image-to-video","reference-to-video","tts","music","sound-effects","text-to-3d","image-to-3d","image-to-3d-body","align-3d","segment-image","segment-image-data","segment-video","segment-video-data","segment-everything","image-embedding"]},{"type":"null"}],"title":"Operation","description":"One of text-to-image, edit, text-to-video, image-to-video, reference-to-video, tts, music, sound-effects, text-to-3d, image-to-3d, image-to-3d-body, align-3d, segment-image, segment-image-data, segment-video, segment-video-data, segment-everything, image-embedding (GET /v1/models/{id} lists a model's). Required unless the model runs only one."},"input":{"$ref":"#/components/schemas/JobInput","description":"The model's canonical inputs: its input_schema on GET /v1/models/{id} (file_ ids or https URLs for media), plus optional cast (up to 4 cst_ ids) on image and video operations."},"webhook_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Webhook Url","description":"Public https URL that receives job.succeeded / job.failed / job.canceled (Standard Webhooks)."},"metadata":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Metadata","description":"Up to 16 string pairs echoed on the job and its webhooks (values ≤ 500 chars)."}},"additionalProperties":false,"type":"object","required":["model"],"title":"JobRequest"},"JsonValue":{},"Limits":{"properties":{"requests_per_minute":{"$ref":"#/components/schemas/RequestsPerMinute","description":"Requests this key may make per minute."},"concurrency":{"$ref":"#/components/schemas/Concurrency","description":"Jobs that may run at once."},"queue":{"$ref":"#/components/schemas/Queue","description":"Jobs that may wait at once, and for how long."}},"type":"object","required":["requests_per_minute","concurrency","queue"],"title":"Limits"},"Machine":{"properties":{"id":{"type":"string","title":"Id","description":"The machine id (`mch_…`). Every route also takes the machine's name."},"name":{"type":"string","title":"Name","description":"The name."},"status":{"type":"string","enum":["starting","ready","paused","released","failed"],"title":"Status","description":"The state (see the enum)."},"gpu":{"type":"string","title":"Gpu","description":"The GPU model, e.g. `RTX-PRO-6000`."},"image":{"type":"string","title":"Image","description":"The machine image (`GET /v1/machines/images`)."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"The preset it matches (`render`, `render-lite`, `compute`), if any."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"When it was created (ISO 8601)."},"ready_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ready At","description":"When it became ready."},"idle_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Idle Timeout","description":"Seconds without a command or file transfer before it pauses."},"cost":{"$ref":"#/components/schemas/MachineCost","description":"What it has cost so far."},"error":{"anyOf":[{"$ref":"#/components/schemas/MachineFailure"},{"type":"null"}],"description":"Why it failed, when it failed."},"next":{"type":"string","title":"Next","description":"What to do next, for agents."}},"type":"object","required":["id","name","status","gpu","image","preset","created_at","ready_at","idle_timeout","cost","next"],"title":"Machine"},"MachineCompleteFile":{"properties":{"path":{"type":"string","maxLength":4096,"minLength":1,"title":"Path","description":"The file's path (relative to `root`)."},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Sha256","description":"The SHA-256 of the content, lowercase hex."},"upload_id":{"type":"string","maxLength":80,"minLength":1,"title":"Upload Id","description":"The upload id from POST …/files/upload."}},"additionalProperties":false,"type":"object","required":["path","sha256","upload_id"],"title":"MachineCompleteFile"},"MachineCompleteResult":{"properties":{"files":{"items":{"$ref":"#/components/schemas/MachineCompletedFile"},"type":"array","title":"Files","description":"The files."}},"type":"object","required":["files"],"title":"MachineCompleteResult"},"MachineCompleteUpload":{"properties":{"root":{"type":"string","maxLength":1024,"minLength":1,"title":"Root","default":"/project","description":"The folder relative paths are resolved in (default `/project`)."},"files":{"items":{"$ref":"#/components/schemas/MachineCompleteFile"},"type":"array","maxItems":2000,"minItems":1,"title":"Files","description":"The files."}},"additionalProperties":false,"type":"object","required":["files"],"title":"MachineCompleteUpload"},"MachineCompletedFile":{"properties":{"path":{"type":"string","title":"Path","description":"The file's path (relative to `root`)."},"status":{"type":"string","enum":["written","committing"],"title":"Status","description":"The state (see the enum)."}},"type":"object","required":["path","status"],"title":"MachineCompletedFile"},"MachineCost":{"properties":{"credits":{"type":"number","title":"Credits","description":"Credits spent so far."},"usd":{"type":"number","title":"Usd","description":"The same spend in US dollars at your workspace's credit price."}},"type":"object","required":["credits","usd"],"title":"MachineCost"},"MachineCreate":{"properties":{"preset":{"type":"string","title":"Preset","description":"`render` (default), `render-lite` or `compute`.","default":"render"},"name":{"anyOf":[{"type":"string","maxLength":63,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]{0,62}$"},{"type":"null"}],"title":"Name","description":"A name you can use in place of the id. Default: `<preset>-<random>`."},"gpu":{"anyOf":[{"type":"string","maxLength":32,"minLength":1},{"type":"null"}],"title":"Gpu","description":"Overrides the preset's GPU."},"image":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Image","description":"Overrides the preset's image."},"idle_timeout":{"type":"integer","maximum":604800.0,"minimum":30.0,"title":"Idle Timeout","description":"Seconds without a command or file transfer before the machine pauses itself (default 900).","default":900},"budget_usd":{"anyOf":[{"type":"number","maximum":10000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Budget Usd","description":"Stop the machine once it has spent this much."},"from_snapshot":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"From Snapshot","description":"Start from a snapshot (`snp_…`) instead of a fresh disk."}},"additionalProperties":false,"type":"object","title":"MachineCreate"},"MachineDownload":{"properties":{"root":{"type":"string","maxLength":1024,"minLength":1,"title":"Root","default":"/project","description":"The folder relative paths are resolved in (default `/project`)."},"paths":{"items":{"type":"string"},"type":"array","maxItems":2000,"minItems":1,"title":"Paths","description":"Files or folders."}},"additionalProperties":false,"type":"object","required":["paths"],"title":"MachineDownload"},"MachineDownloadResult":{"properties":{"files":{"items":{"$ref":"#/components/schemas/MachineDownloadedFile"},"type":"array","title":"Files","description":"The files."},"resumed":{"type":"boolean","title":"Resumed","default":false,"description":"True when the machine was paused and resumed for this call."}},"type":"object","required":["files"],"title":"MachineDownloadResult"},"MachineDownloadedFile":{"properties":{"path":{"type":"string","title":"Path","description":"Relative to `root`."},"size":{"type":"integer","title":"Size","description":"Size in bytes."},"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the content, lowercase hex."},"content_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Base64","description":"Small files come inline."},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url","description":"Larger files: GET this link (valid 2 hours)."}},"type":"object","required":["path","size","sha256"],"title":"MachineDownloadedFile"},"MachineFailure":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"A stable UPPER_SNAKE code."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"A human-readable explanation."}},"type":"object","title":"MachineFailure"},"MachineGpu":{"properties":{"gpu":{"type":"string","title":"Gpu","description":"The GPU model, e.g. `RTX-PRO-6000`."},"vram_gib":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vram Gib","description":"GPU memory in GiB."},"ray_tracing":{"type":"boolean","title":"Ray Tracing","description":"Hardware ray tracing (Vork needs it)."},"credits_per_minute":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Per Minute","description":"Price per minute in credits."},"usd_per_minute":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usd Per Minute","description":"Price per minute in US dollars at your workspace's credit price."},"default":{"type":"boolean","title":"Default","description":"True for the default."}},"type":"object","required":["gpu","vram_gib","ray_tracing","credits_per_minute","usd_per_minute","default"],"title":"MachineGpu"},"MachineGpuList":{"properties":{"gpus":{"items":{"$ref":"#/components/schemas/MachineGpu"},"type":"array","title":"Gpus","description":"The GPUs."}},"type":"object","required":["gpus"],"title":"MachineGpuList"},"MachineImage":{"properties":{"id":{"type":"string","title":"Id","description":"The id."},"name":{"type":"string","title":"Name","description":"The name."},"description":{"type":"string","title":"Description","description":"What it is."},"default":{"type":"boolean","title":"Default","description":"True for the default."},"includes":{"items":{"type":"string"},"type":"array","title":"Includes","description":"The main software it includes."}},"type":"object","required":["id","name","description","default","includes"],"title":"MachineImage"},"MachineImageList":{"properties":{"images":{"items":{"$ref":"#/components/schemas/MachineImage"},"type":"array","title":"Images","description":"The images."}},"type":"object","required":["images"],"title":"MachineImageList"},"MachineJob":{"properties":{"id":{"type":"string","title":"Id","description":"The job id (`mjb_…`)."},"machine_id":{"type":"string","title":"Machine Id","description":"The machine id (`mch_…`)."},"status":{"type":"string","enum":["running","succeeded","failed","canceled"],"title":"Status","description":"The state (see the enum)."},"exit_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exit Code","description":"The command's exit code, once it has ended."},"output_tail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Tail","description":"The last few KB of output (stdout and stderr together)."},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At","description":"When the job started running (ISO 8601); null while queued."},"ended_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ended At","description":"When it ended."},"resumed":{"type":"boolean","title":"Resumed","description":"True when the machine was paused and resumed for this run.","default":false},"next":{"type":"string","title":"Next","description":"What to do next, for agents."}},"type":"object","required":["id","machine_id","status","exit_code","output_tail","started_at","ended_at","next"],"title":"MachineJob"},"MachineList":{"properties":{"machines":{"items":{"$ref":"#/components/schemas/Machine"},"type":"array","title":"Machines","description":"The machines."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Pass as `cursor` for the next page; null on the last page."}},"type":"object","required":["machines","next_cursor"],"title":"MachineList"},"MachineLogChunk":{"properties":{"text":{"type":"string","title":"Text","description":"Output text."},"next_cursor":{"type":"string","title":"Next Cursor","description":"Pass as `cursor` to read the next page; null on the last page."},"eof":{"type":"boolean","title":"Eof","description":"True once the job has ended and every byte was returned."}},"type":"object","required":["text","next_cursor","eof"],"title":"MachineLogChunk"},"MachinePortLink":{"properties":{"port":{"type":"integer","title":"Port","description":"The port on the machine."},"url":{"type":"string","title":"Url","description":"`https://<id>.run.voyager.computer/`: anyone with the link can reach the port."},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"When the link expires."}},"type":"object","required":["port","url","expires_at"],"title":"MachinePortLink"},"MachinePortOpen":{"properties":{"port":{"type":"integer","maximum":65535.0,"minimum":1.0,"title":"Port","description":"The port on the machine."}},"additionalProperties":false,"type":"object","required":["port"],"title":"MachinePortOpen"},"MachinePreset":{"properties":{"id":{"type":"string","title":"Id","description":"The id."},"name":{"type":"string","title":"Name","description":"The name."},"gpu":{"type":"string","title":"Gpu","description":"The GPU model, e.g. `RTX-PRO-6000`."},"vram_gib":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vram Gib","description":"GPU memory in GiB."},"ray_tracing":{"type":"boolean","title":"Ray Tracing","description":"Hardware ray tracing (Vork needs it)."},"image":{"type":"string","title":"Image","description":"The machine image (`GET /v1/machines/images`)."},"credits_per_minute":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Per Minute","description":"Price per minute in credits."},"usd_per_minute":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usd Per Minute","description":"Price per minute in US dollars at your workspace's credit price."},"for":{"type":"string","title":"For","description":"What the preset is for."},"default":{"type":"boolean","title":"Default","description":"True for the default."}},"type":"object","required":["id","name","gpu","vram_gib","ray_tracing","image","credits_per_minute","usd_per_minute","for","default"],"title":"MachinePreset"},"MachinePresetList":{"properties":{"presets":{"items":{"$ref":"#/components/schemas/MachinePreset"},"type":"array","title":"Presets","description":"The presets."}},"type":"object","required":["presets"],"title":"MachinePresetList"},"MachineRun":{"properties":{"command":{"anyOf":[{"type":"string","maxLength":65536,"minLength":1},{"type":"null"}],"title":"Command","description":"A shell command (run with `sh -c`)."},"argv":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":4096,"minItems":1},{"type":"null"}],"title":"Argv","description":"Or an argv, no shell."},"cwd":{"type":"string","maxLength":1024,"minLength":1,"title":"Cwd","default":"/project","description":"The working directory (default `/project`)."},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","description":"Extra environment variables."},"timeout":{"anyOf":[{"type":"integer","maximum":604800.0,"minimum":1.0},{"type":"null"}],"title":"Timeout","description":"Kill the command after N s."},"wait":{"type":"boolean","title":"Wait","description":"Wait up to about 60 s for it to finish and return its output; after that the running job.","default":false}},"additionalProperties":false,"type":"object","title":"MachineRun"},"MachineRunResult":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"The job id (`mjb_…`)."},"status":{"type":"string","enum":["succeeded","failed","canceled"],"title":"Status","description":"The state (see the enum)."},"exit_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exit Code","description":"The command's exit code, once it has ended."},"stdout":{"type":"string","title":"Stdout","description":"The command's output (stderr is merged into it, in order)."},"stderr":{"type":"string","title":"Stderr","description":"Always empty: stderr is merged into stdout."},"truncated":{"type":"boolean","title":"Truncated","description":"True when only the last 256 KB of output is returned."},"resumed":{"type":"boolean","title":"Resumed","description":"True when the machine was paused and resumed for this call."},"next":{"type":"string","title":"Next","description":"What to do next, for agents."}},"type":"object","required":["job_id","status","exit_code","stdout","stderr","truncated","resumed","next"],"title":"MachineRunResult"},"MachineSnapshot":{"properties":{"id":{"type":"string","title":"Id","description":"The snapshot id (`snp_…`): create a machine from it with `from_snapshot`."},"status":{"type":"string","title":"Status","description":"The state (see the enum)."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"When it was created (ISO 8601)."},"next":{"type":"string","title":"Next","description":"What to do next, for agents."}},"type":"object","required":["id","status","created_at","next"],"title":"MachineSnapshot"},"MachineSnapshotCreate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Name","description":"The name."}},"additionalProperties":false,"type":"object","title":"MachineSnapshotCreate"},"MachineUpload":{"properties":{"root":{"type":"string","maxLength":1024,"minLength":1,"title":"Root","default":"/project","description":"The folder relative paths are resolved in (default `/project`)."},"files":{"items":{"$ref":"#/components/schemas/MachineUploadFile"},"type":"array","maxItems":2000,"minItems":1,"title":"Files","description":"The files."}},"additionalProperties":false,"type":"object","required":["files"],"title":"MachineUpload"},"MachineUploadFile":{"properties":{"path":{"type":"string","maxLength":4096,"minLength":1,"title":"Path","description":"Relative to `root` (or absolute)."},"size":{"type":"integer","minimum":0.0,"title":"Size","description":"Size in bytes."},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Sha256","description":"The SHA-256 of the content, lowercase hex."},"content_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Base64","description":"The file itself, for files up to 4 MiB."}},"additionalProperties":false,"type":"object","required":["path","size","sha256"],"title":"MachineUploadFile"},"MachineUploadResult":{"properties":{"files":{"items":{"$ref":"#/components/schemas/MachineUploadedFile"},"type":"array","title":"Files","description":"The files."},"resumed":{"type":"boolean","title":"Resumed","default":false,"description":"True when the machine was paused and resumed for this call."},"next":{"type":"string","title":"Next","description":"What to do next, for agents."}},"type":"object","required":["files","next"],"title":"MachineUploadResult"},"MachineUploadedFile":{"properties":{"path":{"type":"string","title":"Path","description":"The file's path (relative to `root`)."},"status":{"type":"string","enum":["unchanged","written","upload"],"title":"Status","description":"The state (see the enum)."},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Url","description":"PUT the whole file here (status `upload`)."},"upload_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Id","description":"Then commit it with POST …/files/upload/complete."},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"When the link expires."}},"type":"object","required":["path","status"],"title":"MachineUploadedFile"},"ModelDetail":{"properties":{"object":{"type":"string","const":"model","title":"Object","default":"model","description":"Always \"model\"."},"id":{"type":"string","title":"Id","description":"Pass as `model` to POST /v1/jobs."},"name":{"type":"string","title":"Name","description":"The model's display name."},"type":{"type":"string","enum":["image","video","speech","music","sound_effect","3d","segment"],"title":"Type","description":"The kind of output it makes."},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"One line on what the model is."},"best_for":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best For","description":"What the model is good for."},"default":{"type":"boolean","title":"Default","description":"Whether this is Voyager's recommended model for its type (a suggestion only: `model` is always required)."},"status":{"type":"string","title":"Status","description":"active, preview or retired."},"operations":{"items":{"type":"string","enum":["text-to-image","edit","text-to-video","image-to-video","reference-to-video","tts","music","sound-effects","text-to-3d","image-to-3d","image-to-3d-body","align-3d","segment-image","segment-image-data","segment-video","segment-video-data","segment-everything","image-embedding"]},"type":"array","title":"Operations","description":"Operations this model runs, e.g. text-to-image, edit."},"available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Available","description":"Whether this workspace can run it now; null when not known (decided when the job is accepted)."},"unavailable_reason":{"anyOf":[{"type":"string","enum":["plan_locked","access_required","access_pending","access_denied","update_required","unavailable","retired"]},{"type":"null"}],"title":"Unavailable Reason","description":"Why not, when available is false."},"required_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Required Plan","description":"The lowest Voyager plan that runs it, when known."},"price":{"anyOf":[{"$ref":"#/components/schemas/PriceDetail"},{"type":"null"}],"description":"Expected charge; null when not known."},"operation_details":{"items":{"$ref":"#/components/schemas/ModelOperation"},"type":"array","title":"Operation Details","description":"Each operation's input schema, defaults and an example request."}},"type":"object","required":["id","name","type","default","status","operations","price","operation_details"],"title":"ModelDetail"},"ModelList":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list","description":"Always \"list\"."},"data":{"items":{"$ref":"#/components/schemas/ModelSummary"},"type":"array","title":"Data","description":"This page's items."},"has_more":{"type":"boolean","title":"Has More","description":"Whether another page follows."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Pass as `cursor` to read the next page; null on the last page."}},"type":"object","required":["data","has_more","next_cursor"],"title":"ModelList"},"ModelOperation":{"properties":{"operation":{"type":"string","enum":["text-to-image","edit","text-to-video","image-to-video","reference-to-video","tts","music","sound-effects","text-to-3d","image-to-3d","image-to-3d-body","align-3d","segment-image","segment-image-data","segment-video","segment-video-data","segment-everything","image-embedding"],"title":"Operation","description":"The operation."},"input_schema":{"additionalProperties":true,"type":"object","title":"Input Schema","description":"JSON Schema of `input` for this operation."},"defaults":{"additionalProperties":true,"type":"object","title":"Defaults","description":"Values used for inputs you leave out."},"example":{"additionalProperties":true,"type":"object","title":"Example","description":"A ready-to-send POST /v1/jobs body."},"cast_capabilities":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Cast Capabilities","description":"With X-Voyager-Cast-Version: 1: what Elements (input.cast) do on this operation — strategy, limits, prompt fallback and policies. Absent otherwise."}},"type":"object","required":["operation","input_schema","defaults","example"],"title":"ModelOperation"},"ModelSummary":{"properties":{"object":{"type":"string","const":"model","title":"Object","default":"model","description":"Always \"model\"."},"id":{"type":"string","title":"Id","description":"Pass as `model` to POST /v1/jobs."},"name":{"type":"string","title":"Name","description":"The model's display name."},"type":{"type":"string","enum":["image","video","speech","music","sound_effect","3d","segment"],"title":"Type","description":"The kind of output it makes."},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"One line on what the model is."},"best_for":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best For","description":"What the model is good for."},"default":{"type":"boolean","title":"Default","description":"Whether this is Voyager's recommended model for its type (a suggestion only: `model` is always required)."},"status":{"type":"string","title":"Status","description":"active, preview or retired."},"operations":{"items":{"type":"string","enum":["text-to-image","edit","text-to-video","image-to-video","reference-to-video","tts","music","sound-effects","text-to-3d","image-to-3d","image-to-3d-body","align-3d","segment-image","segment-image-data","segment-video","segment-video-data","segment-everything","image-embedding"]},"type":"array","title":"Operations","description":"Operations this model runs, e.g. text-to-image, edit."},"available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Available","description":"Whether this workspace can run it now; null when not known (decided when the job is accepted)."},"unavailable_reason":{"anyOf":[{"type":"string","enum":["plan_locked","access_required","access_pending","access_denied","update_required","unavailable","retired"]},{"type":"null"}],"title":"Unavailable Reason","description":"Why not, when available is false."},"required_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Required Plan","description":"The lowest Voyager plan that runs it, when known."},"price":{"anyOf":[{"$ref":"#/components/schemas/Price"},{"type":"null"}],"description":"Expected charge; null when not known. POST /v1/estimate is authoritative."}},"type":"object","required":["id","name","type","default","status","operations","price"],"title":"ModelSummary"},"Plan":{"properties":{"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"free, starter, creator, ultra or gigamax; null when the workspace has none."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The plan's name; null without one."},"paid":{"type":"boolean","title":"Paid","description":"Whether new generations and uploads are allowed through the API."}},"type":"object","required":["key","name","paid"],"title":"Plan"},"Price":{"properties":{"basis":{"type":"string","enum":["rate","example"],"title":"Basis","description":"rate: an exact per-unit charge; example: the charge at the settings in points[].when."},"unit":{"type":"string","title":"Unit","description":"What one charge buys: image, second, video, request, 1k_chars, minute, track…"},"estimated_charge":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Charge","description":"Expected credits per unit at the cheapest listed settings. An estimate, never a cap."},"estimated_charge_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Charge Max","description":"Expected credits per unit at the dearest."}},"type":"object","required":["basis","unit","estimated_charge"],"title":"Price"},"PriceDetail":{"properties":{"basis":{"type":"string","enum":["rate","example"],"title":"Basis","description":"rate: an exact per-unit charge; example: the charge at the settings in points[].when."},"unit":{"type":"string","title":"Unit","description":"What one charge buys: image, second, video, request, 1k_chars, minute, track…"},"estimated_charge":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Charge","description":"Expected credits per unit at the cheapest listed settings. An estimate, never a cap."},"estimated_charge_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Charge Max","description":"Expected credits per unit at the dearest."},"points":{"items":{"$ref":"#/components/schemas/PricePoint"},"type":"array","title":"Points","description":"Expected charges at specific settings (when, in canonical input names)."},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of","description":"Date the price was read."}},"type":"object","required":["basis","unit","estimated_charge"],"title":"PriceDetail"},"PricePoint":{"properties":{"credits":{"type":"number","title":"Credits","description":"Expected credits per unit at these settings."},"when":{"additionalProperties":true,"type":"object","title":"When","description":"The request settings this charge applies to."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"A short label for these settings."}},"type":"object","required":["credits","when"],"title":"PricePoint"},"Queue":{"properties":{"max_queued":{"type":"integer","title":"Max Queued","description":"Active jobs (queued plus running) one person may have at once, across workspaces; a create beyond it is 429 queue_full and nothing is accepted."},"max_queued_age_seconds":{"type":"integer","title":"Max Queued Age Seconds","description":"A job queued longer is canceled (error.code queue_timeout)."}},"type":"object","required":["max_queued","max_queued_age_seconds"],"title":"Queue"},"ReferenceAdd":{"properties":{"file_id":{"type":"string","maxLength":64,"minLength":1,"title":"File Id","description":"An image you own (file_…), from an upload or job."},"role":{"type":"string","enum":["hero","fullbody","angle","expression","outfit","plate","style"],"title":"Role","description":"What it shows: hero (the main look), fullbody, angle, expression, outfit…"},"note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Note","description":"A short note about this reference."},"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version","description":"The card's current version; a change made meanwhile answers 409."}},"type":"object","required":["file_id","role","expected_version"],"title":"ReferenceAdd"},"ReferenceIn":{"properties":{"file_id":{"type":"string","maxLength":64,"minLength":1,"title":"File Id","description":"An image you own (file_…), from an upload or job."},"role":{"type":"string","enum":["hero","fullbody","angle","expression","outfit","plate","style"],"title":"Role","description":"What it shows: hero (the main look), fullbody, angle, expression, outfit…"},"note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Note","description":"A short note about this reference."}},"type":"object","required":["file_id","role"],"title":"ReferenceIn"},"RequestsPerMinute":{"properties":{"write":{"type":"integer","title":"Write","description":"Per key: creates, estimates, uploads and other writes."},"read":{"type":"integer","title":"Read","description":"Per key: every GET."}},"type":"object","required":["write","read"],"title":"RequestsPerMinute"},"Voice":{"properties":{"object":{"type":"string","const":"voice","title":"Object","default":"voice","description":"Always \"voice\"."},"id":{"type":"string","title":"Id","description":"Pass as input.voice_id to a speech job."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The voice's display name."},"source":{"type":"string","enum":["premade","mine"],"title":"Source","description":"premade (the model's own) or mine (made in this workspace)."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"The engine it renders on."},"compatible_models":{"items":{"type":"string"},"type":"array","title":"Compatible Models","description":"Speech models that can use it."},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url","description":"A short sample of the voice, when there is one."},"labels":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Labels","description":"Descriptive labels (accent, age, gender...)."}},"type":"object","required":["id","name","source","provider","compatible_models"],"title":"Voice"},"VoiceList":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list","description":"Always \"list\"."},"data":{"items":{"$ref":"#/components/schemas/Voice"},"type":"array","title":"Data","description":"This page's items."},"has_more":{"type":"boolean","title":"Has More","description":"Whether another page follows."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Pass as `cursor` to read the next page; null on the last page."}},"type":"object","required":["data","has_more","next_cursor"],"title":"VoiceList"},"Workspace":{"properties":{"id":{"type":"string","title":"Id","description":"The workspace's id."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The workspace's name."}},"type":"object","required":["id","name"],"title":"Workspace"},"WorkspaceConcurrency":{"properties":{"speech":{"type":"integer","title":"Speech","description":"Speech jobs running at once across the workspace."},"3d":{"type":"integer","title":"3D","description":"3D jobs running at once across the workspace."}},"type":"object","required":["speech","3d"],"title":"WorkspaceConcurrency","description":"Workspace-wide caps on job types that count every member's jobs together, on top of the per-person limit."},"JobInput":{"title":"JobInput","type":"object","description":"Canonical inputs shared by every model. A model's input_schema (GET /v1/models/{id}) lists the ones it takes, their values for that model, and its own canonical extras.","properties":{"prompt":{"type":"string","description":"The instruction; `caption` only where it is a string."},"negative_prompt":{"type":"string","description":"Negative prompt."},"text":{"type":"string","description":"The words spoken."},"aspect_ratio":{"type":"string","description":"Unit: \"W:H\" or \"auto\"."},"resolution":{"type":"string","enum":["360p","480p","540p","720p","768p","1080p","1440p","2k","4k","0.5k","1k","1.5k"],"description":"Lowercase; others as-is."},"duration_seconds":{"type":"number","description":"The model's values or range; \"auto\" where the model takes it. Unit: seconds."},"count":{"type":"integer","description":"Count."},"seed":{"type":"integer","description":"Seed."},"generate_audio":{"type":"boolean","description":"Generate audio."},"voice_id":{"type":"string","description":"Voice id."},"image":{"type":"string","contentMediaType":"image/*","description":"A file_ id from POST /v1/files, or an https URL (imported into your workspace first)."},"images":{"type":"array","items":{"type":"string","contentMediaType":"image/*"},"description":"A file_ id from POST /v1/files, or an https URL (imported into your workspace first)."},"end_image":{"type":"string","contentMediaType":"image/*","description":"A file_ id from POST /v1/files, or an https URL (imported into your workspace first)."},"video":{"type":"string","contentMediaType":"video/*","description":"A file_ id from POST /v1/files, or an https URL (imported into your workspace first)."},"audio":{"type":"string","contentMediaType":"audio/*","description":"A file_ id from POST /v1/files, or an https URL (imported into your workspace first)."},"cast":{"description":"API only: cst_ ids, at most 4."}},"additionalProperties":true}},"securitySchemes":{"bearerAuth":{"type":"http","description":"A Voyager API key from https://voyager.so/dashboard/api.","scheme":"bearer","bearerFormat":"vy_live_…"},"API Key":{"type":"http","description":"API key from Settings > Developer > REST API","scheme":"bearer"}},"headers":{"X-Request-ID":{"description":"This request's id (also error.request_id).","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed per 60 seconds in this bucket (120 writes or 600 reads per minute per key).","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Seconds until the window resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"Preference-Applied":{"description":"Echoes the Prefer: wait=N the server honoured.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"\"true\" when this answer replays an earlier request under the same Idempotency-Key.","schema":{"type":"string","enum":["true"]}}}},"servers":[{"url":"https://api.voyager.so/v1","description":"Production"}],"webhooks":{"job.succeeded":{"post":{"operationId":"webhookJobSucceeded","summary":"job.succeeded","description":"A job finished with its outputs.\n\nSent to the job's `webhook_url` once, when the job reaches this terminal status (not when its charge settles: `data.credits.state` may still be `pending`). The event is thin: `GET /v1/jobs/{id}` is authoritative, and the output links in `data` expire one hour after the event is rendered. Signed per Standard Webhooks with the key's `whsec_` secret (shown once at key creation). Any 2xx response marks it delivered; anything else (or no answer) is retried with backoff for 24 hours, same `webhook-id`, fresh `webhook-timestamp`. Revoking the key stops its undelivered events.","parameters":[{"name":"webhook-id","in":"header","required":true,"description":"The event's id (`evt_…`, the body's `id`), stable across retries: deduplicate on it.","schema":{"type":"string"}},{"name":"webhook-timestamp","in":"header","required":true,"description":"Unix seconds when this attempt was sent. Reject old timestamps to stop replays.","schema":{"type":"integer"}},{"name":"webhook-signature","in":"header","required":true,"description":"`v1,<base64 HMAC-SHA256 of \"{webhook-id}.{webhook-timestamp}.{raw body}\">` keyed with the base64-decoded part of the key's `whsec_` secret. May hold several space-separated signatures; accept the request if any one matches.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","type","created_at","data"],"properties":{"id":{"type":"string","description":"evt_…","pattern":"^evt_"},"type":{"type":"string","const":"job.succeeded"},"created_at":{"type":"string","format":"date-time"},"data":{"$ref":"#/components/schemas/Job"}}}}}},"responses":{"2XX":{"description":"Delivered."},"default":{"description":"Not delivered: retried with backoff for 24 hours."}}}},"job.failed":{"post":{"operationId":"webhookJobFailed","summary":"job.failed","description":"A job failed (error.code says why; outcome_unknown means a new submission may charge again).\n\nSent to the job's `webhook_url` once, when the job reaches this terminal status (not when its charge settles: `data.credits.state` may still be `pending`). The event is thin: `GET /v1/jobs/{id}` is authoritative, and the output links in `data` expire one hour after the event is rendered. Signed per Standard Webhooks with the key's `whsec_` secret (shown once at key creation). Any 2xx response marks it delivered; anything else (or no answer) is retried with backoff for 24 hours, same `webhook-id`, fresh `webhook-timestamp`. Revoking the key stops its undelivered events.","parameters":[{"name":"webhook-id","in":"header","required":true,"description":"The event's id (`evt_…`, the body's `id`), stable across retries: deduplicate on it.","schema":{"type":"string"}},{"name":"webhook-timestamp","in":"header","required":true,"description":"Unix seconds when this attempt was sent. Reject old timestamps to stop replays.","schema":{"type":"integer"}},{"name":"webhook-signature","in":"header","required":true,"description":"`v1,<base64 HMAC-SHA256 of \"{webhook-id}.{webhook-timestamp}.{raw body}\">` keyed with the base64-decoded part of the key's `whsec_` secret. May hold several space-separated signatures; accept the request if any one matches.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","type","created_at","data"],"properties":{"id":{"type":"string","description":"evt_…","pattern":"^evt_"},"type":{"type":"string","const":"job.failed"},"created_at":{"type":"string","format":"date-time"},"data":{"$ref":"#/components/schemas/Job"}}}}}},"responses":{"2XX":{"description":"Delivered."},"default":{"description":"Not delivered: retried with backoff for 24 hours."}}}},"job.canceled":{"post":{"operationId":"webhookJobCanceled","summary":"job.canceled","description":"A job was canceled (error.code queue_timeout when it waited in the queue too long).\n\nSent to the job's `webhook_url` once, when the job reaches this terminal status (not when its charge settles: `data.credits.state` may still be `pending`). The event is thin: `GET /v1/jobs/{id}` is authoritative, and the output links in `data` expire one hour after the event is rendered. Signed per Standard Webhooks with the key's `whsec_` secret (shown once at key creation). Any 2xx response marks it delivered; anything else (or no answer) is retried with backoff for 24 hours, same `webhook-id`, fresh `webhook-timestamp`. Revoking the key stops its undelivered events.","parameters":[{"name":"webhook-id","in":"header","required":true,"description":"The event's id (`evt_…`, the body's `id`), stable across retries: deduplicate on it.","schema":{"type":"string"}},{"name":"webhook-timestamp","in":"header","required":true,"description":"Unix seconds when this attempt was sent. Reject old timestamps to stop replays.","schema":{"type":"integer"}},{"name":"webhook-signature","in":"header","required":true,"description":"`v1,<base64 HMAC-SHA256 of \"{webhook-id}.{webhook-timestamp}.{raw body}\">` keyed with the base64-decoded part of the key's `whsec_` secret. May hold several space-separated signatures; accept the request if any one matches.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","type","created_at","data"],"properties":{"id":{"type":"string","description":"evt_…","pattern":"^evt_"},"type":{"type":"string","const":"job.canceled"},"created_at":{"type":"string","format":"date-time"},"data":{"$ref":"#/components/schemas/Job"}}}}}},"responses":{"2XX":{"description":"Delivered."},"default":{"description":"Not delivered: retried with backoff for 24 hours."}}}}},"x-voyager-errors":[{"code":"invalid_request","status":400,"type":"invalid_request","retryable":false,"summary":"The request is not a valid model request.","description":"The request is not a valid model request.","group":"model"},{"code":"invalid_input","status":400,"type":"invalid_request","retryable":false,"summary":"The model can't take this input as sent.","description":"The model can't take this input as sent.","group":"model","details":{"field":{"description":"The input at fault, as a path (input.<name>); also in param."},"fields":{"description":"Unknown input names, when the input names fields the model does not take."}}},{"code":"content_policy","status":422,"type":"unprocessable","retryable":false,"summary":"This request was refused under the model's content policy.","description":"This request was refused under the model's content policy. Change the prompt or inputs; retrying it unchanged will not succeed.","group":"model","details":{"reason":{"description":"What the refusal was about.","enum":["copyright","likeness","minors","other","sexual","violence"]}}},{"code":"upstream_unavailable","status":503,"type":"upstream_error","retryable":true,"summary":"The model couldn't run this request right now.","description":"The model couldn't run this request right now. You were not charged; try again shortly.","group":"model"},{"code":"rate_limited","status":429,"type":"rate_limited","retryable":true,"summary":"Too many requests.","description":"Too many requests. Retry after the indicated delay.","group":"model"},{"code":"queue_full","status":429,"type":"rate_limited","retryable":true,"summary":"Your plan's limit of generations running at once is reached.","description":"Your plan's limit of generations running at once is reached. Retry when one finishes.","group":"model","details":{"upgrade_url":{"description":"Where to upgrade the plan or add credits."}}},{"code":"model_unavailable","status":503,"type":"upstream_error","retryable":true,"summary":"This model isn't available right now.","description":"This model isn't available right now.","group":"model"},{"code":"model_not_found","status":404,"type":"not_found","retryable":false,"summary":"Unknown model.","description":"Unknown model.","group":"model"},{"code":"insufficient_credits","status":402,"type":"permission","retryable":false,"summary":"Not enough credits for this generation.","description":"Not enough credits for this generation.","group":"model","details":{"upgrade_url":{"description":"Where to upgrade the plan or add credits."}}},{"code":"paid_plan_required","status":402,"type":"permission","retryable":false,"summary":"This model needs a paid plan.","description":"This model needs a paid plan.","group":"model","details":{"upgrade_url":{"description":"Where to upgrade the plan or add credits."}}},{"code":"model_not_in_plan","status":402,"type":"permission","retryable":false,"summary":"This model isn't included in your plan.","description":"This model isn't included in your plan.","group":"model","details":{"upgrade_url":{"description":"Where to upgrade the plan or add credits."}}},{"code":"model_access_required","status":403,"type":"permission","retryable":false,"summary":"This model needs access to be granted first.","description":"This model needs access to be granted first.","group":"model"},{"code":"outcome_unknown","status":503,"type":"upstream_error","retryable":true,"summary":"Voyager couldn't confirm this generation yet.","description":"Voyager couldn't confirm this generation yet. Ask for its status again; never submit it again, or it may be charged twice.","group":"model","details":{"support_ref":{"description":"Quote it to support."}}},{"code":"expired","status":410,"type":"not_found","retryable":false,"summary":"These results have expired.","description":"These results have expired.","group":"model"},{"code":"not_found","status":404,"type":"not_found","retryable":false,"summary":"No such generation for this workspace.","description":"No such generation for this workspace.","group":"model"},{"code":"conflict","status":409,"type":"conflict","retryable":false,"summary":"This generation can't change from its current state.","description":"This generation can't change from its current state.","group":"model"},{"code":"forbidden","status":403,"type":"permission","retryable":false,"summary":"This request isn't allowed for this workspace.","description":"This request isn't allowed for this workspace.","group":"model"},{"code":"internal_error","status":500,"type":"internal_error","retryable":false,"summary":"Something went wrong on Voyager's side.","description":"Something went wrong on Voyager's side.","group":"model"},{"code":"catalog_unavailable","status":503,"type":"upstream_error","retryable":true,"summary":"The model catalog is temporarily unavailable.","description":"The model catalog is temporarily unavailable. Retry shortly.","group":"model"},{"code":"billing_unavailable","status":503,"type":"upstream_error","retryable":true,"summary":"Your plan couldn't be checked right now, so this paid request can't run yet.","description":"Your plan couldn't be checked right now, so this paid request can't run yet. Retry shortly.","group":"model"},{"code":"no_voyager_seat","status":402,"type":"permission","retryable":false,"summary":"You don't have a seat on this workspace's Voyager plan.","description":"You don't have a seat on this workspace's Voyager plan.","group":"model"},{"code":"credits_reloading","status":402,"type":"permission","retryable":true,"summary":"Your credits are reloading and the balance is briefly short.","description":"Your credits are reloading and the balance is briefly short. Retry shortly.","group":"model"},{"code":"cast_not_supported","status":422,"type":"unprocessable","retryable":false,"summary":"Cast works with image and video models only.","description":"Cast works with image and video models only.","group":"model"},{"code":"voice_cloning_unavailable","status":403,"type":"permission","retryable":false,"summary":"Voice cloning isn't available to this workspace.","description":"Voice cloning isn't available to this workspace.","group":"model"},{"code":"too_many_references","status":422,"type":"unprocessable","retryable":false,"summary":"Too many reference files for this model and operation.","description":"Too many reference files for this model and operation.","group":"model"},{"code":"payload_too_large","status":413,"type":"invalid_request","retryable":false,"summary":"The request body is too large.","description":"The request body is too large.","group":"model"},{"code":"upload_too_large","status":413,"type":"invalid_request","retryable":false,"summary":"This file is over your plan's per-file limit.","description":"This file is over your plan's per-file limit.","group":"model"},{"code":"intake_full","status":429,"type":"rate_limited","retryable":true,"summary":"Too many recent reference files are stored.","description":"Too many recent reference files are stored. Delete some, or wait: they're kept 7 days.","group":"model"},{"code":"invalid_url","status":422,"type":"unprocessable","retryable":false,"summary":"That URL can't be used: it must be a public https URL.","description":"That URL can't be used: it must be a public https URL.","group":"model"},{"code":"fetch_failed","status":502,"type":"upstream_error","retryable":false,"summary":"That URL couldn't be downloaded.","description":"That URL couldn't be downloaded. Check it is live and public.","group":"model"},{"code":"unsupported_file","status":415,"type":"invalid_request","retryable":false,"summary":"That file isn't a supported image, video or audio type.","description":"That file isn't a supported image, video or audio type.","group":"model"},{"code":"invalid_api_key","status":401,"type":"authentication","retryable":false,"summary":"Missing, invalid or revoked API key.","description":"Missing, invalid or revoked API key.","group":"api"},{"code":"idempotency_conflict","status":409,"type":"idempotency_conflict","retryable":false,"summary":"This Idempotency-Key was already used for a different request.","description":"This Idempotency-Key was already used for a different request.","group":"api"},{"code":"idempotency_in_flight","status":409,"type":"conflict","retryable":true,"summary":"A request under this Idempotency-Key is still running; retry shortly.","description":"A request under this Idempotency-Key is still running; retry shortly.","group":"api"},{"code":"invalid_idempotency_key","status":400,"type":"invalid_request","retryable":false,"summary":"Idempotency-Key must be 1-200 printable ASCII characters.","description":"Idempotency-Key must be 1-200 printable ASCII characters.","group":"api"},{"code":"invalid_cursor","status":400,"type":"invalid_request","retryable":false,"summary":"Pass next_cursor exactly as a page returned it.","description":"Pass next_cursor exactly as a page returned it.","group":"api"},{"code":"invalid_webhook_url","status":400,"type":"invalid_request","retryable":false,"summary":"webhook_url must be a public https URL.","description":"webhook_url must be a public https URL.","group":"api"},{"code":"method_not_allowed","status":405,"type":"invalid_request","retryable":false,"summary":"This method is not supported on this path.","description":"This method is not supported on this path.","group":"api"},{"code":"account_unavailable","status":402,"type":"permission","retryable":false,"summary":"This Voyager account is not eligible for generation.","description":"This Voyager account is not eligible for generation.","group":"api"},{"code":"plan_required_for_faces","status":403,"type":"permission","retryable":false,"summary":"This video model needs the Ultra or GigaMax plan for a photoreal Cast character.","description":"This video model needs the Ultra or GigaMax plan for a photoreal Cast character. Use a stylized character or a different video model.","group":"api"},{"code":"version_conflict","status":409,"type":"conflict","retryable":false,"summary":"The Cast card changed since you read it.","description":"The Cast card changed since you read it. Read it again and retry with its current version.","group":"api"},{"code":"slug_taken","status":409,"type":"conflict","retryable":false,"summary":"Another Cast card in this workspace already uses that slug.","description":"Another Cast card in this workspace already uses that slug.","group":"api"},{"code":"already_referenced","status":409,"type":"conflict","retryable":false,"summary":"That image is already a reference on this Cast card.","description":"That image is already a reference on this Cast card.","group":"api"},{"code":"asset_in_use","status":409,"type":"conflict","retryable":true,"summary":"The file is in use by a running job or saved in a Cast card.","description":"The file is in use by a running job or saved in a Cast card. Delete it after the job ends, or remove it from the card first.","group":"api"},{"code":"upload_incomplete","status":409,"type":"conflict","retryable":false,"summary":"Nothing was uploaded yet.","description":"Nothing was uploaded yet. PUT the file to upload_url first.","group":"api"},{"code":"cancel_unsupported","status":409,"type":"conflict","retryable":false,"summary":"This kind of job cannot be stopped once started.","description":"This kind of job cannot be stopped once started. It finishes on its own.","group":"api"},{"code":"unsupported_model","status":422,"type":"unprocessable","retryable":false,"summary":"This model can't run that operation.","description":"This model can't run that operation. GET /v1/models/{id} lists the operations it runs.","group":"api"},{"code":"invalid_job_id","status":400,"type":"invalid_request","retryable":false,"summary":"Job ids look like job_…; pass one exactly as returned.","description":"Job ids look like job_…; pass one exactly as returned.","group":"api"},{"code":"voice_required","status":422,"type":"unprocessable","retryable":false,"summary":"Choose a voice: pick one from GET /v1/voices and pass its id as input.voice_id.","description":"Choose a voice: pick one from GET /v1/voices and pass its id as input.voice_id.","group":"api"},{"code":"observation_timeout","status":503,"type":"upstream_error","retryable":true,"summary":"The job's status couldn't be read in time.","description":"The job's status couldn't be read in time. Ask again with the same id; never submit it again.","group":"api"},{"code":"reference_unavailable","status":503,"type":"upstream_error","retryable":true,"summary":"A reference file couldn't be prepared right now.","description":"A reference file couldn't be prepared right now. Retry shortly.","group":"api"},{"code":"queue_timeout","status":null,"type":"rate_limited","retryable":false,"summary":"The job waited in the queue too long and was canceled; nothing was charged.","description":"The job waited in the queue too long and was canceled; nothing was charged.","group":"job","job_status":"canceled"},{"code":"reference_missing","status":null,"type":"not_found","retryable":false,"summary":"A reference file was deleted before the job started.","description":"A reference file was deleted before the job started. Nothing was charged.","group":"job","job_status":"failed"}],"x-voyager-limits":{"requests_per_minute":{"write":120,"read":600,"per":"api_key"},"upload_max_bytes":262144000,"upload_max_bytes_free_plan":52428800,"retention_days":{"outputs":30,"uploads":7},"webhook_timeout_seconds":10.0}}