{"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 -o interview-clean.wav`.\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}}}}}},"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.","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.","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.","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.","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 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.","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 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.","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 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.","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 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.","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 3 minutes 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 3 minutes of the result free.","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 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.","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.","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.","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.","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"]},"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"],"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"},"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","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"}]}},"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"]},"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"],"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"},"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","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"}]}},"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"]},"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"],"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"},"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","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"}]}},"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"]},"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"],"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"},"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","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"}]}},"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"},"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"},"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"},"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"}},"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 answer to the sign-up question","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":{"useCase":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"What the person will use Audo for. null or an empty string records that they skipped the question"}},"required":["useCase"]}}}},"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"},"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"},"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"},"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"}},"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/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"]},"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":"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}},"required":["amountCents"]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string"}},"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/checkout/{id}":{"get":{"operationId":"get_v1_checkout_id","tags":["Account"],"summary":"Get a credit purchase","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"]}},"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/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/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.","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>. 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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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}/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>\". Its size needn't be known in advance. 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}/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 (3 a minute) 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. 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. 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 -o interview-clean.wav","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/remove-noise -o interview-clean.wav"}],"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.","type":"boolean"}}}},"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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 (3 a minute) 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. 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. 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 -o call-enhanced.wav","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@call.wav https://audo.ai/api/try/enhance-voice -o call-enhanced.wav"}],"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.","type":"boolean"}}}},"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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 (2 a minute) 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. 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. 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 -o interview.srt","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.mp3 -F format=srt https://audo.ai/api/try/transcribe -o interview.srt"}],"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.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt","txt"],"default":"json","description":"What to return: the transcript as JSON, or captions (srt, vtt) or text (txt). Also accepted in the query string"}}}},"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.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt","txt"],"default":"json","description":"What to return: the transcript as JSON, or captions (srt, vtt) or text (txt). Also accepted in the query string"}}}}}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 (2 a minute) 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. 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. 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 -o talk.srt","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 -o talk.srt"}],"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.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt"],"default":"json","description":"What to return: the transcript as JSON, or captions (srt, vtt) or text (txt). Also accepted in the query string"}}}},"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.","type":"boolean"},"format":{"type":"string","enum":["json","srt","vtt"],"default":"json","description":"What to return: the transcript as JSON, or captions (srt, vtt) or text (txt). Also accepted in the query string"}}}}}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 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 (1 a minute) 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. 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. 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 'ranges=[[0,12.5],[300,312]]' https://audo.ai/api/try/cut -o interview-cut.wav","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav -F 'ranges=[[0,12.5],[300,312]]' https://audo.ai/api/try/cut -o interview-cut.wav"}],"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 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.","type":"boolean"}}}},"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 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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 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 (1 a minute) 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. 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. 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 -o interview-tightened.wav","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/remove-silence -o interview-tightened.wav"}],"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 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.","type":"boolean"}}}},"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 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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 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 (1 a minute) 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. 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. 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 -o episode-normalized.wav","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@episode.wav -F target=podcast https://audo.ai/api/try/loudness -o episode-normalized.wav"}],"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 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.","type":"boolean"}}}},"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 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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 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 (1 a minute) 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. 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. 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 -o video.mp3","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@video.mp4 -F format=mp3 https://audo.ai/api/try/convert -o video.mp3"}],"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 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.","type":"boolean"}}}},"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 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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 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 (1 a minute) 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. 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. 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 -o episode-joined.wav","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 -o episode-joined.wav"}],"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":2,"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"},"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"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 3 minutes 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 3 minutes of the result free.","type":"boolean"}}}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"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 3 minutes 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 3 minutes of the result free.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 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 (1 a minute) 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. 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. 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 -o video-new-audio.mp4","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 -o video-new-audio.mp4"}],"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 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.","type":"boolean"}}}},"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 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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 (0 a minute) 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. 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. 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","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/media-info"}],"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"]}}}},"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"]}}}}}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 (2 a minute) 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. 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. 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","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@interview.wav https://audo.ai/api/try/remove-fillers"}],"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"},"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":"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.","type":"boolean"}}}},"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"},"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":"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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 (1 a minute) 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. 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. 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","security":[{},{"apiKey":[]}],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"curl -F file=@podcast.wav https://audo.ai/api/try/level-speakers"}],"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":2,"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"},"description":"Or links, in order"},"track_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"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.","type":"boolean"}}}},"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"},"description":"Or links, in order"},"track_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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 (1 a minute) 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. 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. 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 -o voice-mix.wav","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 -o voice-mix.wav"}],"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":2,"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"},"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"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.","type":"boolean"}}}},"application/json":{"schema":{"type":"object","properties":{"url":{"type":"array","items":{"type":"string","format":"uri","description":"A public HTTPS link that Audo fetches"},"description":"Or links, in order"},"file_token":{"type":"array","items":{"type":"string","description":"Or the fileToken of an upload from POST /api/try/uploads"},"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.","type":"boolean"}}}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"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"]},"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"],"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"},"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","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"}]},"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"}},"required":["fileId","filename","contentType","sizeBytes","durationSeconds","hasVideo","url","expiresAt"],"additionalProperties":false},"description":"The outputs with download links, once the job succeeds"}},"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"}}}},"429":{"description":"Today's free uses are used up; the error says when they reset","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"}}}},"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}}}}}}}}}