Ditto API Dev Test Console

Paste an API key below and use the endpoint panels to send test requests against the server's /api routes.

Example language:

Dubbing

GET/api/dubbing/l
List projects (dubbing)

Retrieve a paginated list of dubbing projects for the authenticated user.

Parameters dictionary4 items
pagequery stringinteger
Optional

Zero-based page number to retrieve. Must be a non-negative integer; invalid or NaN values are rejected.

Default: 0

filtersquery stringJSON object or stringified JSON
Optional

Optional filters object. When using query strings, encode as JSON (e.g. filters={"state":"verified"}).

filters.statequery stringstring
Optional

Scope results to a single workflow state such as `pending_upload`, `processing`, or `verified`.

Provide inside the `filters` object.

filters.youtube_video_idquery stringstring
Optional

Filter projects that were created from a specific YouTube video ID.

Provide inside the `filters` object.

Example response
{
  "projects": [
    {
      "project_id": "YOUR_PROJECT_ID_1",
      "name": "OnePlus 15 Scratch Short",
      "state": "draft_transcription",
      "seconds": 59,
      "created_at": "2025-11-13T03:14:52.607Z",
      "validated_at": null,
      "source_language": "en",
      "folder_id": null,
      "thumbnail": "https://dittorosetta.s3.amazonaws.com/projects/example/thumbnail.webp",
      "automatic": false,
      "priority": null,
      "project_languages": [
        {
          "state": "draft",
          "modified_at": "2025-11-13T03:14:52.717179+00:00",
          "language": "tr",
          "ditto_verified": false,
          "ditto_verified_state": null
        },
        {
          "state": "draft",
          "modified_at": "2025-11-13T03:14:52.737763+00:00",
          "language": "vi",
          "ditto_verified": false,
          "ditto_verified_state": null
        }
      ]
    },
    {
      "project_id": "YOUR_PROJECT_ID_2",
      "name": "BillionDollarPlayground_720p",
      "state": "verified",
      "seconds": 121,
      "created_at": "2025-11-11T07:25:49.416Z",
      "validated_at": "2025-11-11T07:50:39.989Z",
      "source_language": "en",
      "folder_id": "YOUR_FOLDER_ID",
      "thumbnail": "https://dittorosetta.s3.amazonaws.com/projects/example/thumbnail.webp",
      "automatic": false,
      "priority": null,
      "project_languages": [
        {
          "state": "complete",
          "modified_at": "2025-11-11T21:49:31.087961+00:00",
          "language": "es_mx",
          "ditto_verified": false,
          "ditto_verified_state": null
        }
      ]
    }
  ],
  "hasMore": true
}
How to call (curl)
curl -X GET "https://babelfish.dittodub.com/api/dubbing/l?page=0" \
  -H "x-api-key: $API_KEY"
Query params (JSON)Parsed into axios.params

Response and errors will appear below.

GET/api/dubbing
Get project (dubbing)

Fetch a single dubbing project by project_id.

Parameters dictionary1 item
project_idquery stringstring
Required

Project identifier returned by /api/dubbing or /api/dubbing/l. Must belong to the authenticated user.

Example response
{
  "project": {
    "project_id": "YOUR_PROJECT_ID",
    "name": "Things I Would NEVER Buy As A Lawyer",
    "state": "verified",
    "seconds": 64,
    "created_at": "2025-10-27T17:11:48.880Z",
    "validated_at": "2025-10-24T15:00:32.276Z",
    "source_language": "en",
    "folder_id": null,
    "thumbnail": "https://dittorosetta.s3.amazonaws.com/projects/example/thumbnail.webp",
    "automatic": false,
    "priority": null,
    "project_languages": [
      {
        "state": "complete",
        "modified_at": "2025-10-27T17:14:12.405043+00:00",
        "language": "ja"
      }
    ],
    "metadata": {
      "youtube_video_id": "GZCW7pcXaJg",
      "channel_id": "UCKmmERguliWTynG9OIoDhDw",
      "source": "youtube"
    }
  }
}
How to call (curl)
curl -X GET "https://babelfish.dittodub.com/api/dubbing?project_id=YOUR_PROJECT_ID" \
  -H "x-api-key: $API_KEY"
Query params (JSON)Parsed into axios.params

Response and errors will appear below.

POST/api/dubbing
Create project (dubbing)

Create a new dubbing project from a YouTube video or direct media URL.

Parameters dictionary10 items
languagesJSON bodystring[]
Required

Array of Ditto language/locale codes (for example `es`, `fr`, `en_in`). Each value must be a supported locale.

youtube_video_idJSON bodystring
Optional

11-character YouTube video ID for a public/accessible video. Ditto imports metadata directly from YouTube when this is present.

Required unless you provide `source_url`.

source_urlJSON bodystring
Optional

HTTPS/HTTP URL to a downloadable audio or video file you host. The server verifies that the URL is reachable, then runs ffprobe to determine the duration automatically.

Required unless you provide `youtube_video_id`.

source_titleJSON bodystring
Optional

Friendly title for the remote media when using `source_url`. Falls back to "Untitled" if omitted.

source_descriptionJSON bodystring
Optional

Optional description that will be stored with the project record when providing a custom media URL.

source_thumbnailJSON bodystring
Optional

HTTPS URL for a thumbnail image that represents the uploaded media.

