Build multilingual experiences with the Zoom Translator API

Shipping a product globally means translating your docs, changelogs, support articles, and UI strings into every market language. That usually means a localization vendor, a manual review cycle, and a release bottleneck—every time something changes.

The Zoom Translator API removes that bottleneck. Point it at an S3 prefix of text files and it translates the entire archive asynchronously, writing one output file per input to your destination bucket. For individual strings, fast mode handles on-demand translation in a single synchronous call. Both modes support bidirectional translation between English and eight other languages: Chinese (Simplified), Japanese, Spanish, French, German, Portuguese, Italian, and Korean.

What you can build

Fast mode is for anything that has to translate in the request/response loop—support chat messages, UI strings rendered on the fly, event Q&A, or short-form user feedback. Batch mode is for bulk content you can translate ahead of time—documentation, knowledge-base articles, email templates, release notes, and survey transcripts.

Get started

Prerequisites

  • A Zoom developer account on the Build platform
  • For batch: S3 bucket and IAM credentials for access
  • Node v24+

The quickstart app uses a Node.js/Express server to proxy requests to the Translator API and includes a web playground for translating text strings and submitting batch jobs.

Translator playground running a fast-mode translation on a text string

To run it locally:

  1. Clone the repository

    git clone https://github.com/zoom/ai-services-quickstart.git
    cd ai-services-quickstart
    npm install
    
  2. Configure your environment

    ZOOM_API_KEY=
    ZOOM_API_SECRET=
    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    AWS_SESSION_TOKEN=
    S3_INPUT_URI=
    S3_OUTPUT_URI=
    
  3. Start the server

    npm run start
    

    The server runs at http://localhost:4000.

  4. Run the playground

    Open a second terminal window and run:

    cd playground
    npm install
    npm run dev
    

    Navigate to http://localhost:5173 and select translator in the top right menu. You can translate text strings in fast mode or submit batch jobs against your S3 bucket.

Translate an S3 archive in batch

For large content collections, the API has a batch mode that accepts files directly from your S3 bucket. The playground wraps the same endpoint so you can iterate on a job config before scripting it.

Submitting a batch translation job from the playground

You can use the playground to submit a batch job or directly call the API endpoint:

curl -X POST https://api.zoom.us/v2/aiservices/translator/jobs \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "mode": "PREFIX",
      "source": "S3",
      "uri": "s3://bucket/docs/en/",
      "filters": { "include_globs": ["**/*.txt"] },
      "auth": {
        "aws": {
          "access_key_id": "AKIA...",
          "secret_access_key": "wJalrX...",
          "session_token": "FwoGZXIvYXdzE..."
        }
      }
    },
    "output": {
      "destination": "S3",
      "uri": "s3://bucket/docs/es/",
      "layout": "PREFIX"
    },
    "config": {
      "source_language": "en-US",
      "target_languages": ["es-ES"]
    },
    "notifications": {
      "webhook_url": "https://example.com/hooks/translator",
      "secret": "hmac-secret"
    }
  }'

The API returns a job_id immediately. When you include a webhook_url, a signed notification fires when the job completes—so your publishing pipeline can pick up translated files and deploy without polling. Use the Zoom Translator API to ship localized docs on the same day as your English release, keep support articles in sync across every market, and serve UI strings in your users' native language without a manual localization step. You can learn more in the Translator API docs.