Skip to main content
Translate text to any of 100+ supported languages using neural machine translation.
Endpoint
POST /translate/v1/translate
curl -X POST https://api.case.dev/translate/v1/translate \
  -H "Authorization: Bearer sk_case_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": "The plaintiff filed a motion for summary judgment.",
    "target": "es"
  }'
casedev translate:v1 translate \
  --q "The deposition will be held on Monday." \
  --target es
import Casedev from 'casedev';

const client = new Casedev({ apiKey: 'sk_case_YOUR_API_KEY' });

const result = await client.translate.v1.translate({
  q: 'The plaintiff filed a motion for summary judgment.',
  target: 'es'
});

console.log(result.data.translations[0].translatedText);
// "El demandante presentó una moción de juicio sumario."
import casedev

client = casedev.Casedev(api_key='sk_case_YOUR_API_KEY')

result = client.translate.v1.translate(
    q='The plaintiff filed a motion for summary judgment.',
    target='es'
)

print(result.data.translations[0].translated_text)
# "El demandante presentó una moción de juicio sumario."
result, _ := client.Translate.V1.Translate(ctx, casedev.TranslateV1TranslateParams{
	Q:      casedev.F("The deposition will be held on Monday at 10:00 AM."),
	Target: casedev.F("es"),
})
fmt.Println(result.Data.Translations[0].TranslatedText)
Response
{
  "data": {
    "translations": [
      {
        "translatedText": "El demandante presentó una moción de juicio sumario.",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}

Parameters

Required

ParameterTypeDescription
qstring or string[]Text to translate. Can be a single string or array for batch translation.
targetstringTarget language code (ISO 639-1), e.g., es, fr, de, zh

Optional

ParameterTypeDefaultDescription
sourcestringauto-detectSource language code. If omitted, language is automatically detected.
formatstringtextFormat of source text: text or html
modelstringnmtTranslation model: nmt (neural) or base

Batch translation

Translate multiple strings in a single request:
casedev translate:v1 translate \
  --q "The deposition will be held on Monday." \
  --target es
const result = await client.translate.v1.translate({
  q: [
    'Hello',
    'Goodbye',
    'Thank you',
    'Please sign here'
  ],
  target: 'fr',
  source: 'en'
});

result.data.translations.forEach((t, i) => {
  console.log(t.translatedText);
});
// "Bonjour"
// "Au revoir"
// "Merci"
// "Veuillez signer ici"
result = client.translate.v1.translate(
    q=[
        'Hello',
        'Goodbye',
        'Thank you',
        'Please sign here'
    ],
    target='fr',
    source='en'
)

for t in result.data.translations:
    print(t.translated_text)
# "Bonjour"
# "Au revoir"
# "Merci"
# "Veuillez signer ici"
result, _ := client.Translate.V1.Translate(ctx, casedev.TranslateV1TranslateParams{
	Q:      casedev.F("The deposition will be held on Monday at 10:00 AM."),
	Target: casedev.F("es"),
})
fmt.Println(result.Data.Translations[0].TranslatedText)

HTML preservation

Preserve HTML tags during translation with format: 'html':
curl -X POST https://api.case.dev/translate/v1/translate \
  -H "Authorization: Bearer sk_case_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": "<p>The <strong>defendant</strong> denies all allegations.</p>",
    "target": "de",
    "format": "html"
  }'
casedev translate:v1 translate \
  --q "The deposition will be held on Monday." \
  --target es
const result = await client.translate.v1.translate({
  q: '<p>The <strong>defendant</strong> denies all allegations.</p>',
  target: 'de',
  format: 'html'
});

console.log(result.data.translations[0].translatedText);
// "<p>Der <strong>Beklagte</strong> bestreitet alle Anschuldigungen.</p>"
result = client.translate.v1.translate(
    q="<p>The <strong>defendant</strong> denies all allegations.</p>",
    target="de",
    format="html"
)

print(result.data.translations[0].translated_text)
# "<p>Der <strong>Beklagte</strong> bestreitet alle Anschuldigungen.</p>"
result, _ := client.Translate.V1.Translate(ctx, casedev.TranslateV1TranslateParams{
	Q:      casedev.F("<p>The <strong>defendant</strong> denies all allegations.</p>"),
	Target: casedev.F("de"),
	Format: casedev.F("html"),
})
fmt.Println(result.Data.Translations[0].TranslatedText)

Common language codes

LanguageCode
Englishen
Spanishes
Frenchfr
Germande
Chinese (Simplified)zh
Chinese (Traditional)zh-TW
Japaneseja
Koreanko
Arabicar
Portuguesept
Russianru
Italianit
See the Supported Languages endpoint for a complete list.

Examples

casedev translate:v1 translate \
  --q "NOTICE OF MOTION - PLEASE TAKE NOTICE that the undersigned..." \
  --target es
const document = `
NOTICE OF MOTION

PLEASE TAKE NOTICE that the undersigned will move this Court
at the Courthouse located at 100 Centre Street, New York, NY
on the 15th day of January, 2025, at 9:30 a.m., for an order...
`;

const result = await client.translate.v1.translate({
  q: document,
  target: 'es'
});
document = """
NOTICE OF MOTION

PLEASE TAKE NOTICE that the undersigned will move this Court
at the Courthouse located at 100 Centre Street, New York, NY
on the 15th day of January, 2025, at 9:30 a.m., for an order...
"""

result = client.translate.v1.translate(q=document, target='es')
document := `
NOTICE OF MOTION

PLEASE TAKE NOTICE that the undersigned will move this Court
at the Courthouse located at 100 Centre Street, New York, NY
on the 15th day of January, 2025, at 9:30 a.m., for an order...
`

result, _ := client.Translate.V1.Translate(ctx, casedev.TranslateV1TranslateParams{
	Q:      casedev.F(document),
	Target: casedev.F("es"),
})

Auto-detect source language

casedev translate:v1 translate \
  --q "Bonjour, comment puis-je vous aider?" \
  --target en
// Source language is detected automatically
const result = await client.translate.v1.translate({
  q: 'Bonjour, comment puis-je vous aider?',
  target: 'en'
});

console.log(result.data.translations[0].detectedSourceLanguage); // "fr"
console.log(result.data.translations[0].translatedText); // "Hello, how can I help you?"
# Source language is detected automatically
result = client.translate.v1.translate(
    q='Bonjour, comment puis-je vous aider?',
    target='en'
)

print(result.data.translations[0].detected_source_language)  # "fr"
print(result.data.translations[0].translated_text)  # "Hello, how can I help you?"
// Source language is detected automatically
result, _ := client.Translate.V1.Translate(ctx, casedev.TranslateV1TranslateParams{
	Q:      casedev.F("Bonjour, comment puis-je vous aider?"),
	Target: casedev.F("en"),
})

fmt.Println(result.Data.Translations[0].DetectedSourceLanguage) // "fr"
fmt.Println(result.Data.Translations[0].TranslatedText)         // "Hello, how can I help you?"
Pricing: $0.05 per 1,000 characters. A 50,000 character document costs $2.50.