{"openapi":"3.1.0","info":{"title":"Whisper Web Developer API","version":"1.0.0","description":"Independent prepaid audio transcription and audio-to-English translation. Website Unlimited subscriptions do not provide API credits. Both tasks cost USD 0.01 per minute, measured in whole audio seconds (rounded up). One credit is one audio second. An accepted job validates its media before reserving credits and starting transcription.","contact":{"email":"support@whisperweb.dev"}},"servers":[{"url":"https://whisperweb.dev/v1"}],"externalDocs":{"url":"https://whisperweb.dev/developers/docs"},"paths":{"/uploads":{"post":{"operationId":"createUpload","summary":"Create a signed direct upload","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:write","responses":{"201":{"description":"Upload session. PUT the file to upload_url, then complete it.","content":{"application/json":{"schema":{"type":"object","properties":{"upload":{"$ref":"#/components/schemas/Upload"},"upload_url":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"method":{"const":"PUT"},"upload_url_expires_in_seconds":{"type":"integer"}},"required":["upload","upload_url","headers","method","upload_url_expires_in_seconds"],"additionalProperties":false}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"size_bytes":{"type":"integer","minimum":1,"maximum":5000000000},"content_type":{"type":"string"}},"required":["size_bytes","content_type"],"additionalProperties":false}}}}}},"/uploads/{id}":{"get":{"operationId":"getUpload","summary":"Read an upload session","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:write","responses":{"200":{"description":"Upload state.","content":{"application/json":{"schema":{"type":"object","properties":{"upload":{"$ref":"#/components/schemas/Upload"}},"required":["upload"],"additionalProperties":false}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/uploads/{id}/complete":{"post":{"operationId":"completeUpload","summary":"Verify stored upload size and make it ready to submit","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:write","responses":{"200":{"description":"Upload ready to submit. Duration validation occurs in the transcription job.","content":{"application/json":{"schema":{"type":"object","properties":{"upload":{"$ref":"#/components/schemas/Upload"}},"required":["upload"],"additionalProperties":false}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/transcriptions":{"post":{"operationId":"createTranscription","summary":"Create an asynchronous transcription","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:write","responses":{"200":{"description":"Existing job returned for an identical idempotent request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Transcription"}}}},"202":{"description":"Job accepted for media validation. Poll at least five seconds apart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Transcription"}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"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":{"source":{"anyOf":[{"type":"object","properties":{"upload_id":{"type":"string","minLength":1,"maxLength":100}},"required":["upload_id"],"additionalProperties":false},{"type":"object","properties":{"audio_url":{"type":"string","maxLength":4096,"format":"uri"}},"required":["audio_url"],"additionalProperties":false}]},"model":{"type":"string","const":"whisperweb-standard"},"task":{"type":"string","enum":["transcribe","translate_to_english"]},"language":{"type":"string","enum":["auto","en","zh","de","es","ru","ko","fr","ja","pt","tr","pl","ca","nl","ar","sv","it","id","hi","fi","vi","he","uk","el","ms","cs","ro","da","hu","ta","no","th","ur","hr","bg","lt","la","mi","ml","cy","sk","te","fa","lv","bn","sr","az","sl","kn","et","mk","br","eu","is","hy","ne","mn","bs","kk","sq","sw","gl","mr","pa","si","km","sn","yo","so","af","oc","ka","be","tg","sd","gu","am","yi","lo","uz","fo","ht","ps","tk","nn","mt","sa","lb","my","bo","tl","mg","as","tt","haw","ln","ha","ba","jw","su"],"default":"auto"},"webhook_id":{"type":"string","minLength":1,"maxLength":100},"max_cost_credits":{"type":"integer","exclusiveMinimum":0,"maximum":36000}},"required":["source"],"additionalProperties":false}}}}},"get":{"operationId":"listTranscriptions","summary":"List Developer transcriptions","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:read","responses":{"200":{"description":"Newest records first, with cursor pagination.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Transcription"}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"],"additionalProperties":false}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":20}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string","enum":["validating","queued","processing","completed","failed"]}}]}},"/transcriptions/{id}":{"get":{"operationId":"getTranscription","summary":"Read task status and billed usage","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:read","responses":{"200":{"description":"Status and metadata; obtain text from the result endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Transcription"}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"operationId":"deleteTranscription","summary":"Delete a terminal task result","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:delete","responses":{"200":{"description":"Result deleted. Usage records remain for billing.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"const":true}},"required":["id","deleted"],"additionalProperties":false}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/transcriptions/{id}/result":{"get":{"operationId":"getResult","summary":"Read or download text and subtitles","security":[{"apiKey":[]}],"x-required-scope":"transcriptions:read","responses":{"200":{"description":"Completed result. JSON uses milliseconds. Other formats download as files.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Result"}},"text/plain":{"schema":{"type":"string"}},"text/vtt":{"schema":{"type":"string"}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","schema":{"type":"string","enum":["json","txt","srt","vtt"],"default":"json"}}]}},"/usage":{"get":{"operationId":"getUsage","summary":"Read API credits and consumption","security":[{"apiKey":[]}],"x-required-scope":"usage:read","responses":{"200":{"description":"Account balance, configured limits and ledger entries.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Usage"}}}},"400":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A structured error. Check error.code and error.request_id. For 429, respect Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"before","in":"query","description":"Optional time filter. Use cursor for lossless pagination.","schema":{"type":"string","format":"date-time"}},{"name":"api_key_id","in":"query","schema":{"type":"string"}}]}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"ww_live_…"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"},"requestId":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","request_id","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"Upload":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["uploading","ready","assigned","expired","failed"]},"size_bytes":{"type":"integer"},"content_type":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}},"required":["id","status","size_bytes","content_type","expires_at"],"additionalProperties":false},"Transcription":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["validating","queued","processing","completed","failed"]},"model":{"const":"whisperweb-standard"},"task":{"enum":["transcribe","translate_to_english"]},"language":{"type":"string"},"source_language":{"type":["string","null"]},"output_language":{"type":["string","null"]},"duration_ms":{"type":["integer","null"]},"usage":{"type":"object","properties":{"credits":{"type":["integer","null"]},"status":{"type":"string"},"price_version":{"const":"2026-11-03"}},"required":["credits","status","price_version"],"additionalProperties":false},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"retry_after_ms":{"type":"integer"},"duplicate":{"type":"boolean"}},"required":["id","status","model","task","usage","created_at","expires_at"],"additionalProperties":false},"Result":{"type":"object","properties":{"text":{"type":"string"},"source_language":{"type":"string"},"output_language":{"type":"string"},"duration_ms":{"type":"integer"},"segments":{"type":"array","items":{"type":"object","properties":{"start_ms":{"type":"integer"},"end_ms":{"type":"integer"},"text":{"type":"string"}},"required":["start_ms","end_ms","text"],"additionalProperties":false}}},"required":["text","source_language","output_language","duration_ms","segments"],"additionalProperties":false},"Usage":{"type":"object","properties":{"balance":{"type":"object","properties":{"available_credits":{"type":"integer"},"reserved_credits":{"type":"integer"},"consumed_credits":{"type":"integer"}},"required":["available_credits","reserved_credits","consumed_credits"],"additionalProperties":false},"pricing":{"type":"object"},"limits":{"type":"object"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"credits":{"type":"integer"},"job_id":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"}},"required":["id","type","credits","created_at"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]}},"required":["balance","pricing","limits","items","next_cursor"],"additionalProperties":false}}}}