Browse API documentation
Apply for API access

POST /v1/translate

Translate Persian to English

Get an English translation of a Persian passage. The response retains the exact original text alongside the translation.

POSThttps://api.vowelmarks.com/v1/translate

Updated October 18, 2026 · API version 1

Request

Send one text field and no unknown fields. The input may contain mixed Persian and English, but it must include at least one Persian-script letter and may contain at most 6,000 Unicode code points. The complete serialized JSON body must be at most 32 KiB (32,768 bytes).

FieldTypeRequiredDescription
textstringYesPersian or mixed Persian-English text containing at least one Persian-script letter.
curl --fail-with-body https://api.vowelmarks.com/v1/translate \
  -H "Authorization: Bearer $VOWELMARKS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: lesson-42-translation" \
  --data '{"text":"من فارسی می‌خوانم"}'

Response

{
  "request_id": "95b…",
  "engine_version": "vowelmarks-api-v1.2026-08-10",
  "original": "من فارسی می‌خوانم",
  "translation": "I read Persian.",
  "source_language": "fa",
  "target_language": "en",
  "usage": {
    "meter": "text", "input_code_points": 17,
    "multiplier": 2, "units": 34,
    "additional_units": 0, "cache_hit": false
  }
}

Metering and failure behavior

Translation charges two text units for each submitted Unicode code point. The returned English text and response metadata are unmetered. A successful organization-isolated cache hit still charges the normal 2× amount; validation, provider, and failed-generation responses charge nothing.

  • Keep original visible if your product is meant to support Persian reading.
  • Do not parse undocumented provider or model details; they are deliberately absent.
  • Use request_id for support and Idempotency-Key for retries.
  • A retryable 503 means no configured path produced a valid result, not that a lower-quality translation was substituted.