REST API Reference

The Lingowright API is organized around REST. All requests accept and return JSON. The base URL for all endpoints is https://api.lingowright.com.

Authentication

Authenticate using your API key in the Authorization header:

cURL
$ curl https://api.lingowright.com/v1/locales \
  -H "Authorization: Bearer lwr_pk_your_api_key"

POST /v1/jobs — Upload a string file

Create a new translation job by uploading a source file. Returns a job ID you can poll for status.

Request
$ curl -X POST https://api.lingowright.com/v1/jobs \
  -H "Authorization: Bearer lwr_pk_your_api_key" \
  -F "file=@locales/en.json" \
  -F "locales=de,fr,ja,ar"
Response 201 Created
{
  "id": "job_8f2k9n1x",
  "status": "queued",
  "source_locale": "en",
  "target_locales": ["de", "fr", "ja", "ar"],
  "string_count": 847,
  "created_at": "2026-03-12T14:02:11Z"
}

GET /v1/jobs/{id} — Check job status

Response 200 OK
{
  "id": "job_8f2k9n1x",
  "status": "complete",
  "progress": {
    "translated": 847,
    "total": 847
  },
  "warnings": [
    {
      "key": "pay.proceed_button",
      "locale": "de",
      "type": "char_limit_near",
      "char_count": 29,
      "char_limit": 30
    }
  ],
  "completed_at": "2026-03-12T14:02:58Z"
}

GET /v1/jobs/{id}/output — Download translated files

Returns a zip archive containing translated files for all target locales, in the same format as the uploaded source file.

cURL
$ curl https://api.lingowright.com/v1/jobs/job_8f2k9n1x/output \
  -H "Authorization: Bearer lwr_pk_your_api_key" \
  -o output.zip
$ unzip output.zip -d locales/
  de.json  fr.json  ja.json  ar.json

GET /v1/locales — List supported locales

Response 200 OK
{
  "locales": [
    { "code": "de", "name": "German", "rtl": false },
    { "code": "ar", "name": "Arabic", "rtl": true, "plural_forms": 6 },
    { "code": "ja", "name": "Japanese", "rtl": false }
  ]
}