{"openapi":"3.1.0","info":{"title":"Audo API","version":"1.0.0","description":"Audio tools for people and agents: remove noise, enhance voices, transcribe, align a script, cut, remove silence, set loudness, convert, join, swap a video's audio, and media info.\n\nFree API: POST /api/try/<tool> with a file runs the tool on the first part of it, free, a few times a day, with no account or key. For example: `curl -F file=@interview.wav https://audo.ai/api/try/remove-noise -D response.headers -o response.body`.\n\nREST API: /api/v1 runs whole files with credits (1 credit is 1 US cent). Send an API key as a bearer token (Authorization: Bearer audo_sk_…); people create keys at https://audo.ai/keys. Upload a file (POST /api/v1/files), start a job (POST /api/v1/jobs), wait for it (GET /api/v1/jobs/{id}?wait=30), then download the output (GET /api/v1/files/{id}/download). Files are deleted after 24 hours.\n\nEvery response carries RateLimit-Policy and RateLimit headers. Every error has the same shape: a code, a message that says what went wrong, whether to retry, and nextAction, what to do about it."},"servers":[{"url":"https://audo.ai"}],"tags":[{"name":"Free API","description":"One request per tool, free for the first part of a file, without an account"},{"name":"Tools"},{"name":"Files"},{"name":"Jobs"},{"name":"Account"},{"name":"Upload page","description":"What the upload page uses, with the token in its link, so a person can upload without signing in"},{"name":"File links","description":"Signed links to a file's bytes, on the site's own origin. The token in the link is the only credential"}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"An API key (audo_sk_…), or an OAuth access token for the REST API"},"session":{"type":"apiKey","in":"cookie","name":"__Secure-audo.session_token","description":"The website's session"}}},"paths":{"/api/v1/tools":{"get":{"operationId":"get_v1_tools","tags":["Tools"],"summary":"List the tools with prices, free limits, and input schemas","security":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"title":{"type":"string"},"slug":{"type":"string","description":"The free API's path: /api/try/<slug>"},"description":{"type":"string"},"creditsPerMinute":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"free":{"type":"object","properties":{"enabled":{"type":"boolean"},"seconds":{"description":"How much of a file a free run processes, or null for the whole file","type":["number","null"]},"dailyUses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Free uses a day per person. They reset at midnight UTC"}},"required":["enabled","seconds","dailyUses"],"additionalProperties":false},"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The tool's input as JSON Schema, as POST /api/v1/jobs takes it"}},"required":["id","title","slug","description","creditsPerMinute","free","input"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/quote":{"post":{"operationId":"post_v1_quote","tags":["Tools"],"summary":"Price a tool on some files, and what a free run would cover","security":[{"apiKey":[]},{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"fileIds":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","maxLength":100},"description":"The inputs in the job's order: the main input first, every file for join and for mix tracks, the video then the audio for swap audio, each track to level speakers by tracks"}},"required":["tool","fileIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"seconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The billed length, rounded to the nearest second"},"credits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The price to process all of it"},"free":{"type":"object","properties":{"seconds":{"type":"number","description":"How much a free run processes"},"usesLeftToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["seconds","usesLeftToday"],"additionalProperties":false}},"required":["tool","seconds","credits","free"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files":{"post":{"operationId":"post_v1_files","tags":["Files"],"summary":"Create a file: an upload link, or parts for larger files, plus an upload page for a person","description":"The response has an upload link for one PUT of up to 100 MB (upload), or, when sizeBytes is over 16 MB, parts (multipart): PUT part n to multipart.partUrl with {n} replaced by n, then POST multipart.completeUrl. One token covers every part. Or give uploadPageUrl to a person.","security":[{"apiKey":[]},{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"filename":{"description":"Needed, with sizeBytes, to get a signed upload link now","type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":"string","maxLength":100},"idempotencyKey":{"type":"string","minLength":8,"maxLength":200},"tool":{"description":"The tool the file is for. Only a browser paying without signing in needs it: its uploads are counted like free ones, and a tool that takes several files may have that many waiting","type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false},"upload":{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"PUT"},"url":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["method","url","headers","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"One PUT, up to 100 MB"},"multipart":{"anyOf":[{"type":"object","properties":{"partSizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every part is this size, except the last"},"partCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"partUrl":{"type":"string","description":"Where part n goes (PUT), with {n} in place of the part number, counting from 1"},"completeUrl":{"type":"string","description":"POST here once every part is in. It joins them, or lists the parts that haven't arrived (details.missingParts)"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["partSizeBytes","partCount","partUrl","completeUrl","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"Upload in parts instead, for larger files"},"uploadPageUrl":{"type":"string","description":"A web page where the person can upload this file"}},"required":["file","upload","multipart","uploadPageUrl"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"get_v1_files","tags":["Files"],"summary":"List files, newest first","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 100. Default 20","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"kind","in":"query","required":false,"description":"original (uploads) or output (results)","schema":{"type":"string","enum":["original","output"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files/import":{"post":{"operationId":"post_v1_files_import","tags":["Files"],"summary":"Import a file from a public HTTPS link","description":"Answers within about 20 seconds. The file is processing while it arrives and is checked; GET it with wait until it's ready. Importing the same link again within an hour gives the same file.","security":[{"apiKey":[]},{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":4000,"description":"A public HTTPS link to the file"},"filename":{"description":"Default: taken from the link","type":"string","minLength":1,"maxLength":255}},"required":["url"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files/{id}":{"get":{"operationId":"get_v1_files_id","tags":["Files"],"summary":"Get a file: status, length, format, and each tool's price for it","description":"With wait, answers once the upload has arrived and the file is checked, or after that many seconds.","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"description":"Wait up to this many seconds (at most 40) for a change before answering","schema":{"type":"number","minimum":0,"maximum":40}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"operationId":"delete_v1_files_id","tags":["Files"],"summary":"Delete a file now","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files/{id}/upload":{"post":{"operationId":"post_v1_files_id_upload","tags":["Files"],"summary":"Name a file created without a name and size, and get how to upload it","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":"string","maxLength":100}},"required":["filename","sizeBytes"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false},"upload":{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"PUT"},"url":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["method","url","headers","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"One PUT, up to 100 MB"},"multipart":{"anyOf":[{"type":"object","properties":{"partSizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every part is this size, except the last"},"partCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"partUrl":{"type":"string","description":"Where part n goes (PUT), with {n} in place of the part number, counting from 1"},"completeUrl":{"type":"string","description":"POST here once every part is in. It joins them, or lists the parts that haven't arrived (details.missingParts)"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["partSizeBytes","partCount","partUrl","completeUrl","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"Upload in parts instead, for larger files"}},"required":["file","upload","multipart"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files/{id}/abort":{"post":{"operationId":"post_v1_files_id_abort","tags":["Files"],"summary":"Stop an upload that hasn't completed","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files/{id}/download":{"get":{"operationId":"get_v1_files_id_download","tags":["Files"],"summary":"Get a download link that works for 15 minutes","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"url":{"type":"string"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["fileId","filename","url","expiresAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files/{id}/transcript":{"get":{"operationId":"get_v1_files_id_transcript","tags":["Files"],"summary":"Read part of a transcript file, with times","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start of the window in seconds. Default 0","schema":{"type":"number","minimum":0}},{"name":"to","in":"query","required":false,"description":"End of the window in seconds. Default from + 300","schema":{"type":"number","minimum":0}},{"name":"detail","in":"query","required":false,"description":"concise (sentences) or full (sentences with every word's times)","schema":{"type":"string","enum":["concise","full"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fileId":{"type":"string"},"language":{"type":"string","description":"A language code, such as en"},"fromSeconds":{"type":"number"},"toSeconds":{"type":"number"},"durationSeconds":{"type":"number","description":"The whole transcript's length"},"speakerCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"How many people speak in the whole transcript (0 without speech), or null when it has no speaker labels"},"detail":{"type":"string","enum":["concise","full"]},"sentences":{"type":"array","items":{"type":"object","properties":{"startSeconds":{"type":"number"},"endSeconds":{"type":"number"},"text":{"type":"string"},"speaker":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Who says it: 1, 2, and so on, in the order people first speak"},{"type":"null"}],"description":"Who says it: 1, 2, and so on, in the order people first speak, or null without speaker labels"},"words":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"startSeconds":{"type":"number"},"endSeconds":{"type":"number"},"speaker":{"description":"Who says it, when the transcript has speaker labels: 1, 2, and so on, in the order people first speak","type":"integer","minimum":1,"maximum":9007199254740991},"matched":{"description":"In an aligned script: false when the word wasn't found in the recording","type":"boolean"}},"required":["text","startSeconds","endSeconds"],"additionalProperties":false}}},"required":["startSeconds","endSeconds","text","speaker"],"additionalProperties":false}},"nextFromSeconds":{"description":"Where to read on from, or null at the end","type":["number","null"]}},"required":["fileId","language","fromSeconds","toSeconds","durationSeconds","speakerCount","detail","sentences","nextFromSeconds"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/files/{id}/peaks":{"get":{"operationId":"get_v1_files_id_peaks","tags":["Files"],"summary":"Read a file's waveform: its lowest and highest samples, at 5, 50, or 500 bins a second","description":"Made on first request, which answers with status processing; ask again with wait. Kept and deleted with the file.","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"description":"Wait up to this many seconds (at most 40) for a change before answering","schema":{"type":"number","minimum":0,"maximum":40}},{"name":"level","in":"query","required":false,"description":"Bins a second: 5, 50, 500. Without it, only the description comes back","schema":{"type":"integer","enum":[5,50,500]}},{"name":"first","in":"query","required":false,"description":"The first bin to return. Default 0","schema":{"type":"integer","minimum":0}},{"name":"count","in":"query","required":false,"description":"How many bins, 1 to 16384. Default 4096","schema":{"type":"integer","minimum":1,"maximum":16384}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fileId":{"type":"string"},"status":{"type":"string","enum":["processing","ready","none"],"description":"processing while they're made (ask again, with wait); none when the file has no sound to draw"},"durationSeconds":{"description":"How long the decoded sound is","type":["number","null"]},"peak":{"description":"The loudest sample, 0 to 1","type":["number","null"]},"levels":{"type":"array","items":{"type":"object","properties":{"perSecond":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["perSecond","count"],"additionalProperties":false}},"bins":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"first":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"data":{"type":"string","description":"Base64 of count pairs of signed bytes: min, then max"}},"required":["level","first","count","data"],"additionalProperties":false},{"type":"null"}],"description":"The bins asked for with level, first, and count, once ready"}},"required":["fileId","status","durationSeconds","peak","levels","bins"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/jobs":{"post":{"operationId":"post_v1_jobs","tags":["Jobs"],"summary":"Start a tool on files","description":"The body is the tool's ID and its input in snake_case, such as {\"tool\": \"remove_noise\", \"file_id\": \"file_8Kc2QmP4\", \"idempotency_key\": \"<a new UUID>\"}. The price is reserved now and charged only if the job succeeds. Add max_credits to cap it, or \"free\": true for the free part. The Idempotency-Key header works in place of idempotency_key.","security":[{"apiKey":[]},{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"noise_reduction":{"default":100,"description":"How much of the noise to turn down, as a percentage. 100 turns down all it can; lower values keep some of the background. Default 100.","type":"integer","minimum":10,"maximum":100},"auto_volume":{"default":true,"description":"Sets the whole file to -16 LUFS with one gain, and limits peaks to -1 dBTP. It doesn't balance loud and quiet speakers. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first minute, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first minute free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"remove_noise"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"noise_reduction":{"default":100,"description":"How much of the regenerated voice to use, as a percentage. 100 uses all of it; lower values mix back some of the original sound. Default 100.","type":"integer","minimum":10,"maximum":100},"auto_volume":{"default":true,"description":"Sets the whole file to -16 LUFS with one gain, and limits peaks to -1 dBTP. It doesn't balance loud and quiet speakers. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first minute, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first minute free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"enhance_voice"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"language":{"description":"The spoken language, as a code such as en or ja. Default: detected.","type":"string","pattern":"^[a-z]{2,3}$"},"verbatim":{"default":true,"description":"Keeps filler words such as um and uh, so they can be cut later. Default true.","type":"boolean"},"speaker_labels":{"default":true,"description":"Labels who speaks when: Speaker 1, Speaker 2, and so on, in the order they first speak, up to 8 people. No names. Default true.","type":"boolean"},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"transcribe_audio"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"text":{"description":"The script as plain text, SRT, or VTT, up to 2 MB, such as \"Welcome back to the show.\" Pass text or script_file_id, not both.","type":"string","minLength":1,"maxLength":2097152},"script_file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"An uploaded script file (TXT, SRT, or VTT), such as file_3Jd9RtY2. Pass text or script_file_id, not both."},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"align_script"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"ranges":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":36000},{"type":"number","minimum":0,"maximum":36000}],"items":false,"minItems":2,"maxItems":2},"description":"Time ranges as [start, end] pairs in seconds, such as [[0, 12.5], [300, 312]]. 1 to 100 ranges."},"mode":{"default":"remove","description":"remove deletes the ranges; keep keeps only the ranges. Default remove.","type":"string","enum":["remove","keep"]},"output":{"default":"joined","description":"joined makes one file; separate makes one file per range. Default joined.","type":"string","enum":["joined","separate"]},"crossfade_ms":{"default":20,"description":"A crossfade at each cut, in milliseconds (0 to 200), such as 20. Default 20.","type":"integer","minimum":0,"maximum":200},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"cut_audio"}},"required":["file_id","idempotency_key","ranges","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"min_pause_seconds":{"default":0.7,"description":"Shortens pauses at least this long, in seconds (0.3 to 5), such as 0.7. Default 0.7.","type":"number","minimum":0.3,"maximum":5},"keep_seconds":{"default":0.25,"description":"How much of each pause to keep, in seconds (0 to 1), such as 0.25. Default 0.25.","type":"number","minimum":0,"maximum":1},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"remove_silence"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"target":{"default":"podcast","description":"Where it's going: podcast (-16 LUFS), streaming (-14 LUFS), broadcast (-23 LUFS), audiobook (ACX checks), or custom (set custom_lufs). Default podcast.","type":"string","enum":["podcast","streaming","broadcast","audiobook","custom"]},"custom_lufs":{"description":"The loudness for target custom, in LUFS (-30 to -5), such as -18.","type":"number","minimum":-30,"maximum":-5},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"adjust_loudness"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The file to convert, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"format":{"default":"mp3","description":"The format to convert to: mp3, wav, m4a, flac, ogg, or opus. Default mp3.","type":"string","enum":["mp3","wav","m4a","flac","ogg","opus"]},"bitrate_kbps":{"description":"The bitrate for mp3, m4a, ogg, or opus, in kbps (16 to 320), such as 128. Default: chosen for the format.","type":"integer","minimum":16,"maximum":320},"sample_rate":{"description":"The sample rate in Hz, such as 44100. Default: the input's.","type":"number","enum":[8000,16000,22050,24000,32000,44100,48000]},"channels":{"description":"mono or stereo. Default: the input's.","type":"string","enum":["mono","stereo"]},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"convert_audio"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_ids":{"minItems":2,"maxItems":20,"type":"array","items":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"A file ID, such as file_8Kc2QmP4."},"description":"The files to join, in order, such as [\"file_8Kc2QmP4\", \"file_3Jd9RtY2\"]. 2 to 20 files."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"crossfade_ms":{"default":0,"description":"A crossfade between files, in milliseconds (0 to 5000), such as 500. Default 0.","type":"integer","minimum":0,"maximum":5000},"match_loudness":{"default":true,"description":"Matches the files' loudness before joining. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the first file), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first hour of the result, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour of the result free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"join_audio"}},"required":["file_ids","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"video_file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The video that gets the new soundtrack, such as file_8Kc2QmP4."},"audio_file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The new soundtrack, such as file_3Jd9RtY2."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"offset_seconds":{"default":0,"description":"When the new audio starts against the picture, in seconds, such as 0.5 (later) or -0.5 (earlier). Default 0.","type":"number","minimum":-36000,"maximum":36000},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"replace_audio"}},"required":["video_file_id","audio_file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The file to inspect, audio or video, such as file_8Kc2QmP4."},"detail":{"default":"concise","description":"concise lists up to 50 silent stretches; full lists them all. Default concise.","type":"string","enum":["concise","full"]},"tool":{"type":"string","const":"analyze_audio"}},"required":["file_id","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The recording, audio or video, such as file_8Kc2QmP4."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"transcript_file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"A verbatim transcript of this recording: the JSON file from transcribe_audio or an earlier remove_fillers run, such as file_3Jd9RtY2. It isn't transcribed again, so the job costs 1 credit a minute instead of 2. Needed with cut_ids."},"dry_run":{"default":false,"description":"true lists the cuts it would make, with their IDs, and makes no audio. Default false.","type":"boolean"},"cut_ids":{"description":"Makes only these cuts, by ID from a dry run of the same transcript, such as [\"c1\", \"c4\"]. Needs transcript_file_id. Default: every cut.","minItems":1,"maxItems":5000,"type":"array","items":{"type":"string","pattern":"^c[0-9]{1,5}$"}},"repeats":{"default":true,"description":"Also cuts a word or phrase of up to 3 words said twice in a row, keeping the second (\"the the\" becomes \"the\"). Default true.","type":"boolean"},"language":{"description":"The spoken language, as a code such as en or de. It picks the filler words: en, de, fr, es, it, nl, ja, or ko. Default: detected.","type":"string","pattern":"^[a-z]{2,3}$"},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"remove_fillers"}},"required":["file_id","idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"One recording with everyone in it, audio or video, such as file_8Kc2QmP4. Pass file_id or track_file_ids, not both."},"track_file_ids":{"description":"Per-person tracks instead, one speaker each, such as [\"file_8Kc2QmP4\", \"file_3Jd9RtY2\"]. 2 to 10 tracks; each comes back leveled as its own file.","minItems":2,"maxItems":10,"type":"array","items":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"A file ID, such as file_8Kc2QmP4."}},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"target":{"default":"podcast","description":"The loudness it finishes at: podcast (-16 LUFS), streaming (-14 LUFS), broadcast (-23 LUFS), or custom (set custom_lufs). Default podcast.","type":"string","enum":["podcast","streaming","broadcast","custom"]},"custom_lufs":{"description":"The loudness for target custom, in LUFS (-30 to -5), such as -18.","type":"number","minimum":-30,"maximum":-5},"within_speaker":{"default":false,"description":"Also evens out slow changes within each speaker, such as leaning away from the mic: up to 6 dB, measured on their speech only and held through pauses. Default false.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first 3 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 3 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"level_speakers"}},"required":["idempotency_key","tool"],"additionalProperties":false},{"type":"object","properties":{"tracks":{"minItems":2,"maxItems":20,"type":"array","items":{"type":"object","properties":{"file_id":{"type":"string","maxLength":100,"pattern":"^file_[A-Za-z0-9]+$","description":"The track, such as file_8Kc2QmP4."},"volume_db":{"default":0,"description":"The track's volume change in dB (-60 to 24), such as -12. Default 0.","type":"number","minimum":-60,"maximum":24},"start_seconds":{"default":0,"description":"Where the track starts in the mix, in seconds, such as 4.5. Default 0. With align, only the earliest aligned track's is used.","type":"number","minimum":0,"maximum":36000},"role":{"description":"voice or music: align lines up voice tracks, and duck lowers music under voice. Default none.","type":"string","enum":["voice","music"]}},"required":["file_id"],"additionalProperties":false},"description":"The tracks, such as [{\"file_id\": \"file_8Kc2QmP4\", \"role\": \"voice\"}, {\"file_id\": \"file_3Jd9RtY2\", \"role\": \"music\", \"volume_db\": -6}]. 2 to 20."},"idempotency_key":{"type":"string","minLength":1,"maxLength":200,"description":"A new random key for this request, such as a UUID. Reuse it only to retry the same request, so it's never charged twice."},"align":{"default":false,"description":"Lines up tracks recorded at the same time (the voice tracks, or every track when none has a role) by their sound, and corrects clock drift. Default false.","type":"boolean"},"duck":{"default":false,"description":"Lowers music tracks while a voice track speaks. Needs a voice and a music track. Default false.","type":"boolean"},"duck_gap_lu":{"default":12,"description":"With duck, how far under the speech the music sits, in LU (6 to 30), such as 12. Default 12.","type":"number","minimum":6,"maximum":30},"loudness":{"default":"none","description":"A loudness for the mix: none (the tracks as set, lowered only if it would clip), podcast (-16 LUFS), streaming (-14), or broadcast (-23). Default none.","type":"string","enum":["none","podcast","streaming","broadcast"]},"output_format":{"default":"same","description":"The mix's format: same (as the first track's audio), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"true processes only the first 3 minutes of the mix, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 3 minutes of the mix free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"tool":{"type":"string","const":"mix_tracks"}},"required":["tracks","idempotency_key","tool"],"additionalProperties":false}]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"A job held for payment: the page where the whole file can run, or null once its files are gone","type":["string","null"]}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"get_v1_jobs","tags":["Jobs"],"summary":"List jobs, newest first","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 100. Default 20","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"tool","in":"query","required":false,"description":"Only this tool's jobs, such as remove_noise","schema":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"A job held for payment: the page where the whole file can run, or null once its files are gone","type":["string","null"]}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/jobs/{id}":{"get":{"operationId":"get_v1_jobs_id","tags":["Jobs"],"summary":"Get a job's status, progress, outputs, and result","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"description":"Wait up to this many seconds (at most 40) for a change before answering","schema":{"type":"number","minimum":0,"maximum":40}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"A job held for payment: the page where the whole file can run, or null once its files are gone","type":["string","null"]}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/jobs/{id}/claim":{"post":{"operationId":"post_v1_jobs_id_claim","tags":["Jobs"],"summary":"Keep a free run from before signing in: the job, the files it read, and the files it made move into the account","description":"token is the t= of the run's status link (statusUrl). Only a run that succeeded, while its files are kept; they're then kept for 24 hours. Claiming it again returns the job. Only for a person signed in on the website.","security":[{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"token":{"type":"string","minLength":1,"description":"The t= of the free API job's status link"}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"A job held for payment: the page where the whole file can run, or null once its files are gone","type":["string","null"]}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/jobs/{id}/cancel":{"post":{"operationId":"post_v1_jobs_id_cancel","tags":["Jobs"],"summary":"Cancel a job that hasn't finished. A cancelled job costs nothing","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"A job held for payment: the page where the whole file can run, or null once its files are gone","type":["string","null"]}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/account":{"get":{"operationId":"get_v1_account","tags":["Account"],"summary":"Get the balance, prices, free uses left today, and limits","security":[{"apiKey":[]},{"session":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"email":{"type":["string","null"]},"balanceCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits in the account"},"reservedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Held for jobs that are still running"},"availableCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What new jobs can spend"},"balanceCents":{"description":"The balance in US cents (equal to balanceCredits)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"availableCents":{"description":"What new jobs can spend, in US cents (equal to availableCredits)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsPerMinute":{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"],"description":"Each tool's price per minute of input, in credits (US cents)"},"freeUsesToday":{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"object","properties":{"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["available","used_up","paused","off"],"description":"available; used_up: this caller's free uses are gone until midnight UTC; paused: today's free budget for everyone is spent, until midnight UTC; off: free use of the tool is switched off until we turn it back on"}},"required":["used","limit","status"],"additionalProperties":false},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"],"description":"Free uses of each tool today. They reset at midnight UTC"},"limits":{"type":"object","properties":{"maxFileBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxDurationSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRunningJobs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["maxFileBytes","maxDurationSeconds","maxRunningJobs"],"additionalProperties":false},"retentionHours":{"type":"number"},"topUpUrl":{"type":"string","description":"The Credits page, where the person buys credits on the website"},"pricingUrl":{"description":"The pricing page: each tool's price per minute","type":"string"},"useCase":{"description":"The answer to \"What will you use Audo for?\": null until answered, an empty string when skipped","type":["string","null"]},"toolsUsed":{"type":"array","items":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"description":"Tools this account has a finished, successful job for, in catalog order"},"autoRefill":{"type":"object","properties":{"enabled":{"type":"boolean"},"thresholdCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Refill when the available balance drops below this, in US cents"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What each refill adds to the balance, in US cents (tax, if any, is charged on top)"},"monthlyCapCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The most charged for refills in a calendar month (UTC), in US cents before tax"},"spentThisMonthCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Charged for refills this calendar month, in US cents before tax"},"card":{"anyOf":[{"type":"object","properties":{"brand":{"type":["string","null"]},"last4":{"type":["string","null"]}},"required":["brand","last4"],"additionalProperties":false},{"type":"null"}],"description":"The saved card, or null"},"disabledReason":{"anyOf":[{"type":"string","enum":["card_declined","authentication_required","payment_failed","disputed"]},{"type":"null"}],"description":"Why auto-refill turned itself off, or null: card_declined, authentication_required, payment_failed, or disputed"},"setupUrl":{"type":"string","description":"Where a person turns auto-refill on or changes it"}},"required":["enabled","thresholdCents","amountCents","monthlyCapCents","spentThisMonthCents","card","disabledReason","setupUrl"],"additionalProperties":false},"createdAt":{"type":"string","description":"ISO 8601 time"},"marketingOptIn":{"description":"Whether the person asked for emails about new tools and tips","type":"boolean"},"recordingReminders":{"description":"Whether the person gets reminders about their recordings, such as one waiting to be finished (on until they turn it off)","type":"boolean"},"heardFrom":{"description":"The answer to \"How did you hear about Audo?\", or null until answered","anyOf":[{"type":"string","enum":["google","assistant","youtube","friend","reddit","studio","other"]},{"type":"null"}]},"firstPurchaseAt":{"description":"When the account first paid (a credit pack or an auto-refill), or null","anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"anonymous":{"description":"True for a browser that paid without signing in: it shows no balance, and its credits are kept for the email it paid with until someone signs in with it","type":"boolean"},"savedFor":{"description":"For a browser that paid without signing in: the email its credits are kept for, masked (m•••@gmail.com), or null","type":["string","null"]},"savedForEmail":{"description":"For a browser that paid without signing in: that email as it typed it, to fill in its sign-in","type":["string","null"]}},"required":["id","email","balanceCredits","reservedCredits","availableCredits","creditsPerMinute","freeUsesToday","limits","retentionHours","topUpUrl","useCase","toolsUsed"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"operationId":"patch_v1_account","tags":["Account"],"summary":"Save the sign-up answer, the email opt-in, and how the person heard about Audo","description":"Send any of the fields; the ones left out don't change. Only for a person signed in on the website.","security":[{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"useCase":{"description":"What the person will use Audo for. null or an empty string records that they skipped the question","anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"marketingOptIn":{"description":"true to get emails about new tools and tips, false to stop them","type":"boolean"},"marketingOptInSource":{"description":"With marketingOptIn: where it was given, such as settings","type":"string","maxLength":40,"pattern":"^[a-z_:]+$"},"recordingReminders":{"description":"true to get reminders about recordings, false to stop them","type":"boolean"},"heardFrom":{"description":"The answer to \"How did you hear about Audo?\"","type":"string","enum":["google","assistant","youtube","friend","reddit","studio","other"]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"email":{"type":["string","null"]},"balanceCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits in the account"},"reservedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Held for jobs that are still running"},"availableCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What new jobs can spend"},"balanceCents":{"description":"The balance in US cents (equal to balanceCredits)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"availableCents":{"description":"What new jobs can spend, in US cents (equal to availableCredits)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsPerMinute":{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"],"description":"Each tool's price per minute of input, in credits (US cents)"},"freeUsesToday":{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"object","properties":{"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["available","used_up","paused","off"],"description":"available; used_up: this caller's free uses are gone until midnight UTC; paused: today's free budget for everyone is spent, until midnight UTC; off: free use of the tool is switched off until we turn it back on"}},"required":["used","limit","status"],"additionalProperties":false},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"],"description":"Free uses of each tool today. They reset at midnight UTC"},"limits":{"type":"object","properties":{"maxFileBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxDurationSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxRunningJobs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["maxFileBytes","maxDurationSeconds","maxRunningJobs"],"additionalProperties":false},"retentionHours":{"type":"number"},"topUpUrl":{"type":"string","description":"The Credits page, where the person buys credits on the website"},"pricingUrl":{"description":"The pricing page: each tool's price per minute","type":"string"},"useCase":{"description":"The answer to \"What will you use Audo for?\": null until answered, an empty string when skipped","type":["string","null"]},"toolsUsed":{"type":"array","items":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"description":"Tools this account has a finished, successful job for, in catalog order"},"autoRefill":{"type":"object","properties":{"enabled":{"type":"boolean"},"thresholdCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Refill when the available balance drops below this, in US cents"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What each refill adds to the balance, in US cents (tax, if any, is charged on top)"},"monthlyCapCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The most charged for refills in a calendar month (UTC), in US cents before tax"},"spentThisMonthCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Charged for refills this calendar month, in US cents before tax"},"card":{"anyOf":[{"type":"object","properties":{"brand":{"type":["string","null"]},"last4":{"type":["string","null"]}},"required":["brand","last4"],"additionalProperties":false},{"type":"null"}],"description":"The saved card, or null"},"disabledReason":{"anyOf":[{"type":"string","enum":["card_declined","authentication_required","payment_failed","disputed"]},{"type":"null"}],"description":"Why auto-refill turned itself off, or null: card_declined, authentication_required, payment_failed, or disputed"},"setupUrl":{"type":"string","description":"Where a person turns auto-refill on or changes it"}},"required":["enabled","thresholdCents","amountCents","monthlyCapCents","spentThisMonthCents","card","disabledReason","setupUrl"],"additionalProperties":false},"createdAt":{"type":"string","description":"ISO 8601 time"},"marketingOptIn":{"description":"Whether the person asked for emails about new tools and tips","type":"boolean"},"recordingReminders":{"description":"Whether the person gets reminders about their recordings, such as one waiting to be finished (on until they turn it off)","type":"boolean"},"heardFrom":{"description":"The answer to \"How did you hear about Audo?\", or null until answered","anyOf":[{"type":"string","enum":["google","assistant","youtube","friend","reddit","studio","other"]},{"type":"null"}]},"firstPurchaseAt":{"description":"When the account first paid (a credit pack or an auto-refill), or null","anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"anonymous":{"description":"True for a browser that paid without signing in: it shows no balance, and its credits are kept for the email it paid with until someone signs in with it","type":"boolean"},"savedFor":{"description":"For a browser that paid without signing in: the email its credits are kept for, masked (m•••@gmail.com), or null","type":["string","null"]},"savedForEmail":{"description":"For a browser that paid without signing in: that email as it typed it, to fill in its sign-in","type":["string","null"]}},"required":["id","email","balanceCredits","reservedCredits","availableCredits","creditsPerMinute","freeUsesToday","limits","retentionHours","topUpUrl","useCase","toolsUsed"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"operationId":"delete_v1_account","tags":["Account"],"summary":"Delete the account, its files, and its sign-in","description":"Needs a sign-in within the last day. Only for a person signed in on the website.","security":[{"session":[]}],"responses":{"204":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/account/kept":{"get":{"operationId":"get_v1_account_kept","tags":["Account"],"summary":"Get the credits a sign-in just brought in from purchases made without signing in","description":"What came in during the last 15 minutes, and whether the account was there before those purchases. Needs a sign-in, not a browser that only paid. Only for a person signed in on the website.","security":[{"session":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"credits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits that came in from those purchases in the last 15 minutes (1 credit is 1 cent)"},"existed":{"type":"boolean","description":"Whether the account was there before them"}},"required":["credits","existed"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/ledger":{"get":{"operationId":"get_v1_ledger","tags":["Account"],"summary":"List credit history","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1 to 100. Default 20","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["topup","grant","capture","refund","adjustment","auto_refill","transfer"]},"amountCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":{"type":"string"},"jobId":{"type":["string","null"]},"receiptUrl":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","amountCredits","description","jobId","receiptUrl","createdAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/checkout":{"post":{"operationId":"post_v1_checkout","tags":["Account"],"summary":"Start buying a credit pack","description":"Stripe's page (url) takes payment for an hour, then comes back to the page returnTo names (returnTo tool: returnPath) with checkout=<id>, or cancelled=1. An unpaid checkout then reads expired. Only for a person signed in on the website.","security":[{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"returnTo":{"description":"Where checkout comes back to: credits (the default), api, or tool","type":"string","enum":["credits","api","tool","page","finish"]},"returnPath":{"description":"With returnTo tool: the app's tool page, such as /tools/audio-enhancer or /tools/audio-enhancer?job=job_…, or the app's Editor, /editor","type":"string","maxLength":200},"tool":{"description":"The tool the credits are for, when a tool page asked","type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"jobId":{"description":"The job the credits are for, such as the free run being finished","type":"string","pattern":"^job_[0-9a-z]{24}$"},"from":{"description":"Where the checkout was opened: pay_sheet, credits, keys, assistant, or finish_link","type":"string","enum":["pay_sheet","credits","keys","assistant","finish_link"]},"finishToken":{"description":"With jobId: the free run's status link token or finish link token. Once paid, the whole file of that run starts by itself","type":"string","maxLength":300},"run":{"description":"A run to start once paid, for files already in the account that haven't run: the tool request (as POST /jobs takes it) without idempotency_key","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["amountCents"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","description":"The checkout, to ask whether it's paid"},"url":{"type":"string","description":"Stripe's checkout page, or the simulated one in local development"},"simulated":{"type":"boolean","description":"Local development: no real payment, and the website completes it itself"}},"required":["id","url","simulated"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/checkout/{id}":{"get":{"operationId":"get_v1_checkout_id","tags":["Account"],"summary":"Get a credit purchase","description":"While it's open, Stripe is asked too, so a paid checkout is completed and credited at once.","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The price in US cents"},"credits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The credits it adds"},"status":{"type":"string","enum":["open","completed","expired"]},"provider":{"type":"string","enum":["stripe","dev"]},"processing":{"description":"Open, with a payment on its way that hasn't arrived yet (a bank debit, say)","type":"boolean"},"runJobId":{"description":"The whole-file job this purchase started, once paid","type":["string","null"]},"runError":{"description":"Why the purchase's run couldn't start (such as file_expired); the credits are kept","type":["string","null"]},"savedFor":{"description":"Paid without signing in: the email the credits are kept for, masked","type":["string","null"]},"leftCents":{"description":"Paid without signing in, once its run is done: what the purchase left over, in US cents","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"paidTotal":{"description":"Once paid: what the buyer was charged, tax included, in the currency they paid in (null when the payment provider didn't say)","anyOf":[{"type":"object","properties":{"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"In the currency's smallest unit, such as cents"},"currency":{"type":"string","description":"ISO 4217, lowercase, such as usd or eur"}},"required":["amount","currency"],"additionalProperties":false},{"type":"null"}]}},"required":["id","amountCents","credits","status","provider"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/checkout/{id}/receipt":{"get":{"operationId":"get_v1_checkout_id_receipt","tags":["Account"],"summary":"Open a credit purchase's receipt","description":"Redirects to the payment provider's receipt. A ledger entry for a purchase links here as receiptUrl.","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/auto-refill":{"get":{"operationId":"get_v1_auto_refill","tags":["Account"],"summary":"Get auto-refill: when the balance drops below a threshold, Audo charges the saved card for more credits","description":"Read-only with a key or an assistant. Only a person signed in at audo.ai can turn it on, change it, or turn it off, at setupUrl.","security":[{"apiKey":[]},{"session":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"thresholdCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Refill when the available balance drops below this, in US cents"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What each refill adds to the balance, in US cents (tax, if any, is charged on top)"},"monthlyCapCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The most charged for refills in a calendar month (UTC), in US cents before tax"},"spentThisMonthCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Charged for refills this calendar month, in US cents before tax"},"card":{"anyOf":[{"type":"object","properties":{"brand":{"type":["string","null"]},"last4":{"type":["string","null"]}},"required":["brand","last4"],"additionalProperties":false},{"type":"null"}],"description":"The saved card, or null"},"disabledReason":{"anyOf":[{"type":"string","enum":["card_declined","authentication_required","payment_failed","disputed"]},{"type":"null"}],"description":"Why auto-refill turned itself off, or null: card_declined, authentication_required, payment_failed, or disputed"},"setupUrl":{"type":"string","description":"Where a person turns auto-refill on or changes it"}},"required":["enabled","thresholdCents","amountCents","monthlyCapCents","spentThisMonthCents","card","disabledReason","setupUrl"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"operationId":"patch_v1_auto_refill","tags":["Account"],"summary":"Change auto-refill, or turn it on or off. Turning on needs a saved card","description":"Only for a person signed in on the website.","security":[{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"thresholdCents":{"type":"integer","minimum":100,"maximum":100000},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"monthlyCapCents":{"type":"integer","minimum":1000,"maximum":500000}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"thresholdCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Refill when the available balance drops below this, in US cents"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What each refill adds to the balance, in US cents (tax, if any, is charged on top)"},"monthlyCapCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The most charged for refills in a calendar month (UTC), in US cents before tax"},"spentThisMonthCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Charged for refills this calendar month, in US cents before tax"},"card":{"anyOf":[{"type":"object","properties":{"brand":{"type":["string","null"]},"last4":{"type":["string","null"]}},"required":["brand","last4"],"additionalProperties":false},{"type":"null"}],"description":"The saved card, or null"},"disabledReason":{"anyOf":[{"type":"string","enum":["card_declined","authentication_required","payment_failed","disputed"]},{"type":"null"}],"description":"Why auto-refill turned itself off, or null: card_declined, authentication_required, payment_failed, or disputed"},"setupUrl":{"type":"string","description":"Where a person turns auto-refill on or changes it"}},"required":["enabled","thresholdCents","amountCents","monthlyCapCents","spentThisMonthCents","card","disabledReason","setupUrl"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/auto-refill/setup":{"post":{"operationId":"post_v1_auto_refill_setup","tags":["Account"],"summary":"Save auto-refill's settings and open a checkout that saves a card; auto-refill turns on when it completes","description":"Only for a person signed in on the website.","security":[{"session":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"thresholdCents":{"type":"integer","minimum":100,"maximum":100000},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"monthlyCapCents":{"type":"integer","minimum":1000,"maximum":500000}},"required":["thresholdCents","amountCents","monthlyCapCents"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string"},"chargeCents":{"description":"What the page charges now, in US cents before tax, or null when it only saves the card","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["url"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/auto-refill/charges/{id}/receipt":{"get":{"operationId":"get_v1_auto_refill_charges_id_receipt","tags":["Account"],"summary":"Open an auto-refill charge's receipt","description":"Redirects to the paid invoice. A ledger entry for an auto-refill links here as receiptUrl.","security":[{"apiKey":[]},{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/api-keys":{"get":{"operationId":"get_v1_api_keys","tags":["Account"],"summary":"List API keys","description":"Only for a person signed in on the website.","security":[{"session":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":["string","null"]},"start":{"description":"The first characters of the key, to recognize it","type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"lastUsedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]}},"required":["id","name","start","createdAt","lastUsedAt","expiresAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"operationId":"post_v1_api_keys","tags":["Account"],"summary":"Create an API key. The key is shown once","description":"Only for a person signed in on the website.","security":[{"session":[]}],"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":60}},"required":["name"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"name":{"type":["string","null"]},"start":{"description":"The first characters of the key, to recognize it","type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"lastUsedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"key":{"type":"string","description":"The full key. It is shown only once."}},"required":["id","name","start","createdAt","lastUsedAt","expiresAt","key"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/api-keys/{id}":{"delete":{"operationId":"delete_v1_api_keys_id","tags":["Account"],"summary":"Revoke an API key","description":"Only for a person signed in on the website.","security":[{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/agents":{"get":{"operationId":"get_v1_agents","tags":["Account"],"summary":"List connected assistants and API keys","description":"Only for a person signed in on the website.","security":[{"session":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["oauth","api_key"]},"name":{"type":"string"},"detail":{"type":["string","null"]},"scopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","description":"ISO 8601 time"},"lastUsedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]}},"required":["id","type","name","detail","scopes","createdAt","lastUsedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/agents/{id}":{"delete":{"operationId":"delete_v1_agents_id","tags":["Account"],"summary":"Disconnect an assistant","description":"Only for a person signed in on the website.","security":[{"session":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/email/c/{id}":{"get":{"operationId":"get_v1_email_c_id","tags":["Account"],"summary":"Follow an email's button","description":"The link in an email Audo sent a person. Redirects to a page on the website.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"responses":{"302":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/email/unsubscribe":{"post":{"operationId":"post_v1_email_unsubscribe","tags":["Account"],"summary":"Stop Audo's emails about a person's files and tips","description":"One-click unsubscribe (List-Unsubscribe-Post), with the token from an email's unsubscribe link.","security":[],"parameters":[{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"unsubscribed":{"type":"boolean","const":true}},"required":["unsubscribed"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/usage":{"get":{"operationId":"get_try_usage","tags":["Free API"],"summary":"Free uses of each tool left today, for whoever is calling","security":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"object","properties":{"used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"0 while free use of the tool is switched off"},"status":{"type":"string","enum":["available","used_up","paused","off"],"description":"available; used_up: this caller's free uses are gone until midnight UTC; paused: today's free budget for everyone is spent, until midnight UTC; off: free use of the tool is switched off until we turn it back on"},"resetsAt":{"type":"string","description":"ISO 8601 time"}},"required":["used","limit","status","resetsAt"],"additionalProperties":false},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/uploads":{"post":{"operationId":"post_try_uploads","tags":["Free API"],"summary":"Upload a file before the request that uses it","description":"What the website does without an account: the tool's free uses are checked first, then the file goes in parts (multipart), and the request sends fileToken as file_token (video_token, audio_token, or script_token for those inputs) instead of the file. One upload serves any tool's runs for the hour its token works, each counted against its own tool's free uses; a file a run has used no longer counts as waiting. A run that can't use an uploaded file names it in details.fileId. Without a key, an address may have only 3 uploaded files waiting for a run at once (its network 10, and always one run's files): past that, completing the upload is refused (429, and the file is deleted), and so is asking for another. Uploads that didn't finish don't count.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tool":{"type":"string","maxLength":40,"description":"The free tool the file is for, by its slug, such as remove-noise"},"filename":{"type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":"string","maxLength":100}},"required":["tool","filename","sizeBytes"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false},"upload":{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"PUT"},"url":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["method","url","headers","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"One PUT, up to 100 MB"},"multipart":{"anyOf":[{"type":"object","properties":{"partSizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every part is this size, except the last"},"partCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"partUrl":{"type":"string","description":"Where part n goes (PUT), with {n} in place of the part number, counting from 1"},"completeUrl":{"type":"string","description":"POST here once every part is in. It joins them, or lists the parts that haven't arrived (details.missingParts)"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["partSizeBytes","partCount","partUrl","completeUrl","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"Upload in parts instead, for larger files"},"fileToken":{"type":"string","description":"Once the file is uploaded, send this as file_token (video_token, audio_token, or script_token for those inputs) to POST /api/try/<slug>, for any tool and more than one run: each run counts against its own tool's free uses. It works for 1 hour"}},"required":["file","upload","multipart","fileToken"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/jobs/{id}":{"get":{"operationId":"get_try_jobs_id","tags":["Free API"],"summary":"Check on a free API job through its link","description":"The link comes in a 202 response's Location header and statusUrl. Once the job succeeds, outputs has download links.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"description":"Wait up to this many seconds (at most 40) for a change before answering","schema":{"type":"number","minimum":0,"maximum":40}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/jobs/{id}/finish":{"get":{"operationId":"get_try_jobs_id_finish","tags":["Free API"],"summary":"A free result's finish page, as data","description":"What the finish link's page shows: the whole length, what the free run did, the price in credits (1 credit is 1 US cent), and how finishing is going (open, expired, finishing, done, failed). t is the finish link's token (or the status link's). A wrong or expired token reads as expired. People pay on the page itself (finishUrl); agents give them the link and keep checking the status link, whose finishedBy names the whole-file job once paid.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}},{"name":"checkout","in":"query","required":false,"description":"A checkout opened for this job on the finish page","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"state":{"type":"string","enum":["open","expired","finishing","done","failed"]},"jobId":{"type":"string"},"tool":{"anyOf":[{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}]},"totalSeconds":{"description":"The whole file's billed length","type":["number","null"]},"processedSeconds":{"description":"What the free run did","type":["number","null"]},"priceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"What the whole file costs, in credits (1 credit is 1 cent)"},"accountJob":{"type":"boolean"},"firstPack":{"description":"For a run of a person's account: whether that account may still buy the first-purchase pack (the credits go there). Null when whoever pays decides, by their own purchases","type":["boolean","null"]},"checkout":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The price in US cents"},"credits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The credits it adds"},"status":{"type":"string","enum":["open","completed","expired"]},"provider":{"type":"string","enum":["stripe","dev"]},"processing":{"description":"Open, with a payment on its way that hasn't arrived yet (a bank debit, say)","type":"boolean"},"runJobId":{"description":"The whole-file job this purchase started, once paid","type":["string","null"]},"runError":{"description":"Why the purchase's run couldn't start (such as file_expired); the credits are kept","type":["string","null"]},"savedFor":{"description":"Paid without signing in: the email the credits are kept for, masked","type":["string","null"]},"leftCents":{"description":"Paid without signing in, once its run is done: what the purchase left over, in US cents","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"paidTotal":{"description":"Once paid: what the buyer was charged, tax included, in the currency they paid in (null when the payment provider didn't say)","anyOf":[{"type":"object","properties":{"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"In the currency's smallest unit, such as cents"},"currency":{"type":"string","description":"ISO 4217, lowercase, such as usd or eur"}},"required":["amount","currency"],"additionalProperties":false},{"type":"null"}]}},"required":["id","amountCents","credits","status","provider"],"additionalProperties":false},{"type":"null"}]},"preview":{"description":"While it's open, the free part to listen to: the whole recording the agent sent (the page plays its free part) and what the free run made (links work for 15 minutes)","anyOf":[{"type":"object","properties":{"originalUrl":{"type":"string"},"resultUrl":{"type":"string"},"hasVideo":{"type":"boolean"}},"required":["originalUrl","resultUrl","hasVideo"],"additionalProperties":false},{"type":"null"}]},"wholeJob":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"]},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","status","progress","stage","estimatedSecondsLeft"],"additionalProperties":false},{"type":"null"}]}},"required":["state","jobId","tool","totalSeconds","processedSeconds","priceCredits","accountJob","checkout","wholeJob"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/jobs/{id}/finish/peaks":{"get":{"operationId":"get_try_jobs_id_finish_peaks","tags":["Free API"],"summary":"The waveform of the recording a finish page plays","description":"Read-only, through the finish link's token, while the run is open to finish: the recording's peaks, as GET /api/v1/files/{id}/peaks returns them.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"description":"Wait up to this many seconds (at most 40) for a change before answering","schema":{"type":"number","minimum":0,"maximum":40}},{"name":"level","in":"query","required":false,"description":"Bins a second: 5, 50, 500. Without it, only the description comes back","schema":{"type":"integer","enum":[5,50,500]}},{"name":"first","in":"query","required":false,"description":"The first bin to return. Default 0","schema":{"type":"integer","minimum":0}},{"name":"count","in":"query","required":false,"description":"How many bins, 1 to 16384. Default 4096","schema":{"type":"integer","minimum":1,"maximum":16384}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fileId":{"type":"string"},"status":{"type":"string","enum":["processing","ready","none"],"description":"processing while they're made (ask again, with wait); none when the file has no sound to draw"},"durationSeconds":{"description":"How long the decoded sound is","type":["number","null"]},"peak":{"description":"The loudest sample, 0 to 1","type":["number","null"]},"levels":{"type":"array","items":{"type":"object","properties":{"perSecond":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["perSecond","count"],"additionalProperties":false}},"bins":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"first":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"data":{"type":"string","description":"Base64 of count pairs of signed bytes: min, then max"}},"required":["level","first","count","data"],"additionalProperties":false},{"type":"null"}],"description":"The bins asked for with level, first, and count, once ready"}},"required":["fileId","status","durationSeconds","peak","levels","bins"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/jobs/{id}/transcript":{"get":{"operationId":"get_try_jobs_id_transcript","tags":["Free API"],"summary":"Read part of a free job's transcript, with times","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start of the window in seconds. Default 0","schema":{"type":"number","minimum":0}},{"name":"to","in":"query","required":false,"description":"End of the window in seconds. Default from + 300","schema":{"type":"number","minimum":0}},{"name":"detail","in":"query","required":false,"description":"concise (sentences) or full (sentences with every word's times)","schema":{"type":"string","enum":["concise","full"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fileId":{"type":"string"},"language":{"type":"string","description":"A language code, such as en"},"fromSeconds":{"type":"number"},"toSeconds":{"type":"number"},"durationSeconds":{"type":"number","description":"The whole transcript's length"},"speakerCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"How many people speak in the whole transcript (0 without speech), or null when it has no speaker labels"},"detail":{"type":"string","enum":["concise","full"]},"sentences":{"type":"array","items":{"type":"object","properties":{"startSeconds":{"type":"number"},"endSeconds":{"type":"number"},"text":{"type":"string"},"speaker":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Who says it: 1, 2, and so on, in the order people first speak"},{"type":"null"}],"description":"Who says it: 1, 2, and so on, in the order people first speak, or null without speaker labels"},"words":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"startSeconds":{"type":"number"},"endSeconds":{"type":"number"},"speaker":{"description":"Who says it, when the transcript has speaker labels: 1, 2, and so on, in the order people first speak","type":"integer","minimum":1,"maximum":9007199254740991},"matched":{"description":"In an aligned script: false when the word wasn't found in the recording","type":"boolean"}},"required":["text","startSeconds","endSeconds"],"additionalProperties":false}}},"required":["startSeconds","endSeconds","text","speaker"],"additionalProperties":false}},"nextFromSeconds":{"description":"Where to read on from, or null at the end","type":["number","null"]}},"required":["fileId","language","fromSeconds","toSeconds","durationSeconds","speakerCount","detail","sentences","nextFromSeconds"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/files/{id}/peaks":{"get":{"operationId":"get_try_files_id_peaks","tags":["Free API"],"summary":"Read the waveform of a file uploaded for a free run","description":"t is the file's fileToken from POST /api/try/uploads. Otherwise as GET /api/v1/files/{id}/peaks.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"description":"Wait up to this many seconds (at most 40) for a change before answering","schema":{"type":"number","minimum":0,"maximum":40}},{"name":"level","in":"query","required":false,"description":"Bins a second: 5, 50, 500. Without it, only the description comes back","schema":{"type":"integer","enum":[5,50,500]}},{"name":"first","in":"query","required":false,"description":"The first bin to return. Default 0","schema":{"type":"integer","minimum":0}},{"name":"count","in":"query","required":false,"description":"How many bins, 1 to 16384. Default 4096","schema":{"type":"integer","minimum":1,"maximum":16384}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fileId":{"type":"string"},"status":{"type":"string","enum":["processing","ready","none"],"description":"processing while they're made (ask again, with wait); none when the file has no sound to draw"},"durationSeconds":{"description":"How long the decoded sound is","type":["number","null"]},"peak":{"description":"The loudest sample, 0 to 1","type":["number","null"]},"levels":{"type":"array","items":{"type":"object","properties":{"perSecond":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["perSecond","count"],"additionalProperties":false}},"bins":{"anyOf":[{"type":"object","properties":{"level":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"first":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"data":{"type":"string","description":"Base64 of count pairs of signed bytes: min, then max"}},"required":["level","first","count","data"],"additionalProperties":false},{"type":"null"}],"description":"The bins asked for with level, first, and count, once ready"}},"required":["fileId","status","durationSeconds","peak","levels","bins"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/uploads/{id}":{"get":{"operationId":"get_uploads_id","tags":["Upload page"],"summary":"Get the file an upload page is for","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"description":"Wait up to this many seconds (at most 40) for a change before answering","schema":{"type":"number","minimum":0,"maximum":40}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/uploads/{id}/start":{"post":{"operationId":"post_uploads_id_start","tags":["Upload page"],"summary":"Name the file and get how to upload it: one PUT, or parts and a complete link","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"contentType":{"type":"string","maxLength":100}},"required":["filename","sizeBytes"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false},"upload":{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"PUT"},"url":{"type":"string"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["method","url","headers","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"One PUT, up to 100 MB"},"multipart":{"anyOf":[{"type":"object","properties":{"partSizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every part is this size, except the last"},"partCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"partUrl":{"type":"string","description":"Where part n goes (PUT), with {n} in place of the part number, counting from 1"},"completeUrl":{"type":"string","description":"POST here once every part is in. It joins them, or lists the parts that haven't arrived (details.missingParts)"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["partSizeBytes","partCount","partUrl","completeUrl","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"Upload in parts instead, for larger files"}},"required":["file","upload","multipart"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/uploads/{id}/abort":{"post":{"operationId":"post_uploads_id_abort","tags":["Upload page"],"summary":"Stop the upload","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"responses":{"204":{"description":"Done"},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/files/{id}":{"get":{"operationId":"get_files_id","tags":["File links"],"summary":"Download the file. Byte ranges work","description":"The link comes from GET /api/v1/files/{id}/download and works for 15 minutes.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"responses":{"200":{"description":"The file","content":{"application/octet-stream":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"put":{"operationId":"put_files_id","tags":["File links"],"summary":"Upload the file in one request, up to 100 MB","description":"The body is the file, such as curl -T interview.wav \"<upload url>\": up to 100 MB (100,000,000 bytes), and its size needn't be known in advance. A larger file goes in parts. The link comes from creating or starting the upload and works for an hour.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/files/{id}/parts/{n}":{"put":{"operationId":"put_files_id_parts_n","tags":["File links"],"summary":"Upload part n (from 1) of an upload in parts","description":"The link is multipart.partUrl with {n} replaced by n. Every part is partSizeBytes, except the last; sending a part again replaces it. One token covers the whole upload and works while the file waits for it, up to 24 hours.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"n","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"partNumber":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"etag":{"type":"string"}},"required":["partNumber","etag"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/files/{id}/stored":{"post":{"operationId":"post_files_id_stored","tags":["File links"],"summary":"Take in a file the files Worker stored (the Worker's own call)","description":"Where file links are served from Cloudflare, the files Worker calls this after storing one PUT to an upload link, with the same link and the object's key. The API checks the object in the bucket (its key and size) before taking it in. Callers never need it: the PUT answers with the file.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"key":{"type":"string"}},"required":["key"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/files/{id}/complete":{"post":{"operationId":"post_files_id_complete","tags":["File links"],"summary":"Complete an upload in parts, so the file is checked","description":"The link is multipart.completeUrl. Parts that didn't arrive are listed in a 409's details.missingParts: send those again, then complete again. Safe to repeat.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"t","in":"query","required":true,"description":"The token from the link","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["original","output"]},"status":{"type":"string","enum":["awaiting_upload","processing","ready","invalid","deleted"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"format":{"description":"The container, such as wav or mp4","type":["string","null"]},"hasVideo":{"type":"boolean"},"hasAudio":{"type":"boolean","description":"False for a video without sound, which only replace_audio takes"},"media":{"anyOf":[{"type":"object","properties":{"codec":{"description":"The audio codec, such as aac or pcm_s16le","type":["string","null"]},"sampleRate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"channels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The video's width in pixels, or null without video"},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codec","sampleRate","channels","width","height"],"additionalProperties":false},{"type":"null"}],"description":"Audio and video details, once the file is checked. Null for text files"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"prices":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},{"type":"null"}],"description":"Credits each tool costs to process this file, once its length is known"},"sourceJobId":{"type":["string","null"]},"createdAt":{"type":"string","description":"ISO 8601 time"},"expiresAt":{"type":"string","description":"ISO 8601 time"}},"required":["id","kind","status","filename","contentType","sizeBytes","durationSeconds","format","hasVideo","hasAudio","media","error","prices","sourceJobId","createdAt","expiresAt"],"additionalProperties":false}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/remove-noise":{"post":{"tags":["Free API"],"operationId":"try_remove_noise","summary":"Remove noise, free for the first minute","description":"Free for the first minute of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.03/min, 3 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@interview.wav https://audo.ai/api/try/remove-noise -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/remove-noise -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"noise_reduction":{"default":100,"description":"How much of the noise to turn down, as a percentage. 100 turns down all it can; lower values keep some of the background. Default 100.","type":"integer","minimum":10,"maximum":100},"auto_volume":{"default":true,"description":"Sets the whole file to -16 LUFS with one gain, and limits peaks to -1 dBTP. It doesn't balance loud and quiet speakers. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first minute, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first minute free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"noise_reduction":{"default":100,"description":"How much of the noise to turn down, as a percentage. 100 turns down all it can; lower values keep some of the background. Default 100.","type":"integer","minimum":10,"maximum":100},"auto_volume":{"default":true,"description":"Sets the whole file to -16 LUFS with one gain, and limits peaks to -1 dBTP. It doesn't balance loud and quiet speakers. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first minute, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first minute free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/enhance-voice":{"post":{"tags":["Free API"],"operationId":"try_enhance_voice","summary":"Enhance voice, free for the first minute","description":"Free for the first minute of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.03/min, 3 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@call.wav https://audo.ai/api/try/enhance-voice -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@call.wav https://audo.ai/api/try/enhance-voice -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"noise_reduction":{"default":100,"description":"How much of the regenerated voice to use, as a percentage. 100 uses all of it; lower values mix back some of the original sound. Default 100.","type":"integer","minimum":10,"maximum":100},"auto_volume":{"default":true,"description":"Sets the whole file to -16 LUFS with one gain, and limits peaks to -1 dBTP. It doesn't balance loud and quiet speakers. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first minute, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first minute free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"noise_reduction":{"default":100,"description":"How much of the regenerated voice to use, as a percentage. 100 uses all of it; lower values mix back some of the original sound. Default 100.","type":"integer","minimum":10,"maximum":100},"auto_volume":{"default":true,"description":"Sets the whole file to -16 LUFS with one gain, and limits peaks to -1 dBTP. It doesn't balance loud and quiet speakers. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first minute, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first minute free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/transcribe":{"post":{"tags":["Free API"],"operationId":"try_transcribe_audio","summary":"Transcribe, free for the first 2 minutes","description":"Free for the first 2 minutes of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.02/min, 2 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@interview.mp3 -F format=srt https://audo.ai/api/try/transcribe -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.mp3 -F format=srt https://audo.ai/api/try/transcribe -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}},{"name":"format","in":"query","required":false,"description":"Same as the format field","schema":{"type":"string","enum":["json","srt","vtt","txt"]}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"language":{"description":"The spoken language, as a code such as en or ja. Default: detected.","type":"string","pattern":"^[a-z]{2,3}$"},"verbatim":{"default":true,"description":"Keeps filler words such as um and uh, so they can be cut later. Default true.","type":"boolean"},"speaker_labels":{"default":true,"description":"Labels who speaks when: Speaker 1, Speaker 2, and so on, in the order they first speak, up to 8 people. No names. Default true.","type":"boolean"},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt","txt"],"default":"json","description":"What to return: json, srt, vtt, txt. Also accepted in the query string"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"language":{"description":"The spoken language, as a code such as en or ja. Default: detected.","type":"string","pattern":"^[a-z]{2,3}$"},"verbatim":{"default":true,"description":"Keeps filler words such as um and uh, so they can be cut later. Default true.","type":"boolean"},"speaker_labels":{"default":true,"description":"Labels who speaks when: Speaker 1, Speaker 2, and so on, in the order they first speak, up to 8 people. No names. Default true.","type":"boolean"},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt","txt"],"default":"json","description":"What to return: json, srt, vtt, txt. Also accepted in the query string"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The transcript: JSON by default, or the format asked for","content":{"application/json":{"schema":{"type":"object"}},"application/x-subrip":{"schema":{"type":"string"}},"text/vtt":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/align-script":{"post":{"tags":["Free API"],"operationId":"try_align_script","summary":"Align a script, free for the first 2 minutes","description":"Free for the first 2 minutes of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.02/min, 2 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@talk.wav -F script=@script.txt -F format=srt https://audo.ai/api/try/align-script -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@talk.wav -F script=@script.txt -F format=srt https://audo.ai/api/try/align-script -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}},{"name":"format","in":"query","required":false,"description":"Same as the format field","schema":{"type":"string","enum":["json","srt","vtt"]}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"script":{"type":"string","contentMediaType":"application/octet-stream","description":"The script, as a TXT, SRT, or VTT file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"script_url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"script_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"text":{"description":"The script as plain text, SRT, or VTT, up to 2 MB, such as \"Welcome back to the show.\" Pass text or script_file_id, not both.","type":"string","minLength":1,"maxLength":2097152},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt"],"default":"json","description":"What to return: json, srt, vtt. Also accepted in the query string"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]},{"oneOf":[{"allOf":[{"oneOf":[{"required":["script"]},{"required":["script_url"]},{"required":["script_token"]}]},{"not":{"anyOf":[{"required":["text"]}]}}]},{"required":["text"],"not":{"anyOf":[{"required":["script"]},{"required":["script_url"]},{"required":["script_token"]}]}}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"script_url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"script_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"text":{"description":"The script as plain text, SRT, or VTT, up to 2 MB, such as \"Welcome back to the show.\" Pass text or script_file_id, not both.","type":"string","minLength":1,"maxLength":2097152},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt"],"default":"json","description":"What to return: json, srt, vtt. Also accepted in the query string"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]},{"oneOf":[{"allOf":[{"oneOf":[{"required":["script_url"]},{"required":["script_token"]}]},{"not":{"anyOf":[{"required":["text"]}]}}]},{"required":["text"],"not":{"anyOf":[{"required":["script_url"]},{"required":["script_token"]}]}}]}]}}}},"responses":{"200":{"description":"The transcript: JSON by default, or the format asked for","content":{"application/json":{"schema":{"type":"object"}},"application/x-subrip":{"schema":{"type":"string"}},"text/vtt":{"schema":{"type":"string"}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/cut":{"post":{"tags":["Free API"],"operationId":"try_cut_audio","summary":"Cut, free for the first hour","description":"Free for the first hour of the file, 10 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@interview.wav -F mode=remove -F 'ranges=[[0,12.5],[300,312]]' https://audo.ai/api/try/cut -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav -F mode=remove -F 'ranges=[[0,12.5],[300,312]]' https://audo.ai/api/try/cut -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"ranges":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":36000},{"type":"number","minimum":0,"maximum":36000}],"items":false,"minItems":2,"maxItems":2},"description":"Time ranges as [start, end] pairs in seconds, such as [[0, 12.5], [300, 312]]. 1 to 100 ranges."},"mode":{"default":"remove","description":"remove deletes the ranges; keep keeps only the ranges. Default remove.","type":"string","enum":["remove","keep"]},"output":{"default":"joined","description":"joined makes one file; separate makes one file per range. Default joined.","type":"string","enum":["joined","separate"]},"crossfade_ms":{"default":20,"description":"A crossfade at each cut, in milliseconds (0 to 200), such as 20. Default 20.","type":"integer","minimum":0,"maximum":200},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"required":["ranges"],"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"ranges":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":36000},{"type":"number","minimum":0,"maximum":36000}],"items":false,"minItems":2,"maxItems":2},"description":"Time ranges as [start, end] pairs in seconds, such as [[0, 12.5], [300, 312]]. 1 to 100 ranges."},"mode":{"default":"remove","description":"remove deletes the ranges; keep keeps only the ranges. Default remove.","type":"string","enum":["remove","keep"]},"output":{"default":"joined","description":"joined makes one file; separate makes one file per range. Default joined.","type":"string","enum":["joined","separate"]},"crossfade_ms":{"default":20,"description":"A crossfade at each cut, in milliseconds (0 to 200), such as 20. Default 20.","type":"integer","minimum":0,"maximum":200},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"required":["ranges"],"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/remove-silence":{"post":{"tags":["Free API"],"operationId":"try_remove_silence","summary":"Remove silence, free for the first hour","description":"Free for the first hour of the file, 10 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@interview.wav https://audo.ai/api/try/remove-silence -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/remove-silence -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"min_pause_seconds":{"default":0.7,"description":"Shortens pauses at least this long, in seconds (0.3 to 5), such as 0.7. Default 0.7.","type":"number","minimum":0.3,"maximum":5},"keep_seconds":{"default":0.25,"description":"How much of each pause to keep, in seconds (0 to 1), such as 0.25. Default 0.25.","type":"number","minimum":0,"maximum":1},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"min_pause_seconds":{"default":0.7,"description":"Shortens pauses at least this long, in seconds (0.3 to 5), such as 0.7. Default 0.7.","type":"number","minimum":0.3,"maximum":5},"keep_seconds":{"default":0.25,"description":"How much of each pause to keep, in seconds (0 to 1), such as 0.25. Default 0.25.","type":"number","minimum":0,"maximum":1},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/loudness":{"post":{"tags":["Free API"],"operationId":"try_adjust_loudness","summary":"Set loudness, free for the first hour","description":"Free for the first hour of the file, 10 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@episode.wav -F target=podcast https://audo.ai/api/try/loudness -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@episode.wav -F target=podcast https://audo.ai/api/try/loudness -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"target":{"default":"podcast","description":"Where it's going: podcast (-16 LUFS), streaming (-14 LUFS), broadcast (-23 LUFS), audiobook (ACX checks), or custom (set custom_lufs). Default podcast.","type":"string","enum":["podcast","streaming","broadcast","audiobook","custom"]},"custom_lufs":{"description":"The loudness for target custom, in LUFS (-30 to -5), such as -18.","type":"number","minimum":-30,"maximum":-5},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"target":{"default":"podcast","description":"Where it's going: podcast (-16 LUFS), streaming (-14 LUFS), broadcast (-23 LUFS), audiobook (ACX checks), or custom (set custom_lufs). Default podcast.","type":"string","enum":["podcast","streaming","broadcast","audiobook","custom"]},"custom_lufs":{"description":"The loudness for target custom, in LUFS (-30 to -5), such as -18.","type":"number","minimum":-30,"maximum":-5},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/convert":{"post":{"tags":["Free API"],"operationId":"try_convert_audio","summary":"Convert, free for the first hour","description":"Free for the first hour of the file, 10 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@video.mp4 -F format=mp3 https://audo.ai/api/try/convert -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@video.mp4 -F format=mp3 https://audo.ai/api/try/convert -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"format":{"default":"mp3","description":"The format to convert to: mp3, wav, m4a, flac, ogg, or opus. Default mp3.","type":"string","enum":["mp3","wav","m4a","flac","ogg","opus"]},"bitrate_kbps":{"description":"The bitrate for mp3, m4a, ogg, or opus, in kbps (16 to 320), such as 128. Default: chosen for the format.","type":"integer","minimum":16,"maximum":320},"sample_rate":{"description":"The sample rate in Hz, such as 44100. Default: the input's.","type":"number","enum":[8000,16000,22050,24000,32000,44100,48000]},"channels":{"description":"mono or stereo. Default: the input's.","type":"string","enum":["mono","stereo"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"format":{"default":"mp3","description":"The format to convert to: mp3, wav, m4a, flac, ogg, or opus. Default mp3.","type":"string","enum":["mp3","wav","m4a","flac","ogg","opus"]},"bitrate_kbps":{"description":"The bitrate for mp3, m4a, ogg, or opus, in kbps (16 to 320), such as 128. Default: chosen for the format.","type":"integer","minimum":16,"maximum":320},"sample_rate":{"description":"The sample rate in Hz, such as 44100. Default: the input's.","type":"number","enum":[8000,16000,22050,24000,32000,44100,48000]},"channels":{"description":"mono or stereo. Default: the input's.","type":"string","enum":["mono","stereo"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/join":{"post":{"tags":["Free API"],"operationId":"try_join_audio","summary":"Join files, free for the first hour","description":"Free for the first hour of the file, 10 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@intro.wav -F file=@episode.wav -F file=@outro.wav https://audo.ai/api/try/join -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@intro.wav -F file=@episode.wav -F file=@outro.wav https://audo.ai/api/try/join -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"array","items":{"type":"string","contentMediaType":"application/octet-stream"},"minItems":1,"maxItems":20,"description":"The files to join, in order: repeat the field"},"url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"minItems":1,"maxItems":20,"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"minItems":1,"maxItems":20,"description":"Or file tokens from POST /api/try/uploads, in order"},"crossfade_ms":{"default":0,"description":"A crossfade between files, in milliseconds (0 to 5000), such as 500. Default 0.","type":"integer","minimum":0,"maximum":5000},"match_loudness":{"default":true,"description":"Matches the files' loudness before joining. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the first file), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour of the result, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour of the result free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["file"],"properties":{"file":{"minItems":2}}},{"required":["url"],"properties":{"url":{"minItems":2}}},{"required":["file_token"],"properties":{"file_token":{"minItems":2}}},{"required":["file","url"]},{"required":["file","file_token"]},{"required":["url","file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"minItems":1,"maxItems":20,"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"minItems":1,"maxItems":20,"description":"Or file tokens from POST /api/try/uploads, in order"},"crossfade_ms":{"default":0,"description":"A crossfade between files, in milliseconds (0 to 5000), such as 500. Default 0.","type":"integer","minimum":0,"maximum":5000},"match_loudness":{"default":true,"description":"Matches the files' loudness before joining. Default true.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the first file), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour of the result, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour of the result free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["url"],"properties":{"url":{"minItems":2}}},{"required":["file_token"],"properties":{"file_token":{"minItems":2}}},{"required":["url","file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/swap-audio":{"post":{"tags":["Free API"],"operationId":"try_replace_audio","summary":"Swap a video's audio, free for the first hour","description":"Free for the first hour of the file, 10 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F video=@video.mp4 -F audio=@voice-clean.wav https://audo.ai/api/try/swap-audio -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F video=@video.mp4 -F audio=@voice-clean.wav https://audo.ai/api/try/swap-audio -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"video":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"audio":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"video_url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"video_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"audio_url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"audio_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"offset_seconds":{"default":0,"description":"When the new audio starts against the picture, in seconds, such as 0.5 (later) or -0.5 (earlier). Default 0.","type":"number","minimum":-36000,"maximum":36000},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["video"]},{"required":["video_url"]},{"required":["video_token"]}]},{"oneOf":[{"required":["audio"]},{"required":["audio_url"]},{"required":["audio_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"video_url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"video_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"audio_url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"audio_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"offset_seconds":{"default":0,"description":"When the new audio starts against the picture, in seconds, such as 0.5 (later) or -0.5 (earlier). Default 0.","type":"number","minimum":-36000,"maximum":36000},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first hour, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first hour free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["video_url"]},{"required":["video_token"]}]},{"oneOf":[{"required":["audio_url"]},{"required":["audio_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/media-info":{"post":{"tags":["Free API"],"operationId":"try_analyze_audio","summary":"Media info, free for the whole file","description":"Free for the whole file of the file, 20 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits (Free, 0 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@interview.wav https://audo.ai/api/try/media-info -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/media-info -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"detail":{"default":"concise","description":"concise lists up to 50 silent stretches; full lists them all. Default concise.","type":"string","enum":["concise","full"]}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"detail":{"default":"concise","description":"concise lists up to 50 silent stretches; full lists them all. Default concise.","type":"string","enum":["concise","full"]}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The media info report","content":{"application/json":{"schema":{"type":"object"}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/remove-fillers":{"post":{"tags":["Free API"],"operationId":"try_remove_fillers","summary":"Remove filler words, free for the first 2 minutes","description":"Free for the first 2 minutes of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.02/min, 2 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@interview.wav https://audo.ai/api/try/remove-fillers -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/remove-fillers -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"dry_run":{"default":false,"description":"true lists the cuts it would make, with their IDs, and makes no audio. Default false.","type":"boolean"},"repeats":{"default":true,"description":"Also cuts a word or phrase of up to 3 words said twice in a row, keeping the second (\"the the\" becomes \"the\"). Default true.","type":"boolean"},"language":{"description":"The spoken language, as a code such as en or de. It picks the filler words: en, de, fr, es, it, nl, ja, or ko. Default: detected.","type":"string","pattern":"^[a-z]{2,3}$"},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"dry_run":{"default":false,"description":"true lists the cuts it would make, with their IDs, and makes no audio. Default false.","type":"boolean"},"repeats":{"default":true,"description":"Also cuts a word or phrase of up to 3 words said twice in a row, keeping the second (\"the the\" becomes \"the\"). Default true.","type":"boolean"},"language":{"description":"The spoken language, as a code such as en or de. It picks the filler words: en, de, fr, es, it, nl, ja, or ko. Default: detected.","type":"string","pattern":"^[a-z]{2,3}$"},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 2 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 2 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/level-speakers":{"post":{"tags":["Free API"],"operationId":"try_level_speakers","summary":"Level speakers, free for the first 3 minutes","description":"Free for the first 3 minutes of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@podcast.wav https://audo.ai/api/try/level-speakers -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@podcast.wav https://audo.ai/api/try/level-speakers -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"The file"},"track":{"type":"array","items":{"type":"string","contentMediaType":"application/octet-stream"},"minItems":1,"maxItems":10,"description":"Or tracks, one per person, in order: repeat the field"},"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"track_url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"minItems":1,"maxItems":10,"description":"Or links, in order"},"track_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"minItems":1,"maxItems":10,"description":"Or file tokens from POST /api/try/uploads, in order"},"target":{"default":"podcast","description":"The loudness it finishes at: podcast (-16 LUFS), streaming (-14 LUFS), broadcast (-23 LUFS), or custom (set custom_lufs). Default podcast.","type":"string","enum":["podcast","streaming","broadcast","custom"]},"custom_lufs":{"description":"The loudness for target custom, in LUFS (-30 to -5), such as -18.","type":"number","minimum":-30,"maximum":-5},"within_speaker":{"default":false,"description":"Also evens out slow changes within each speaker, such as leaning away from the mic: up to 6 dB, measured on their speech only and held through pauses. Default false.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 3 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 3 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"allOf":[{"oneOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]},{"not":{"anyOf":[{"required":["track"]},{"required":["track_url"]},{"required":["track_token"]}]}}]},{"allOf":[{"anyOf":[{"required":["track"],"properties":{"track":{"minItems":2}}},{"required":["track_url"],"properties":{"track_url":{"minItems":2}}},{"required":["track_token"],"properties":{"track_token":{"minItems":2}}},{"required":["track","track_url"]},{"required":["track","track_token"]},{"required":["track_url","track_token"]}]},{"not":{"anyOf":[{"required":["file"]},{"required":["url"]},{"required":["file_token"]}]}}]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"file_token":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"track_url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"minItems":1,"maxItems":10,"description":"Or links, in order"},"track_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"minItems":1,"maxItems":10,"description":"Or file tokens from POST /api/try/uploads, in order"},"target":{"default":"podcast","description":"The loudness it finishes at: podcast (-16 LUFS), streaming (-14 LUFS), broadcast (-23 LUFS), or custom (set custom_lufs). Default podcast.","type":"string","enum":["podcast","streaming","broadcast","custom"]},"custom_lufs":{"description":"The loudness for target custom, in LUFS (-30 to -5), such as -18.","type":"number","minimum":-30,"maximum":-5},"within_speaker":{"default":false,"description":"Also evens out slow changes within each speaker, such as leaning away from the mic: up to 6 dB, measured on their speech only and held through pauses. Default false.","type":"boolean"},"output_format":{"default":"same","description":"The result's format: same (as the input; a video stays a video), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 3 minutes, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 3 minutes free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"oneOf":[{"allOf":[{"oneOf":[{"required":["url"]},{"required":["file_token"]}]},{"not":{"anyOf":[{"required":["track_url"]},{"required":["track_token"]}]}}]},{"allOf":[{"anyOf":[{"required":["track_url"],"properties":{"track_url":{"minItems":2}}},{"required":["track_token"],"properties":{"track_token":{"minItems":2}}},{"required":["track_url","track_token"]}]},{"not":{"anyOf":[{"required":["url"]},{"required":["file_token"]}]}}]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/try/mix":{"post":{"tags":["Free API"],"operationId":"try_mix_tracks","summary":"Mix tracks, free for the first 3 minutes","description":"Free for the first 3 minutes of the file, 3 times a day, without an account. With an API key (Authorization: Bearer <key>), the same request processes the whole file with credits ($0.01/min, 1 credits a minute; 1 credit is 1 US cent) when the balance covers it, and otherwise the free part. free=true always asks for the free part, and free=false always for the whole file. With exhausted quota, free=true returns 429; omitted free with insufficient balance returns 402. free=false with insufficient balance returns 402 with no fallback. Use an explicitly approved positive max_credits for paid automation. A request takes up to 100 MB of files either way (without a key, what its links fetch counts too), and links are fetched one at a time; upload a larger file in parts with POST /api/v1/files, then start the job with POST /api/v1/jobs. With an API key, an Idempotency-Key header makes a repeated request return the first one's job instead of starting another. Examples save unclassified response.body and response.headers: branch on HTTP status and Content-Type before naming media. See /docs/api#responses for the complete response client. Cut examples explicitly remove the named ranges; mode=keep retains them instead. The request waits up to about 30 seconds for the result. A job that takes longer, or a request with Prefer: respond-async, gets 202 with the job's link to check on. \n\n    curl -F file=@voice.wav -F file=@music.mp3 -F 'tracks=[{\"role\":\"voice\"},{\"role\":\"music\",\"volume_db\":-6}]' -F duck=true https://audo.ai/api/try/mix -D response.headers -o response.body","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@voice.wav -F file=@music.mp3 -F 'tracks=[{\"role\":\"voice\"},{\"role\":\"music\",\"volume_db\":-6}]' -F duck=true https://audo.ai/api/try/mix -D response.headers -o response.body"}],"parameters":[{"name":"Prefer","in":"header","required":false,"description":"respond-async returns 202 as soon as the job has started","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"With an API key only: a new key, such as a UUID, for each request. Sending the same key again returns the same job (keys are per account)","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"array","items":{"type":"string","contentMediaType":"application/octet-stream"},"minItems":1,"maxItems":20,"description":"The tracks to mix, in order: repeat the field"},"url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"minItems":1,"maxItems":20,"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"minItems":1,"maxItems":20,"description":"Or file tokens from POST /api/try/uploads, in order"},"tracks":{"$schema":"https://json-schema.org/draft/2020-12/schema","minItems":2,"maxItems":20,"type":"array","items":{"type":"object","properties":{"volume_db":{"default":0,"description":"The track's volume change in dB (-60 to 24), such as -12. Default 0.","type":"number","minimum":-60,"maximum":24},"start_seconds":{"default":0,"description":"Where the track starts in the mix, in seconds, such as 4.5. Default 0. With align, only the earliest aligned track's is used.","type":"number","minimum":0,"maximum":36000},"role":{"description":"voice or music: align lines up voice tracks, and duck lowers music under voice. Default none.","type":"string","enum":["voice","music"]}},"additionalProperties":false},"description":"Each track's settings, in the files' order, as JSON in a form field: volume_db, start_seconds, and role. Default: every track as it is, from 0"},"align":{"default":false,"description":"Lines up tracks recorded at the same time (the voice tracks, or every track when none has a role) by their sound, and corrects clock drift. Default false.","type":"boolean"},"duck":{"default":false,"description":"Lowers music tracks while a voice track speaks. Needs a voice and a music track. Default false.","type":"boolean"},"duck_gap_lu":{"default":12,"description":"With duck, how far under the speech the music sits, in LU (6 to 30), such as 12. Default 12.","type":"number","minimum":6,"maximum":30},"loudness":{"default":"none","description":"A loudness for the mix: none (the tracks as set, lowered only if it would clip), podcast (-16 LUFS), streaming (-14), or broadcast (-23). Default none.","type":"string","enum":["none","podcast","streaming","broadcast"]},"output_format":{"default":"same","description":"The mix's format: same (as the first track's audio), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 3 minutes of the mix, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 3 minutes of the mix free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["file"],"properties":{"file":{"minItems":2}}},{"required":["url"],"properties":{"url":{"minItems":2}}},{"required":["file_token"],"properties":{"file_token":{"minItems":2}}},{"required":["file","url"]},{"required":["file","file_token"]},{"required":["url","file_token"]}]}]}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"minItems":1,"maxItems":20,"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"minItems":1,"maxItems":20,"description":"Or file tokens from POST /api/try/uploads, in order"},"tracks":{"$schema":"https://json-schema.org/draft/2020-12/schema","minItems":2,"maxItems":20,"type":"array","items":{"type":"object","properties":{"volume_db":{"default":0,"description":"The track's volume change in dB (-60 to 24), such as -12. Default 0.","type":"number","minimum":-60,"maximum":24},"start_seconds":{"default":0,"description":"Where the track starts in the mix, in seconds, such as 4.5. Default 0. With align, only the earliest aligned track's is used.","type":"number","minimum":0,"maximum":36000},"role":{"description":"voice or music: align lines up voice tracks, and duck lowers music under voice. Default none.","type":"string","enum":["voice","music"]}},"additionalProperties":false},"description":"Each track's settings, in the files' order, as JSON in a form field: volume_db, start_seconds, and role. Default: every track as it is, from 0"},"align":{"default":false,"description":"Lines up tracks recorded at the same time (the voice tracks, or every track when none has a role) by their sound, and corrects clock drift. Default false.","type":"boolean"},"duck":{"default":false,"description":"Lowers music tracks while a voice track speaks. Needs a voice and a music track. Default false.","type":"boolean"},"duck_gap_lu":{"default":12,"description":"With duck, how far under the speech the music sits, in LU (6 to 30), such as 12. Default 12.","type":"number","minimum":6,"maximum":30},"loudness":{"default":"none","description":"A loudness for the mix: none (the tracks as set, lowered only if it would clip), podcast (-16 LUFS), streaming (-14), or broadcast (-23). Default none.","type":"string","enum":["none","podcast","streaming","broadcast"]},"output_format":{"default":"same","description":"The mix's format: same (as the first track's audio), wav, mp3, m4a, or flac. Default same.","type":"string","enum":["same","wav","mp3","m4a","flac"]},"max_credits":{"description":"With an API key only. The most this job may cost, in credits (1 credit is 1 US cent), such as 200. A job that would cost more doesn't start.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"free":{"description":"With an API key only. true processes only the first 3 minutes of the mix, at no cost, a few times a day. false always processes the whole file with credits. Left out, the whole file when the balance covers it, otherwise the first 3 minutes of the mix free if quota is available (otherwise insufficient_balance / 402). true with exhausted quota returns free_limit_reached / 429; false with insufficient balance returns 402, without fallback.","type":"boolean"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["url"],"properties":{"url":{"minItems":2}}},{"required":["file_token"],"properties":{"file_token":{"minItems":2}}},{"required":["url","file_token"]}]}]}}}},"responses":{"200":{"description":"The result file itself (beside it, details such as a time map stay in the job). A job with several audio or video outputs (such as a cut into separate parts) returns the job with download links instead","content":{"audio/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"video/*":{"schema":{"type":"string","contentMediaType":"application/octet-stream"}},"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"202":{"description":"The job is still running. Check on it at the Location header's link","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"tool":{"type":"string","enum":["remove_noise","enhance_voice","transcribe_audio","align_script","cut_audio","remove_silence","adjust_loudness","convert_audio","join_audio","replace_audio","analyze_audio","remove_fillers","level_speakers","mix_tracks"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100,"description":"How much of the job is done, from 0 to 100. It never goes down, and its first part is the time a job usually takes to start"},"stage":{"type":"string","enum":["queued","preparing","processing","finishing","succeeded","failed","cancelled","held"],"description":"Where the job is: queued (not started yet, perhaps behind the account's other running jobs), preparing (getting the file ready), processing (the tool's work), finishing (saving the result), then succeeded, failed, or cancelled; or held (waiting for payment: see finishUrl)"},"estimatedSecondsLeft":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"About how many seconds the job has left, from the file's length and how fast the tool runs, refined as it goes. A rough guide. Null while it's queued, while Audo is busy (waitingForWorker), and once it has ended"},"waitingForWorker":{"default":false,"description":"True while a running job has waited in line longer than a start usually takes: Audo is busy, and the job carries on as soon as there's room. A free job also waits behind paid ones, so it can wait longer; jobs with credits go first","type":"boolean"},"inputFileIds":{"type":"array","items":{"type":"string"},"description":"The main input first"},"outputFileIds":{"type":"array","items":{"type":"string"},"description":"The main output first, once the job succeeds"},"free":{"type":"boolean","description":"A free job processes only the first part of its input, at no cost"},"processedSeconds":{"type":"number","description":"How much of the input the job processes"},"quotedCredits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"chargedCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Set when the job succeeds"},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The tool's details, such as loudness before and after"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time"},"startedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time"},{"type":"null"}]},"finishUrl":{"description":"For a free result cut short: the page where the whole file can run, as a new job. Null when the job did the whole file","type":["string","null"]},"statusUrl":{"type":"string","description":"This job's capability link. GET it to check on the job; it works for 1 hour"},"fullPriceCredits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The price to process the whole input with credits"},"outputs":{"type":"array","items":{"type":"object","properties":{"fileId":{"type":"string"},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationSeconds":{"type":["number","null"]},"hasVideo":{"type":"boolean"},"url":{"type":"string","description":"A signed download link"},"expiresAt":{"type":"string","description":"ISO 8601 time"},"fileExpiresAt":{"description":"When Audo deletes the file itself (the link above expires sooner)","type":"string"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"},"finishPriceCredits":{"description":"What the whole file costs in credits (1 credit is 1 cent)","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"finishedBy":{"description":"Once someone paid to finish this free run: the whole-file job","anyOf":[{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","cancelled","held"]},"progress":{"type":"integer","minimum":0,"maximum":100},"statusUrl":{"type":"string","description":"The whole-file job's own status link. GET it until its status is succeeded, then download its outputs"}},"required":["jobId","status","progress","statusUrl"],"additionalProperties":false},{"type":"null"}]},"nextStep":{"description":"What to do next, for an agent","type":"string"}},"required":["id","tool","status","progress","stage","estimatedSecondsLeft","waitingForWorker","inputFileIds","outputFileIds","free","processedSeconds","quotedCredits","chargedCredits","result","error","createdAt","startedAt","finishedAt","statusUrl","fullPriceCredits","outputs"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"429":{"description":"Today's free uses are used up (or 3 runs already wait for payment from this address: rate_limited). The file is still taken and held for payment: details has finishUrl (where the whole file can run), finishPriceCredits, jobId, and statusUrl, whose finishedBy names the whole-file job once paid","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}},"headers":{"RateLimit-Policy":{"description":"The limits that apply, such as \"free\";q=3;w=86400 (3 free uses a day)","schema":{"type":"string"}},"RateLimit":{"description":"What's left, such as \"free\";r=2;t=41000 (2 left, reset in 41,000 seconds)","schema":{"type":"string"}},"Audo-Processed-Seconds":{"description":"How much of the input the job processes","schema":{"type":"number"}},"Audo-Full-Price-Credits":{"description":"The price to process the whole input with credits","schema":{"type":"integer"}},"Audo-Job-Url":{"description":"The job's link, for its details","schema":{"type":"string"}},"Audo-Finish-Url":{"description":"A free result cut short, returned as the file itself: the link where the whole file can run. The JSON results carry it as finishUrl","schema":{"type":"string"}},"Audo-Finish-Price-Credits":{"description":"With Audo-Finish-Url: what the whole file costs, in credits","schema":{"type":"integer"}}}},"default":{"description":"An error, with what went wrong and what to do next","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"nextAction":{"type":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["code","message","retryable"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}}}