Translate

Translate PowerPoint files while preserving all formatting, fonts, colors, charts, and images. Text-run-level replacement — no regeneration. $0.02 per slide, any deck size. Supports: en, de, fr, es, it, pt, nl, pl.

POST/v1/translate

Translate a PPTX file into a target language. Accepts a job_id (from a previous generate/render), a pptx_url, or pptx_base64. Async — returns job_id for polling.

Parameters

NameTypeRequiredDescription
job_idstringrequiredSource slide job ID to translate.
target_languagestringrequiredISO 639-1 code: en, de, fr, es, it, pt, nl, pl.
source_languagestringoptionalSource language or "auto" to detect. Default: auto.
include_notesbooleanoptionalAlso translate speaker notes. Default: false.
include_tablesbooleanoptionalTranslate table cells. Default: true.
concise_modebooleanoptionalPrefer shorter translations for tight text boxes. Default: false.
namestringoptionalHuman-readable job name.

Response

202
{
  "job_id": "tr-a1b2c3d4",
  "status": "queued",
  "name": "Q1 Report — German"
}

Examples

curl -X POST https://api.slideforge.dev/v1/translate \
  -H "Authorization: Bearer sf_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "job_id": "SLIDE_JOB_ID",
    "target_language": "de"
  }'

POST /v1/translate/from-job

Convenience endpoint — translate directly from a generation job ID. Same parameters as POST /v1/translate.

curl
# Translate from a previous generation job
curl -X POST https://api.slideforge.dev/v1/translate/from-job \
  -H "Authorization: Bearer sf_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "job_id": "GENERATE_JOB_ID",
    "target_language": "fr",
    "concise_mode": true
  }'

Translating uploaded files

Pass pptx_base64 to translate a file you already have. Max ~10 MB inline. For larger files, upload first via POST /v1/assets/upload and pass the pptx_url.

curl
# Translate an uploaded .pptx file (base64)
curl -X POST https://api.slideforge.dev/v1/translate \
  -H "Authorization: Bearer sf_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pptx_base64": "UEsDBBQAAAAIAA...",
    "target_language": "es",
    "include_notes": true
  }'

Overflow warnings

Some languages expand significantly (e.g. English → German ~30%). When translation pushes text beyond its original shape bounds, the response includes overflow warnings per slide. Use concise_mode: true to ask the LLM to prefer shorter translations for tight layouts.