Skip to content

Quickstart

This walks from nothing to a parsed translation bundle. It takes about five minutes and needs only curl.

  1. Create an API token

    In the Localeo dashboard, open the project you want to read, then Project → API tokens → Create token. Give it a name that says where it will be used (ci-deploy, mobile-app), because that name is all you will have to identify it later.

    The token is shown once, at creation. Copy it now.

    localeo_9fK2xY7pQ3mNvB8sL1tR4wZ6cD0aJ5hG2eU7iO9k

    Keep it in the shell for the rest of this page:

    Terminal window
    export LOCALEO_TOKEN="localeo_9fK2xY7pQ3mNvB8sL1tR4wZ6cD0aJ5hG2eU7iO9k"
    export LOCALEO_API="https://api-public.localeo.app/v1"
  2. Confirm the token works

    Terminal window
    curl -s "$LOCALEO_API/projects" \
    -H "Authorization: Bearer $LOCALEO_TOKEN"
    {
    "items": [
    {
    "id": "Qk3vAe",
    "name": "Acme Web App",
    "base_language_code": "en",
    "created_at": "2026-01-15T09:30:00Z"
    }
    ]
    }

    A token is scoped to exactly one project, so items always holds exactly one entry. If you get 401, jump to Authentication.

  3. Find a release

    Terminal window
    curl -s "$LOCALEO_API/releases?page_size=5" \
    -H "Authorization: Bearer $LOCALEO_TOKEN"
    {
    "items": [
    {
    "id": "7bWq0R",
    "name": "Spring campaign copy",
    "tag": "v1.4.0",
    "status": "published",
    "published_at": "2026-03-02T14:05:00Z",
    "created_at": "2026-03-01T11:20:00Z"
    }
    ]
    }

    Releases come back newest-first. Only published ones are ever returned.

  4. Get its download URLs

    Terminal window
    curl -s "$LOCALEO_API/releases/7bWq0R" \
    -H "Authorization: Bearer $LOCALEO_TOKEN"
    {
    "id": "7bWq0R",
    "name": "Spring campaign copy",
    "tag": "v1.4.0",
    "status": "published",
    "published_at": "2026-03-02T14:05:00Z",
    "created_at": "2026-03-01T11:20:00Z",
    "languages": [
    {
    "code": "en",
    "is_base_language": true,
    "download_urls": {
    "json": "https://cdn.localeo.app/p/8Qw2ZrKt6Yb1Nc0P/r/Ld4Hs9Vx2Tg7Mq3B/en.json",
    "yaml": "https://cdn.localeo.app/p/8Qw2ZrKt6Yb1Nc0P/r/Ld4Hs9Vx2Tg7Mq3B/en.yaml",
    "arb": "https://cdn.localeo.app/p/8Qw2ZrKt6Yb1Nc0P/r/Ld4Hs9Vx2Tg7Mq3B/en.arb"
    }
    },
    {
    "code": "nl",
    "is_base_language": false,
    "download_urls": {
    "json": "https://cdn.localeo.app/p/8Qw2ZrKt6Yb1Nc0P/r/Ld4Hs9Vx2Tg7Mq3B/nl.json",
    "yaml": "https://cdn.localeo.app/p/8Qw2ZrKt6Yb1Nc0P/r/Ld4Hs9Vx2Tg7Mq3B/nl.yaml",
    "arb": "https://cdn.localeo.app/p/8Qw2ZrKt6Yb1Nc0P/r/Ld4Hs9Vx2Tg7Mq3B/nl.arb"
    }
    }
    ]
    }
  5. Download a bundle

    The download URLs need no token — they are unauthenticated CDN files:

    Terminal window
    curl -s "https://cdn.localeo.app/p/8Qw2ZrKt6Yb1Nc0P/r/Ld4Hs9Vx2Tg7Mq3B/nl.json"
    {
    "checkout.title": "Afrekenen",
    "checkout.submit": "Bestelling plaatsen"
    }

    That is the whole integration. Everything else is detail about doing it reliably.

Where to go next

  • Downloading the newest release without looking it up first → Releases & bundles
  • Handling 429 correctly → Rate limits
  • Why a second identical request is instant → Caching
  • Copy-pasteable Node, Go and CI examples → Recipes