Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.linguolink.dev/llms.txt

Use this file to discover all available pages before exploring further.

The public REST API lives under /api/v1 and is authenticated with an API key.

Base URL

https://linguolink.dev/api/v1
The base URL follows your deployment’s NEXT_PUBLIC_APP_URL. On a self-hosted instance, replace the host accordingly.

Authentication

Send your API key as a Bearer token:
Authorization: Bearer YOUR_API_KEY
API keys are prefixed with ll_ followed by 64 hex characters. The full key is shown only once at creation time — see API Keys.

Quick Test

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://linguolink.dev/api/v1/test
Returns the authenticated key’s name, organization, scopes, rate limit, and usage count.

Export Example

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://linguolink.dev/api/v1/export?project_id=YOUR_PROJECT_ID&language=en&format=json" \
  -o ./locales/en.json
The response is returned as a downloadable file (Content-Disposition: attachment).

Available Endpoints

GET  /api/v1/test                         # verify authentication (no scope required)
GET  /api/v1/project                      # authenticated key/org info (no scope required)
GET  /api/v1/export?project_id=...&language=en&format=json   # scope: export:read
GET  /api/v1/api-keys?limit=10&offset=0   # scope: admin
POST /api/v1/api-keys                      # scope: admin
GET  /api/v1/demo                          # no scope required
POST /api/v1/demo                          # scope: admin
There is currently no public endpoint for creating, updating, or deleting individual translations. Translation editing happens in the dashboard; the public API is read/export-oriented plus key management.

Export query parameters

ParameterRequiredDescription
project_idyesTarget project UUID
languageyesLocale code (e.g. en, fr, en-US)
formatnojson (default), csv, xliff, xml, or yaml
environmentnoApply environment-specific overrides (see Environment Overrides)
selected_idsnoJSON array of translation IDs to export a subset, e.g. ["id1","id2"]

Rate Limiting

Each API key has an hourly request limit (default 1000, configurable 1–10000). Every response includes:
X-RateLimit-Limit:     total requests allowed per hour
X-RateLimit-Remaining: requests remaining in the current window
X-RateLimit-Reset:     Unix timestamp (seconds) when the window resets

Error Handling

StatusMeaning
400Missing/invalid parameter (e.g. project_id or language)
401Missing, malformed, inactive, expired, or invalid API key
403Key lacks the required scope
404No translations found for the given project/language
409Conflict (e.g. an API key with that name already exists)
429Rate limit exceeded — back off until X-RateLimit-Reset
500Internal error
Implement retry with exponential backoff for 429 and transient 5xx failures. For the full interactive reference, see the API docs at /api-docs.

Next Steps