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.
/v1/translateTranslate 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
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | required | Source slide job ID to translate. |
| target_language | string | required | ISO 639-1 code: en, de, fr, es, it, pt, nl, pl. |
| source_language | string | optional | Source language or "auto" to detect. Default: auto. |
| include_notes | boolean | optional | Also translate speaker notes. Default: false. |
| include_tables | boolean | optional | Translate table cells. Default: true. |
| concise_mode | boolean | optional | Prefer shorter translations for tight text boxes. Default: false. |
| name | string | optional | Human-readable job name. |
Response
{
"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.
# 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.
# 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.