Розробник API
Інтегруйте локалізацію Addavox у свій робочий процес. Оберіть дубляж відео API для повної локалізації відео з хронометражем, контролем якості, субтитрами та повним доступом до редактора рецензій через чарівні посилання. Ви також можете вибрати будь-який з окремих API сервісів для інших завдань, таких як озвучування книги або переклад і озвучування книги за один прохід.
Клавіші API
Ключі API належать до облікового запису Addavox. Створіть його за допомогою кнопки «Почати локалізацію» вище, а потім згенеруйте ключ у додатку — кожен дзвінок оплачується з цього облікового запису. Щоб спочатку створити та протестувати інтеграцію, запросіть ключ ізольованого програмного середовища в додатку.
Окремі послуги API оплачуються з вашого кредитного балансу, який ви поповнюєте та керуєте ним у своєму обліковому записі Addavox . Повна локалізація відео є винятком: для неї використовуються ті самі ціни, що й для плану, обраного вами в розділі «Тани та ціни» — хвилини, включені у ваш план, а потім перевищення за тарифом плану.
Плануєте інтеграцію? Забронюйте дзвінок щодо інтеграції (відкриється в новій вкладці)
Базова URL-адреса:
https://api.addavox.com/api/v1
Заголовок авторизації:
X- API -Ключ: ВАШ_КЛЮЧ
Згода та авторизація
Усі запити API повинні містити об’єкт згоди та поле режиму верхнього рівня. Разом вони створюють запис атестації для кожного завдання, що підтверджує наявність у вас необхідних прав та згод мовця.
Поле режиму визначає синтез голосу: «voice_matched» використовує зіставлення голосу, яке переносить власний тон та емоцію кожного мовця цільовою мовою; «standard» використовує попередньо встановлені синтезовані голоси. Обидва режими мають однакову ціну — вибір залежить виключно від згоди.
Режим голосового зіставлення — потрібна повна згода
Стандартний режим — лише права на контент
Довідка з поля
| Поле | Тип | Обов'язково | Опис |
|---|---|---|---|
| mode | string | Найвищий рівень | voice_matched або standard |
| speaker_consent_obtained | boolean | лише voice_matched | Явна згода від ідентифікованих спікерів |
| content_rights_confirmed | boolean | Обидва режими | Право власності або дійсна ліцензія на контент |
| eula_accepted | boolean | Обидва режими | Приймає Addavox EULA |
| attested_by | string | Обидва режими | Електронна пошта або ідентифікатор відповідальної сторони |
| attested_at | ISO 8601 | Обидва режими | Протягом 24 годин з моменту запиту |
Коди помилок згоди
| HTTP | Код | Хвороба |
|---|---|---|
| 403 | CONSENT_MISSING | Немає об'єкта згоди |
| 403 | CONSENT_INCOMPLETE | Відсутнє значення attested_by або недійсне значення attested_at |
| 403 | CONSENT_NOT_AFFIRMED | Права або EULA не підтверджено |
| 403 | CONSENT_EXPIRED | засвідчено_за датою понад 24 години |
| 403 | SPEAKER_CONSENT_REQUIRED | voice_matched без згоди мовця |
| 400 | INVALID_MODE | Недійсне значення режиму |
Посилання API
Повна інтерактивна схема та додаткові кінцеві точки доступні через OpenAPI.
Full Video Localization
/api/v1/localize-video
API key
Video Dubbing
Full video dubbing: send a video URL + target languages, get localized videos back.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
video_url | string | Yes | HTTPS URL of the source video to dub. |
target_languages | string[] | Yes | One or more target language codes. |
source_language | string | Yes | Language of the source video's spoken audio, e.g. 'en'. |
project_name | string | null | No | Optional project name. Defaults to 'API Video: {filename}'. |
enable_llm_qa | boolean | No | Opt-in LLM quality-review pass over translations before voice synthesis. Adds processing time. |
mode | LocalizationMode | No | Drives consent. Default 'voice_matched' (voice matching: each speaker's tone and emotion carried into the target language); 'standard' uses preset synthetic voices. |
consent | ConsentAttestation | Yes | Consent attestation; see Consent & Authorization. |
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Master job ID — poll for per-language status. |
project_id | string | The project created for this job. |
status | string | Always 'queued' on submit. |
target_languages | string[] | Echoed target language codes. |
ConsentAttestation
speaker_consent_obtained | boolean | null | Attests that explicit consent has been obtained from all identifiable speakers. Required for voice_matched mode only. |
content_rights_confirmed | boolean | Attests ownership or a valid license to the content. Required in both modes. |
eula_accepted | boolean | Confirms the client has read and accepts the Addavox EULA. Required in both modes. |
attested_by | string | Email or identifier of the responsible individual or system. |
attested_at | string | ISO 8601 timestamp of attestation. Must be within 24 hours of the request. |
API Services
/api/v1/separate
API key
Voice Separation
Split caller-supplied audio into vocals + background stems (async job).
Request body
| Field | Type | Required | Description |
|---|---|---|---|
audio_url | string | Yes | HTTPS URL of the source audio to separate. |
project_name | string | null | No | Optional project name. |
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Poll this job ID for status. |
project_id | string | The project created for this job. |
status | string | Always 'queued' on submit. |
charge | ChargeInfo | Billing detail for this submission. |
ChargeInfo
amount | number | Total amount charged for this submission, in USD. |
rate_per_min | number | Per-minute rate applied. |
duration_min | number | Billed minutes (for text services, characters/1000). |
num_languages | integer | Number of target languages billed. |
credit_balance_after | number | Account credit balance after the charge, in USD. |
/api/v1/transcribe
API key
Transcribe
Transcribe caller-supplied audio and return a transcript (async job).
Request body
| Field | Type | Required | Description |
|---|---|---|---|
audio_url | string | Yes | HTTPS URL of the source audio to transcribe. |
language | string | Yes | Spoken language of the audio (BCP-47), e.g. 'en-US'. |
project_name | string | null | No | Optional project name. |
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Poll this job ID for status. |
project_id | string | The project created for this job. |
status | string | Always 'queued' on submit. |
charge | ChargeInfo | Billing detail for this submission. |
ChargeInfo
amount | number | Total amount charged for this submission, in USD. |
rate_per_min | number | Per-minute rate applied. |
duration_min | number | Billed minutes (for text services, characters/1000). |
num_languages | integer | Number of target languages billed. |
credit_balance_after | number | Account credit balance after the charge, in USD. |
/api/v1/pro-transcribe
API key
Pro Transcription
Separate, then transcribe the isolated vocals stem — a cleaner transcript (async job).
Request body
| Field | Type | Required | Description |
|---|---|---|---|
audio_url | string | Yes | HTTPS URL of the source audio to transcribe. |
language | string | Yes | Spoken language of the audio (BCP-47), e.g. 'en-US'. |
project_name | string | null | No | Optional project name. |
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Poll this job ID for status. |
project_id | string | The project created for this job. |
status | string | Always 'queued' on submit. |
charge | ChargeInfo | Billing detail for this submission. |
ChargeInfo
amount | number | Total amount charged for this submission, in USD. |
rate_per_min | number | Per-minute rate applied. |
duration_min | number | Billed minutes (for text services, characters/1000). |
num_languages | integer | Number of target languages billed. |
credit_balance_after | number | Account credit balance after the charge, in USD. |
/api/v1/translate
API key
Translate
Machine-translate text from one language to another. Returns the translated text synchronously — no audio, no job to poll.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
text | string | Yes | Text to translate. |
target_language | string | Yes | Target language code, e.g. 'es' or 'es-ES'. |
source_language | string | Yes | Source language code, e.g. 'en' or 'en-US'. |
Response
| Field | Type | Description |
|---|---|---|
translated_text | string | The translated text. |
source_language | string | Source language supplied on the request. |
target_language | string | Target language the text was translated into. |
charge | ChargeInfo | Billing detail for this translation. |
ChargeInfo
amount | number | Total amount charged for this submission, in USD. |
rate_per_min | number | Per-minute rate applied. |
duration_min | number | Billed minutes (for text services, characters/1000). |
num_languages | integer | Number of target languages billed. |
credit_balance_after | number | Account credit balance after the charge, in USD. |
Example
curl -X POST https://api.addavox.com/api/v1/translate \
-H "X-API-Key: $ADDAVOX_KEY" -H "Content-Type: application/json" \
-d '{"text": "Hello", "target_language": "es"}'
/api/v1/narrate
API key
Narrate
Narrate already-translated text into an audiobook, in a preset voice you choose. Preset (synth) voices only — no voice matching.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
audio_url | string | Yes | HTTPS URL of the source audio; also used to identify/match speaker voices. |
source_language | string | Yes | Source language code, e.g. 'en-US'. |
target_language | string | Yes | Target language code, e.g. 'es-ES'. |
segments | ExternalSegment[] | Yes | The pre-segmented transcript to voice. |
project_name | string | null | No | Optional project name. Defaults to 'API: {source}->{target}'. |
consent | ConsentAttestation | Yes | Consent attestation; see Consent & Authorization. |
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Poll this job ID for status. |
project_id | string | The project created for this job. |
status | string | Always 'queued' on submit. |
voice_type | string | Voice type resolved from the request mode. |
total_segments | integer | Echoed count of submitted segments. |
charge | ChargeInfo | Billing detail for this submission. |
ExternalSegment
source_text | string | Original text for this segment. |
start_time | number | Segment start, in seconds. Used for speaker-voice matching only, not output timing. |
end_time | number | Segment end, in seconds. Used for speaker-voice matching only, not output timing. |
words | object[] | Word-level timing; defaults to empty. |
speaker | object | null | Speaker metadata for voice selection. |
translated_text | string | null | Pre-supplied translation. If provided, translation is skipped for this segment. |
ConsentAttestation
speaker_consent_obtained | boolean | null | Attests that explicit consent has been obtained from all identifiable speakers. Required for voice_matched mode only. |
content_rights_confirmed | boolean | Attests ownership or a valid license to the content. Required in both modes. |
eula_accepted | boolean | Confirms the client has read and accepts the Addavox EULA. Required in both modes. |
attested_by | string | Email or identifier of the responsible individual or system. |
attested_at | string | ISO 8601 timestamp of attestation. Must be within 24 hours of the request. |
ChargeInfo
amount | number | Total amount charged for this submission, in USD. |
rate_per_min | number | Per-minute rate applied. |
duration_min | number | Billed minutes (for text services, characters/1000). |
num_languages | integer | Number of target languages billed. |
credit_balance_after | number | Account credit balance after the charge, in USD. |
/api/v1/translate-narrate
API key
Translate + Narrate — preset voice
Translate your text to the target language and narrate it in a preset voice. Source and target language must differ.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
audio_url | string | Yes | HTTPS URL of the source audio; also used to identify/match speaker voices. |
source_language | string | Yes | Source language code, e.g. 'en-US'. |
target_language | string | Yes | Target language code, e.g. 'es-ES'. |
segments | ExternalSegment[] | Yes | The pre-segmented transcript to voice. |
project_name | string | null | No | Optional project name. Defaults to 'API: {source}->{target}'. |
consent | ConsentAttestation | Yes | Consent attestation; see Consent & Authorization. |
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Poll this job ID for status. |
project_id | string | The project created for this job. |
status | string | Always 'queued' on submit. |
voice_type | string | Voice type resolved from the request mode. |
total_segments | integer | Echoed count of submitted segments. |
charge | ChargeInfo | Billing detail for this submission. |
ExternalSegment
source_text | string | Original text for this segment. |
start_time | number | Segment start, in seconds. Used for speaker-voice matching only, not output timing. |
end_time | number | Segment end, in seconds. Used for speaker-voice matching only, not output timing. |
words | object[] | Word-level timing; defaults to empty. |
speaker | object | null | Speaker metadata for voice selection. |
translated_text | string | null | Pre-supplied translation. If provided, translation is skipped for this segment. |
ConsentAttestation
speaker_consent_obtained | boolean | null | Attests that explicit consent has been obtained from all identifiable speakers. Required for voice_matched mode only. |
content_rights_confirmed | boolean | Attests ownership or a valid license to the content. Required in both modes. |
eula_accepted | boolean | Confirms the client has read and accepts the Addavox EULA. Required in both modes. |
attested_by | string | Email or identifier of the responsible individual or system. |
attested_at | string | ISO 8601 timestamp of attestation. Must be within 24 hours of the request. |
ChargeInfo
amount | number | Total amount charged for this submission, in USD. |
rate_per_min | number | Per-minute rate applied. |
duration_min | number | Billed minutes (for text services, characters/1000). |
num_languages | integer | Number of target languages billed. |
credit_balance_after | number | Account credit balance after the charge, in USD. |
/api/v1/translate-narrate-matched
API key
Translate + Narrate — matched voice
Translate your text to the target language and narrate it in a voice matched from an audio sample you provide. There is no minimum length; samples of about 3–5 seconds or more work best. Source and target language must differ.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
audio_url | string | Yes | HTTPS URL of the source audio; also used to identify/match speaker voices. |
source_language | string | Yes | Source language code, e.g. 'en-US'. |
target_language | string | Yes | Target language code, e.g. 'es-ES'. |
segments | ExternalSegment[] | Yes | The pre-segmented transcript to voice. |
project_name | string | null | No | Optional project name. Defaults to 'API: {source}->{target}'. |
consent | ConsentAttestation | Yes | Consent attestation; see Consent & Authorization. |
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Poll this job ID for status. |
project_id | string | The project created for this job. |
status | string | Always 'queued' on submit. |
voice_type | string | Voice type resolved from the request mode. |
total_segments | integer | Echoed count of submitted segments. |
charge | ChargeInfo | Billing detail for this submission. |
ExternalSegment
source_text | string | Original text for this segment. |
start_time | number | Segment start, in seconds. Used for speaker-voice matching only, not output timing. |
end_time | number | Segment end, in seconds. Used for speaker-voice matching only, not output timing. |
words | object[] | Word-level timing; defaults to empty. |
speaker | object | null | Speaker metadata for voice selection. |
translated_text | string | null | Pre-supplied translation. If provided, translation is skipped for this segment. |
ConsentAttestation
speaker_consent_obtained | boolean | null | Attests that explicit consent has been obtained from all identifiable speakers. Required for voice_matched mode only. |
content_rights_confirmed | boolean | Attests ownership or a valid license to the content. Required in both modes. |
eula_accepted | boolean | Confirms the client has read and accepts the Addavox EULA. Required in both modes. |
attested_by | string | Email or identifier of the responsible individual or system. |
attested_at | string | ISO 8601 timestamp of attestation. Must be within 24 hours of the request. |
ChargeInfo
amount | number | Total amount charged for this submission, in USD. |
rate_per_min | number | Per-minute rate applied. |
duration_min | number | Billed minutes (for text services, characters/1000). |
num_languages | integer | Number of target languages billed. |
credit_balance_after | number | Account credit balance after the charge, in USD. |
Jobs & Results
/api/v1/jobs/{job_id}
API key
Job Status
Check the status of an external localization job.
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Echoes the job ID from the URL. |
type | string | Job type: voice | translate_voice | transcribe_translate_voice | video_dub. |
status | string | queued | running | completed | failed. For a video_dub job this is a true aggregate of its per-language children, not a per-child value. |
total_segments | integer | Total segment count. Always 0 on a video_dub master job. |
completed_segments | integer | Completed segment count. Always 0 on a video_dub master job. |
error | string | null | Failure message when status is 'failed'. |
/api/v1/jobs/{job_id}/result
API key
Job Result
Get the download URL for a completed external localization job.
Response
| Field | Type | Description |
|---|---|---|
transcript_url | string | null | (Transcription job) Signed URL of the transcript JSON. |
vocals_url | string | null | (Separation job) Signed URL of the vocals stem. |
background_url | string | null | (Separation job) Signed URL of the background stem. |
download_url | string | null | Signed URL (24h). Single voice track for an audio job, or a zip of all languages for a video dub. |
duration | number | null | (Audio job) Duration in seconds. |
file_size | integer | null | (Audio job) File size in bytes. |
project_id | string | null | (Video dub) The project ID. |
review_url | string | null | (Video dub) Web review URL for the project. |
languages | VideoJobResultLanguage[] | null | (Video dub) Per-language result URLs. |
VideoJobResultLanguage
language | string | Target language code for this result. |
video_url | string | null | Signed URL of the dubbed video (24h expiry). |
audio_url | string | null | Signed URL of the dubbed audio track (24h expiry). |
subtitle_url | string | null | Signed URL of the subtitle file (24h expiry). |
/api/v1/jobs/{job_id}
API key
Cancel Job
Cancel a queued or running job and refund the charge to the account balance.
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Echoes the cancelled job ID. |
status | string | Always 'cancelled'. |
refunded_amount | number | Amount refunded for the undelivered work, in USD. |
/api/v1/jobs
API key
List Jobs
List localization jobs for the authenticated account. Query params: status — filter by queued | running | completed | failed | cancelled limit — max results (default 20, max 100) offset — pagination offset (default 0)
Response
| Field | Type | Description |
|---|---|---|
jobs | JobListItem[] | The page of jobs, newest first. |
total | integer | Total jobs matching the query, across all pages. |
limit | integer | Page size used. |
offset | integer | Page offset used. |
JobListItem
job_id | string | Job ID. |
project_id | string | Project the job belongs to. |
type | string | Job type. |
target_language | string | null | Target language code, if applicable. |
status | string | queued | running | completed | failed | cancelled. |
total_segments | integer | Total segment count. |
completed_segments | integer | Completed segment count. |
error | string | null | Failure message when the job failed. |
created_at | string | null | ISO 8601 creation time. |
started_at | string | null | ISO 8601 start time, if started. |
completed_at | string | null | ISO 8601 completion time, if finished. |
charge | JobListCharge | null | Charge summary, present if the job was billed. |
/api/v1/jobs/{job_id}/webhooks
API key
Webhook Log
Return the webhook delivery log for a job (all attempts, newest first).
Response
| Field | Type | Description |
|---|---|---|
job_id | string | Echoes the job ID from the URL. |
deliveries | WebhookDelivery[] | All delivery attempts for the job, newest first. |
WebhookDelivery
id | string | null | Delivery attempt ID. |
event | string | null | Event type delivered, e.g. 'job.completed'. |
attempt | integer | null | Attempt number for this event. |
status_code | integer | null | HTTP status returned by the endpoint, if any. |
error | string | null | Delivery error, if the attempt failed. |
delivered_at | string | null | ISO 8601 time of the attempt. |
/api/v1/jobs/{job_id}/webhooks/retry
API key
Retry Webhook
Re-trigger webhook delivery for the most recent event on a job.
Response
| Field | Type | Description |
|---|---|---|
status | string | Always 'queued' — the event was re-queued for delivery. |
event | string | The event type that was re-queued. |
Account & Reference
/api/v1/account
API key
Account
Return credit balance and current plan for the authenticated account.
Response
| Field | Type | Description |
|---|---|---|
account_id | string | The account's ID. |
credit_balance | number | Prepaid credit balance, in USD. |
plan_id | string | Current plan ID, e.g. 'free', 'creator'. |
plan_name | string | Human-readable plan name. |
included_minutes | integer | Localization minutes included in the plan per period. |
minutes_used | number | Included minutes used this period. |
minutes_remaining | number | Included minutes remaining this period. |
overage_rate | number | Per-minute overage rate once included minutes are exhausted, in USD. |
billing_interval | string | null | 'monthly' or 'annual'; null on the free plan. |
subscription_status | string | Subscription status, e.g. 'active', 'past_due', 'free'. |
/api/v1/voices
API key
List Voices
Return available voices for a given language code. Query params: language — BCP-47 code, e.g. 'en-US', 'es-ES' (required) gender — optional filter: MALE | FEMALE
/api/v1/languages
API key
List Languages
Return supported languages. Query params: detail — if true, include provider metadata per language
/api/v1/projects/{project_id}/reviewers
API key
Invite Reviewer
Invite a reviewer to a project (API endpoint).
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Reviewer's display name, used in the invite email. |
email | string | Yes | Where the magic-link invite is sent. |
language | string | Yes | Target language code the reviewer will edit. |
Response
| Field | Type | Description |
|---|---|---|
id | string | New reviewer ID. |
name | string | Echoed from the request. |
email | string | Echoed from the request. |
token | string | Magic-link token, embedded in the emailed URL. Expires 7 days from creation. |
expires_at | string | null | Currently always null — not populated by this call. |
Ціни на послуги API
Окремі послуги тарифікуються похвилинно та не є частиною плану — ви платите лише за те, що телефонуєте, за єдиним фіксованим тарифом без річної знижки. Тільки повна локалізація відео використовує включені до плану хвилини. Текстові послуги обчислюються приблизно 1000 символів за хвилину.
| Сервіс | Що ви надсилаєте → що ви отримуєте | Оцінити |
|---|---|---|
| Розділення голосу | Аудіо → чистий голос + фонові треки | $0.02/хв |
| Транскрипція (STT) | Аудіо → текстова транскрипція з розділовими знаками та хронометражем на рівні слів | $0.02/хв |
| Pro Транскрипція | Аудіо → Розділення голосу + транскрипція (STT), найкраще для шумного аудіо | $0.05/хв |
| Переклад | Текст → перекладений текст | $0.02/хв |
| Озвучування (TTS) | Перекладений текст → озвучений аудіозапис попередньо встановленим голосом, який ви обираєте | $0.03/хв |
| Переклад + Озвучування — попередньо встановлений голос | Текст → перекладено, а потім озвучено попередньо встановленим голосом. Мова оригіналу та мова перекладу повинні відрізнятися. | $0.06/хв |
| Переклад + Озвучування — узгоджений голос | Текст + зразок голосу (мінімальної тривалості немає; найкраще 3–5 секунд або більше) → перекладено, а потім озвучено відповідним голосом. Мова оригіналу та мова перекладу повинні відрізнятися. | $0.08/хв |
Повна локалізація відео – це єдина послуга API пов’язана з тарифним планом: вона використовує хвилини, включені у ваш тарифний план, а потім перевищення тарифу стягується за тарифним планом. Переглянути плани та ціни