source_tagsJSON bodystring[]
Optional

Optional array of tag strings. Only string values are stored; other types are ignored.

source_languageJSON bodystring
Optional

Optional override for the source media language (use Ditto locale codes such as `en` or `es_mx`). Values are validated and truncated to the base language internally.

Default: "detect"

ditto_transcript_verifiedJSON bodyboolean
Optional

Set to true to request Ditto's transcript verification workflow. This reserves extra seconds equal to the media duration.

automaticJSON bodyboolean
Optional

Toggle Ditto's intelligent automatic settings (accepts true/false; string values are coerced).

How to call (curl)
curl -X POST "https://babelfish.dittodub.com/api/dubbing" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "languages": ["es"], "youtube_video_id": "dQw4w9WgXcQ", "automatic": true }'
JSON bodySent as application/json

Response and errors will appear below.

POST/api/dubbing/language
Add languages (dubbing)

Add one or more languages to an existing dubbing project.

Parameters dictionary2 items
project_idJSON bodystring
Required

ID of the project you are extending. The authenticated user must own the project.

Also accepts: projectId

languagesJSON bodystring[]
Required

Array of target language codes to add. Values must be unique, valid, and not already present on the project.

Example response
{
  "success": true,
  "message": "Languages created successfully."
}
How to call (curl)
curl -X POST "https://babelfish.dittodub.com/api/dubbing/language" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "project_id": "YOUR_PROJECT_ID", "languages": ["fr"] }'
JSON bodySent as application/json

Response and errors will appear below.

GET/api/dubbing/download
Download resources (dubbing)

Download audio or subtitle files for a verified dubbing project.

Parameters dictionary4 items
project_idquery stringstring
Required

ID of the verified project. Also used by the server's project-validation middleware.

Also accepts: projectId

typequery stringstring
Optional

Resource type to download. Audio returns signed URLs for mp3 files; subtitles proxies through the transcript download path.

Default: "audio"

Allowed: audio, subtitles

languagequery stringstring
Optional

Locale code (e.g., `es`, `fr_ca`) used to build the audio file path.

Required when `type` is "audio" (or omitted). Use one of the languages originally requested on the project.

formatquery stringstring
Optional

Subtitle format. Only evaluated when `type=subtitles`; other values are rejected.

Default: "vtt" when type=subtitles

Allowed: vtt, srt

Example response
(Binary file data)
How to call (curl)
curl -X GET "https://babelfish.dittodub.com/api/dubbing/download?type=audio&project_id=YOUR_PROJECT_ID&language=es" \
  -H "x-api-key: $API_KEY"
Query params (JSON)Parsed into axios.params

Response and errors will appear below.

GET/api/dubbing/download/subtitles
Download subtitles (dubbing)

Download subtitles for a verified project. Defaults to the source language when `language` is omitted. Returns VTT unless `format=srt` is provided.

Parameters dictionary3 items
project_idquery stringstring
Required

ID of the verified project. The authenticated user must own the project.

Also accepts: projectId

languagequery stringstring
Optional

Locale code for subtitles. When omitted, defaults to `es`; the server will fall back to the source language if that subtitle set is unavailable.

Default: "es"

formatquery stringstring
Optional

Subtitle file format.

Default: "srt"

Allowed: vtt, srt

Example response
(VTT or SRT file data)
How to call (curl)
curl -X GET "https://babelfish.dittodub.com/api/dubbing/download/subtitles?project_id=YOUR_PROJECT_ID&language=es&format=srt" \
  -H "x-api-key: $API_KEY"
Query params (JSON)Parsed into axios.params

Response and errors will appear below.

GET/api/dubbing/download/metadata
Get project metadata (dubbing)

Return the project's metadata (title, description, tags) for a specific language. Falls back to source language when `language` is omitted or set to `Original`.

Parameters dictionary2 items
project_idquery stringstring
Required

ID of the project to fetch metadata for. Must belong to the authenticated user.

Also accepts: projectId

languagequery stringstring
Optional

Locale code to request metadata in. When omitted or set to `Original`, the source language metadata is returned.

Default: "Original"

Example response
{
  "metadata": {
    "title": "Sample Video",
    "description": "A walkthrough of our latest features.",
    "tags": [
      "product",
      "walkthrough"
    ],
    "language": "es"
  }
}
How to call (curl)
curl -X GET "https://babelfish.dittodub.com/api/dubbing/download/metadata?project_id=YOUR_PROJECT_ID&language=es" \
  -H "x-api-key: $API_KEY"
Query params (JSON)Parsed into axios.params

Response and errors will appear below.

Languages

GET/api/languages
List available languages

List languages and dialects supported by Ditto for dubbing.

Parameters dictionaryNo request parameters

This endpoint does not accept any request parameters.

How to call (curl)
curl -X GET "https://babelfish.dittodub.com/api/languages" \
  -H "x-api-key: $API_KEY"
Query params (JSON)Parsed into axios.params

Response and errors will appear below.

Account

GET/api/account
Get account details

Retrieve basic account details for the authenticated API key.

Parameters dictionaryNo request parameters

This endpoint does not accept any request parameters.

How to call (curl)
curl -X GET "https://babelfish.dittodub.com/api/account" \
  -H "x-api-key: $API_KEY"
Query params (JSON)Parsed into axios.params

Response and errors will appear below.