{"openapi":"3.1.1","info":{"title":"Vocloner Voices & Audio API","version":"1.0.0","description":"Private voice and audio workflows using your existing Vocloner plan. No account or billing API."},"servers":[{"url":"https://api.vocloner.org/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/voices":{"get":{"operationId":"listVoices","summary":"List voices","description":"Owned voices and authorized public voices. Paginate with cursor and limit. Required permission: voices:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"scope","in":"query","schema":{"type":"string","enum":["mine","public","all"],"default":"all"}},{"name":"search","in":"query","schema":{"type":"string","maxLength":80}},{"name":"language","in":"query","schema":{"type":"string","maxLength":40}},{"name":"category","in":"query","schema":{"type":"string","maxLength":40}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePage"},"example":{"items":[{"id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","name":"Example voice","visibility":"private","language":"es","category":"narrator","status":"ready","avatar_url":null,"review_state":"approved","created_at":"2026-10-29T12:00:00.000Z"}],"next_cursor":null}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:read","x-character-cost":"free"},"post":{"operationId":"cloneVoice","summary":"Clone a voice","description":"Upload and confirm a recording before cloning. Include a recorded challenge when required. New voices are private. Required permission: voices:clone.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"consent_ownership":{"type":"boolean","const":true},"language":{"default":"es","type":"string","minLength":2,"maxLength":40},"category":{"default":"narrator","type":"string","minLength":2,"maxLength":40},"locale":{"default":"es","type":"string","enum":["es","en"]},"consent_challenge_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"consent_file_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["file_id","name","consent_ownership"],"additionalProperties":false},"example":{"file_id":"ab198ae5-9225-40f3-b176-56ed83861080","name":"Mi voz","consent_ownership":true,"language":"es","category":"narrator","locale":"es"}}}},"responses":{"202":{"description":"Accepted; poll status_url until a terminal state.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"clone","status":"queued","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":null,"completed_at":null,"cancel_requested":false,"result":null,"error":null,"usage":{"reserved_characters":1000,"billed_characters":0,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:clone","x-character-cost":"1000"}},"/voices/{id}":{"get":{"operationId":"getVoice","summary":"Get a voice","description":"Retrieve metadata for a voice you are allowed to use. Required permission: voices:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Voice"},"example":{"id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","name":"Example voice","visibility":"private","language":"es","category":"narrator","status":"ready","avatar_url":null,"review_state":"approved","created_at":"2026-10-29T12:00:00.000Z"}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:read","x-character-cost":"free"},"patch":{"operationId":"updateVoice","summary":"Update a voice","description":"Update the name, language or category of an owned voice. Required permission: voices:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"language":{"default":"es","type":"string","minLength":2,"maxLength":40},"category":{"default":"narrator","type":"string","minLength":2,"maxLength":40}},"additionalProperties":false},"example":{"name":"Narración"}}}},"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Voice"},"example":{"id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","name":"Example voice","visibility":"private","language":"es","category":"narrator","status":"ready","avatar_url":null,"review_state":"approved","created_at":"2026-10-29T12:00:00.000Z"}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:write","x-character-cost":"free"},"delete":{"operationId":"deleteVoice","summary":"Delete a voice","description":"Delete an owned voice. Existing generations keep their retention rules. Required permission: voices:delete.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deletion"},"example":{"deleted":true}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:delete","x-character-cost":"free"}},"/voices/{id}/publication-requests":{"post":{"operationId":"requestPublication","summary":"Request publication","description":"Confirm public use permission and request review. A request does not automatically publish the voice. Required permission: voices:publish.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"consent_public_use":{"type":"boolean","const":true}},"required":["consent_public_use"],"additionalProperties":false},"example":{"consent_public_use":true}}}},"responses":{"201":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicationRequest"},"example":{"voice_id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","review_state":"pending"}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:publish","x-character-cost":"free"}},"/voices/{id}/reports":{"post":{"operationId":"reportVoice","summary":"Report a voice","description":"Report impersonation, missing consent or other abuse for review. Required permission: voices:report.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reason":{"type":"string","enum":["impersonation","no_consent","offensive","spam","other"]},"detail":{"type":"string","maxLength":1000}},"required":["reason"],"additionalProperties":false},"example":{"reason":"no_consent","detail":"Información para la revisión."}}}},"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Report"},"example":{"reported":true}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:report","x-character-cost":"free"}},"/voice-designs":{"post":{"operationId":"createDesign","summary":"Design voice candidates","description":"Describe a voice to obtain temporary candidates. Save a candidate before using it for speech. Required permission: voices:design.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"prompt":{"type":"string","minLength":8,"maxLength":1000}},"required":["prompt"],"additionalProperties":false},"example":{"prompt":"Una voz cálida, clara y pausada para narración en español."}}}},"responses":{"202":{"description":"Accepted; poll status_url until a terminal state.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"voice_design","status":"queued","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":null,"completed_at":null,"cancel_requested":false,"result":null,"error":null,"usage":{"reserved_characters":1000,"billed_characters":0,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:design","x-character-cost":"1000"}},"/voice-designs/{id}":{"get":{"operationId":"getDesign","summary":"Get a voice design","description":"Retrieve candidates and expiration for an owned design batch. Required permission: voices:design.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"voice_design","status":"completed","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":"2026-10-29T12:00:00.000Z","completed_at":"2026-10-29T12:00:00.000Z","cancel_requested":false,"result":{"design_id":"f261e35c-420f-4c82-bd88-a0e370c936ab","candidates":[{"id":"6e657fb6-cf58-46d8-9311-7f3828b203c7","index":0,"duration_ms":3500,"audio_url":"https://api.vocloner.org/v1/assets/6e657fb6-cf58-46d8-9311-7f3828b203c7/content"}]},"error":null,"usage":{"reserved_characters":46,"billed_characters":46,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:design","x-character-cost":"free"}},"/voice-designs/{id}/voices":{"post":{"operationId":"selectDesign","summary":"Save a candidate","description":"Create a reusable private voice without charging the design again. Requires an available voice slot. Required permission: voices:design.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"candidate_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"language":{"default":"es","type":"string","minLength":2,"maxLength":40},"category":{"default":"narrator","type":"string","minLength":2,"maxLength":40}},"required":["candidate_id","name"],"additionalProperties":false},"example":{"candidate_id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","name":"Narradora","language":"es","category":"narrator"}}}},"responses":{"202":{"description":"Accepted; poll status_url until a terminal state.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"voice_design_select","status":"queued","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":null,"completed_at":null,"cancel_requested":false,"result":null,"error":null,"usage":{"reserved_characters":46,"billed_characters":0,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:design","x-character-cost":"free"}},"/speech":{"post":{"operationId":"createSpeech","summary":"Generate speech","description":"Convert text to MP3 or WAV. Supports compatible expressive tags. Prefer: wait=20 waits up to twenty seconds; the response may still be 202. Required permission: speech:generate.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}},{"name":"Prefer","in":"header","schema":{"type":"string","enum":["wait=20"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"voice_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"text":{"type":"string","minLength":1,"maxLength":12000},"format":{"default":"mp3","type":"string","enum":["mp3","wav"]}},"required":["voice_id","text"],"additionalProperties":false},"example":{"voice_id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","text":"Hola, esta es mi primera generación con Vocloner.","format":"mp3"}}}},"responses":{"200":{"description":"Accepted; poll status_url until a terminal state.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"speech","status":"queued","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":null,"completed_at":null,"cancel_requested":false,"result":null,"error":null,"usage":{"reserved_characters":46,"billed_characters":0,"remaining_characters":9000}}}}},"202":{"description":"Accepted; poll status_url until a terminal state.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"speech","status":"queued","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":null,"completed_at":null,"cancel_requested":false,"result":null,"error":null,"usage":{"reserved_characters":46,"billed_characters":0,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"speech:generate","x-character-cost":"text"}},"/dialogues":{"post":{"operationId":"createDialogue","summary":"Generate a dialogue","description":"Between two and ten lines. Every voice must be authorized and the plan must enable dialogues. Required permission: speech:generate.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"lines":{"minItems":2,"maxItems":10,"type":"array","items":{"type":"object","properties":{"voice_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"text":{"type":"string","minLength":1,"maxLength":12000}},"required":["voice_id","text"],"additionalProperties":false}},"gap_ms":{"default":400,"type":"integer","minimum":0,"maximum":3000}},"required":["lines"],"additionalProperties":false},"example":{"lines":[{"voice_id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","text":"Hola."},{"voice_id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","text":"Bienvenido."}],"gap_ms":400}}}},"responses":{"202":{"description":"Accepted; poll status_url until a terminal state.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"dialogue","status":"queued","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":null,"completed_at":null,"cancel_requested":false,"result":null,"error":null,"usage":{"reserved_characters":46,"billed_characters":0,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"speech:generate","x-character-cost":"text"}},"/files":{"post":{"operationId":"createFile","summary":"Prepare an upload","description":"Obtain a temporary authorization for a direct upload to private Storage. Confirm the upload using /complete afterwards. Required permission: files:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_name":{"type":"string","minLength":1,"maxLength":180,"pattern":"^[^\\x00-\\x1f/\\\\]+$"},"content_type":{"type":"string","enum":["audio/mpeg","audio/mp3","audio/wav","audio/x-wav","audio/wave","audio/ogg","audio/flac","audio/x-flac","audio/mp4","audio/m4a","audio/x-m4a","audio/webm"]},"size_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":26214400},"purpose":{"type":"string","enum":["clone","audio_tool","local_tool","consent"]}},"required":["file_name","content_type","size_bytes","purpose"],"additionalProperties":false,"allOf":[{"if":{"properties":{"purpose":{"const":"clone"}},"required":["purpose"]},"then":{"properties":{"size_bytes":{"maximum":20971520}}}},{"if":{"properties":{"purpose":{"const":"consent"}},"required":["purpose"]},"then":{"properties":{"size_bytes":{"maximum":5242880}}}},{"if":{"properties":{"purpose":{"const":"audio_tool"}},"required":["purpose"]},"then":{"properties":{"size_bytes":{"maximum":20971520}}}},{"if":{"properties":{"purpose":{"const":"local_tool"}},"required":["purpose"]},"then":{"properties":{"size_bytes":{"maximum":26214400}}}}]},"example":{"file_name":"voz.wav","content_type":"audio/wav","size_bytes":1048576,"purpose":"clone"}}}},"responses":{"201":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Upload"},"example":{"id":"ab198ae5-9225-40f3-b176-56ed83861080","file_name":"voz.wav","content_type":"audio/wav","size_bytes":1048576,"duration_ms":null,"sha256":null,"purpose":"clone","status":"pending","created_at":"2026-10-29T12:00:00.000Z","expires_at":"2026-10-30T12:00:00.000Z","upload_url":"https://storage.example.com/signed-upload/illustrative-only","upload_token":"ILLUSTRATIVE_UPLOAD_TOKEN","upload_expires_at":"2026-10-29T12:00:00.000Z","upload_method":"PUT","upload_headers":{"Content-Type":"audio/wav"}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"files:write","x-character-cost":"free"}},"/files/{id}/complete":{"post":{"operationId":"completeFile","summary":"Complete an upload","description":"Validate actual content, size, duration and hash before allowing use. Required permission: files:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"},"example":{"id":"ab198ae5-9225-40f3-b176-56ed83861080","file_name":"voz.wav","content_type":"audio/wav","size_bytes":1048576,"duration_ms":12000,"sha256":null,"purpose":"clone","status":"ready","created_at":"2026-10-29T12:00:00.000Z","expires_at":"2026-10-30T12:00:00.000Z"}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"files:write","x-character-cost":"free"}},"/files/{id}":{"get":{"operationId":"getFile","summary":"Get a file","description":"Retrieve status, duration and expiration of an owned file. Required permission: files:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"},"example":{"id":"ab198ae5-9225-40f3-b176-56ed83861080","file_name":"voz.wav","content_type":"audio/wav","size_bytes":1048576,"duration_ms":12000,"sha256":null,"purpose":"clone","status":"ready","created_at":"2026-10-29T12:00:00.000Z","expires_at":"2026-10-30T12:00:00.000Z"}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"files:write","x-character-cost":"free"},"delete":{"operationId":"deleteFile","summary":"Delete a file","description":"Delete an owned file when no active job needs it. Required permission: files:write.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileDeletion"},"example":{"id":"ab198ae5-9225-40f3-b176-56ed83861080","deleted":true}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"files:write","x-character-cost":"free"}},"/consent-challenges":{"post":{"operationId":"createConsent","summary":"Create a consent challenge","description":"Obtain a temporary phrase, record it and upload the audio with purpose: consent. Include both identifiers when cloning. Required permission: voices:clone.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"default":"es","type":"string","enum":["es","en"]}},"additionalProperties":false},"example":{"locale":"es"}}}},"responses":{"201":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentChallenge"},"example":{"id":"ab198ae5-9225-40f3-b176-56ed83861080","phrase":"Read the challenge returned by your live request.","expires_at":"2026-10-29T12:00:00.000Z","consent_version":"example-version","consent_text":"The live response provides the applicable consent text.","recording_required":true}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"voices:clone","x-character-cost":"free"}},"/audio-tools/{operation}":{"post":{"operationId":"processAudio","summary":"Process audio","description":"Check /capabilities for available operations and options. Supply exactly one owned file or generation. Required permission: audio:process.","security":[{"bearerAuth":[]}],"parameters":[{"name":"operation","in":"path","required":true,"schema":{"type":"string","enum":["denoise","separate","trim","volume","fade","reverse","normalize"]}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"generation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"options":{"default":{},"type":"object","properties":{"start_ms":{"type":"integer","minimum":0,"maximum":9007199254740991},"end_ms":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"volume":{"type":"number","minimum":0,"maximum":4},"fade_in_ms":{"type":"integer","minimum":0,"maximum":30000},"fade_out_ms":{"type":"integer","minimum":0,"maximum":30000},"target_peak_db":{"type":"number","minimum":-24,"maximum":-0.1}},"additionalProperties":false}},"additionalProperties":false,"oneOf":[{"required":["file_id"],"not":{"required":["generation_id"]}},{"required":["generation_id"],"not":{"required":["file_id"]}}]},"example":{"file_id":"ab198ae5-9225-40f3-b176-56ed83861080","options":{"start_ms":0,"end_ms":5000}}}}},"responses":{"202":{"description":"Accepted; poll status_url until a terminal state.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"audio_tool","status":"queued","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":null,"completed_at":null,"cancel_requested":false,"result":null,"error":null,"usage":{"reserved_characters":46,"billed_characters":0,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"audio:process","x-character-cost":"tool"}},"/jobs":{"get":{"operationId":"listJobs","summary":"List jobs","description":"Paginated owned jobs ordered by creation. Required permission: jobs:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPage"},"example":{"items":[{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"speech","status":"completed","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":"2026-10-29T12:00:00.000Z","completed_at":"2026-10-29T12:00:00.000Z","cancel_requested":false,"result":{"generation_id":"f261e35c-420f-4c82-bd88-a0e370c936ab","asset_id":"6e657fb6-cf58-46d8-9311-7f3828b203c7","audio_url":"https://api.vocloner.org/v1/assets/6e657fb6-cf58-46d8-9311-7f3828b203c7/content","format":"mp3","duration_ms":3500},"error":null,"usage":{"reserved_characters":46,"billed_characters":46,"remaining_characters":9000}}],"next_cursor":null}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"jobs:read","x-character-cost":"free"}},"/jobs/{id}":{"get":{"operationId":"getJob","summary":"Get a job","description":"Retrieve status, result and billed characters. Respect Retry-After before polling again. Required permission: jobs:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"speech","status":"completed","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":"2026-10-29T12:00:00.000Z","completed_at":"2026-10-29T12:00:00.000Z","cancel_requested":false,"result":{"generation_id":"f261e35c-420f-4c82-bd88-a0e370c936ab","asset_id":"6e657fb6-cf58-46d8-9311-7f3828b203c7","audio_url":"https://api.vocloner.org/v1/assets/6e657fb6-cf58-46d8-9311-7f3828b203c7/content","format":"mp3","duration_ms":3500},"error":null,"usage":{"reserved_characters":46,"billed_characters":46,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"jobs:read","x-character-cost":"free"}},"/jobs/{id}/cancel":{"post":{"operationId":"cancelJob","summary":"Cancel a job","description":"Cancel queued work immediately. For running work, request cancellation and check the final status and usage. Required permission: jobs:cancel.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","operation":"speech","status":"canceled","status_url":"https://api.vocloner.org/v1/jobs/f261e35c-420f-4c82-bd88-a0e370c936ab","created_at":"2026-10-29T12:00:00.000Z","started_at":"2026-10-29T12:00:00.000Z","completed_at":"2026-10-29T12:00:00.000Z","cancel_requested":true,"result":null,"error":null,"usage":{"reserved_characters":46,"billed_characters":0,"remaining_characters":9000}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"jobs:cancel","x-character-cost":"free"}},"/generations":{"get":{"operationId":"listGenerations","summary":"List generations","description":"List owned generations from the web, MCP and API using a stable cursor. Required permission: generations:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationPage"},"example":{"items":[{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","kind":"tts","voice_id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","status":"completed","char_count":46,"duration_ms":3500,"format":"mp3","audio_asset_id":"6e657fb6-cf58-46d8-9311-7f3828b203c7","audio_url":"https://api.vocloner.org/v1/assets/6e657fb6-cf58-46d8-9311-7f3828b203c7/content","created_at":"2026-10-29T12:00:00.000Z","completed_at":"2026-10-29T12:00:00.000Z","error_code":null}],"next_cursor":null}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"generations:read","x-character-cost":"free"}},"/generations/{id}":{"get":{"operationId":"getGeneration","summary":"Get a generation","description":"Retrieve metadata and the audio reference of an owned generation. Required permission: generations:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Generation"},"example":{"id":"f261e35c-420f-4c82-bd88-a0e370c936ab","kind":"tts","voice_id":"c816ce5b-22f5-4ed2-91a9-90e79b874a24","status":"completed","char_count":46,"duration_ms":3500,"format":"mp3","audio_asset_id":"6e657fb6-cf58-46d8-9311-7f3828b203c7","audio_url":"https://api.vocloner.org/v1/assets/6e657fb6-cf58-46d8-9311-7f3828b203c7/content","created_at":"2026-10-29T12:00:00.000Z","completed_at":"2026-10-29T12:00:00.000Z","error_code":null}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"generations:read","x-character-cost":"free"},"delete":{"operationId":"deleteGeneration","summary":"Delete a generation","description":"Delete an owned generation according to retention rules. Required permission: generations:delete.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deletion"},"example":{"deleted":true}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"generations:delete","x-character-cost":"free"}},"/assets/{id}/content":{"get":{"operationId":"downloadAsset","summary":"Download audio","description":"Return authorized audio bytes. Send Bearer on every download; never put the key in the URL. Required permission: audio:read.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}},"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":"audio:read","x-character-cost":"free"}},"/capabilities":{"get":{"operationId":"getCapabilities","summary":"Get capabilities","description":"Check formats, operations and limits supported in this environment before integrating.","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Successful response.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"description":"Wait this many seconds, or until the HTTP date, before another request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Capabilities"},"example":{"api_version":"v1","formats":{"speech":["mp3","wav"],"dialogue":["mp3"]},"operations":["speech","dialogue","clone","voice_design","voice_design_select","audio_tool"],"audio_tools":{"trim":true,"volume":true,"fade":true,"reverse":true,"normalize":true,"denoise":false,"separate":false},"files":{"clone":{"max_bytes":20971520,"min_seconds":5,"max_seconds":270},"consent":{"max_bytes":5242880},"audio_tool":{"max_bytes":20971520,"max_seconds":1200},"local_tool":{"max_bytes":26214400,"max_seconds":900}},"consent":{"version":"example-version","recording_required":true},"jobs":{"default_mode":"async","max_wait_seconds":20},"idempotency":{"retention_days":30}}}}},"400":{"description":"HTTP 400; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"HTTP 401; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"HTTP 403; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"HTTP 404; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"HTTP 409; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"HTTP 413; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"HTTP 422; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"HTTP 429; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"HTTP 500; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"HTTP 503; see the error code and request_id.","headers":{"X-Request-Id":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-permission":null,"x-character-cost":"free"}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"vcl_api_..."}},"schemas":{"Error":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","request_id","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"Voice":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","public"]},"language":{"type":"string"},"category":{"type":"string"},"status":{"type":"string","enum":["training","ready","failed","deleted"]},"avatar_url":{"type":["string","null"]},"review_state":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","visibility","language","category","status"],"additionalProperties":false},"VoicePage":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","public"]},"language":{"type":"string"},"category":{"type":"string"},"status":{"type":"string","enum":["training","ready","failed","deleted"]},"avatar_url":{"type":["string","null"]},"review_state":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","visibility","language","category","status"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"],"additionalProperties":false},"Generation":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string"},"voice_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","running","completed","failed"]},"char_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"format":{"type":"string","enum":["mp3","wav"]},"audio_asset_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audio_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"completed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"error_code":{"type":["string","null"]}},"required":["id","kind","voice_id","status","char_count","duration_ms","format","audio_asset_id","audio_url","created_at","completed_at","error_code"],"additionalProperties":false},"GenerationPage":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string"},"voice_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","running","completed","failed"]},"char_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"format":{"type":"string","enum":["mp3","wav"]},"audio_asset_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audio_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"completed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"error_code":{"type":["string","null"]}},"required":["id","kind","voice_id","status","char_count","duration_ms","format","audio_asset_id","audio_url","created_at","completed_at","error_code"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"],"additionalProperties":false},"File":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"file_name":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"sha256":{"type":["string","null"]},"purpose":{"type":"string","enum":["clone","consent","audio_tool","local_tool"]},"status":{"type":"string","enum":["pending","ready","deleted"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","file_name","content_type","size_bytes","duration_ms","sha256","purpose","status","created_at","expires_at"],"additionalProperties":false},"Upload":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"file_name":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"sha256":{"type":["string","null"]},"purpose":{"type":"string","enum":["clone","consent","audio_tool","local_tool"]},"status":{"type":"string","enum":["pending","ready","deleted"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"upload_url":{"type":"string","format":"uri"},"upload_token":{"type":"string"},"upload_expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"upload_method":{"type":"string","const":"PUT"},"upload_headers":{"type":"object","properties":{"Content-Type":{"type":"string"}},"required":["Content-Type"],"additionalProperties":false}},"required":["id","file_name","content_type","size_bytes","duration_ms","sha256","purpose","status","created_at","expires_at","upload_url","upload_token","upload_expires_at","upload_method","upload_headers"],"additionalProperties":false},"Job":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"operation":{"type":"string","enum":["speech","dialogue","clone","voice_design","voice_design_select","audio_tool"]},"status":{"type":"string","enum":["queued","running","reconciling","completed","failed","canceled"]},"status_url":{"type":"string","format":"uri"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"cancel_requested":{"type":"boolean"},"result":{"anyOf":[{"type":"object","properties":{"generation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"asset_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"audio_url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["mp3","wav"]},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["generation_id","asset_id","audio_url","format","duration_ms"],"additionalProperties":false},{"type":"object","properties":{"voice":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","public"]},"language":{"type":"string"},"category":{"type":"string"},"status":{"type":"string","enum":["training","ready","failed","deleted"]},"avatar_url":{"type":["string","null"]},"review_state":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","visibility","language","category","status"],"additionalProperties":false}},"required":["voice"],"additionalProperties":false},{"type":"object","properties":{"design_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"audio_url":{"type":"string","format":"uri"}},"required":["id","index","duration_ms","audio_url"],"additionalProperties":false}}},"required":["design_id","candidates"],"additionalProperties":false},{"type":"object","properties":{"outputs":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"asset_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"audio_url":{"type":"string","format":"uri"}},"required":["kind","asset_id","duration_ms","audio_url"],"additionalProperties":false}}},"required":["outputs"],"additionalProperties":false},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"additionalProperties":false},{"type":"null"}]},"usage":{"type":"object","properties":{"reserved_characters":{"type":"integer","minimum":0,"maximum":9007199254740991},"billed_characters":{"type":"integer","minimum":0,"maximum":9007199254740991},"remaining_characters":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["reserved_characters","billed_characters","remaining_characters"],"additionalProperties":false}},"required":["id","operation","status","status_url","created_at","started_at","completed_at","cancel_requested","result","error","usage"],"additionalProperties":false},"JobPage":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"operation":{"type":"string","enum":["speech","dialogue","clone","voice_design","voice_design_select","audio_tool"]},"status":{"type":"string","enum":["queued","running","reconciling","completed","failed","canceled"]},"status_url":{"type":"string","format":"uri"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"started_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"cancel_requested":{"type":"boolean"},"result":{"anyOf":[{"type":"object","properties":{"generation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"asset_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"audio_url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["mp3","wav"]},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["generation_id","asset_id","audio_url","format","duration_ms"],"additionalProperties":false},{"type":"object","properties":{"voice":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","public"]},"language":{"type":"string"},"category":{"type":"string"},"status":{"type":"string","enum":["training","ready","failed","deleted"]},"avatar_url":{"type":["string","null"]},"review_state":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","visibility","language","category","status"],"additionalProperties":false}},"required":["voice"],"additionalProperties":false},{"type":"object","properties":{"design_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"audio_url":{"type":"string","format":"uri"}},"required":["id","index","duration_ms","audio_url"],"additionalProperties":false}}},"required":["design_id","candidates"],"additionalProperties":false},{"type":"object","properties":{"outputs":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"asset_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"audio_url":{"type":"string","format":"uri"}},"required":["kind","asset_id","duration_ms","audio_url"],"additionalProperties":false}}},"required":["outputs"],"additionalProperties":false},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"additionalProperties":false},{"type":"null"}]},"usage":{"type":"object","properties":{"reserved_characters":{"type":"integer","minimum":0,"maximum":9007199254740991},"billed_characters":{"type":"integer","minimum":0,"maximum":9007199254740991},"remaining_characters":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["reserved_characters","billed_characters","remaining_characters"],"additionalProperties":false}},"required":["id","operation","status","status_url","created_at","started_at","completed_at","cancel_requested","result","error","usage"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"],"additionalProperties":false},"SpeechResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"generation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"asset_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"audio_url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["mp3","wav"]},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["generation_id","asset_id","audio_url","format","duration_ms"],"additionalProperties":false},"VoiceResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"voice":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","public"]},"language":{"type":"string"},"category":{"type":"string"},"status":{"type":"string","enum":["training","ready","failed","deleted"]},"avatar_url":{"type":["string","null"]},"review_state":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","visibility","language","category","status"],"additionalProperties":false}},"required":["voice"],"additionalProperties":false},"DesignResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"design_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"audio_url":{"type":"string","format":"uri"}},"required":["id","index","duration_ms","audio_url"],"additionalProperties":false}}},"required":["design_id","candidates"],"additionalProperties":false},"AudioToolResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"outputs":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"asset_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"duration_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"audio_url":{"type":"string","format":"uri"}},"required":["kind","asset_id","duration_ms","audio_url"],"additionalProperties":false}}},"required":["outputs"],"additionalProperties":false},"Deletion":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":false},"FileDeletion":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deleted":{"type":"boolean","const":true}},"required":["id","deleted"],"additionalProperties":false},"PublicationRequest":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"voice_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"review_state":{"type":"string","const":"pending"}},"required":["voice_id","review_state"],"additionalProperties":false},"Report":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reported":{"type":"boolean","const":true}},"required":["reported"],"additionalProperties":false},"ConsentChallenge":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"phrase":{"type":"string"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"consent_version":{"type":"string"},"consent_text":{"type":"string"},"recording_required":{"type":"boolean"}},"required":["id","phrase","expires_at","consent_version","consent_text","recording_required"],"additionalProperties":false},"Capabilities":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"api_version":{"type":"string","const":"v1"},"formats":{"type":"object","properties":{"speech":{"type":"array","items":{"type":"string","enum":["mp3","wav"]}},"dialogue":{"type":"array","items":{"type":"string","const":"mp3"}}},"required":["speech","dialogue"],"additionalProperties":false},"operations":{"type":"array","items":{"type":"string","enum":["speech","dialogue","clone","voice_design","voice_design_select","audio_tool"]}},"audio_tools":{"type":"object","properties":{"trim":{"type":"boolean"},"volume":{"type":"boolean"},"fade":{"type":"boolean"},"reverse":{"type":"boolean"},"normalize":{"type":"boolean"},"denoise":{"type":"boolean"},"separate":{"type":"boolean"}},"required":["trim","volume","fade","reverse","normalize","denoise","separate"],"additionalProperties":false},"files":{"type":"object","properties":{"clone":{"type":"object","properties":{"max_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"min_seconds":{"type":"number","minimum":0},"max_seconds":{"type":"number","exclusiveMinimum":0}},"required":["max_bytes"],"additionalProperties":false},"consent":{"type":"object","properties":{"max_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"min_seconds":{"type":"number","minimum":0},"max_seconds":{"type":"number","exclusiveMinimum":0}},"required":["max_bytes"],"additionalProperties":false},"audio_tool":{"type":"object","properties":{"max_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"min_seconds":{"type":"number","minimum":0},"max_seconds":{"type":"number","exclusiveMinimum":0}},"required":["max_bytes"],"additionalProperties":false},"local_tool":{"type":"object","properties":{"max_bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"min_seconds":{"type":"number","minimum":0},"max_seconds":{"type":"number","exclusiveMinimum":0}},"required":["max_bytes"],"additionalProperties":false}},"required":["clone","consent","audio_tool","local_tool"],"additionalProperties":false},"consent":{"type":"object","properties":{"version":{"type":"string"},"recording_required":{"type":"boolean"}},"required":["version","recording_required"],"additionalProperties":false},"jobs":{"type":"object","properties":{"default_mode":{"type":"string","const":"async"},"max_wait_seconds":{"type":"number","const":20}},"required":["default_mode","max_wait_seconds"],"additionalProperties":false},"idempotency":{"type":"object","properties":{"retention_days":{"type":"number","const":30}},"required":["retention_days"],"additionalProperties":false}},"required":["api_version","formats","operations","audio_tools","files","consent","jobs","idempotency"],"additionalProperties":false}}}}