locoloop Sign in Start free
Home / Developers

A REST API and an MCP server. Nothing to install.

We don't ship client libraries that go stale in six languages. A two-line curl in your build script has no dependency to update, and the MCP server lets an agent work with your strings directly.

Authentication

Scoped API keys, pinnable to one platform

Create a key in settings, pick read or write, and pin it to an organisation, a platform or a single project. Rotate without downtime; every key shows its last use.

→ Read-only keys for build pipelines → Write keys for CI that pushes new source strings → Project-pinned keys so a client's build can't read yours
Authorization: Bearer llp_live_8f2c…
# scope: read · project kestrel-ios-nordbank

Base URL  https://api.locoloop.dev/v1
Rate      600 req/min · 429 with Retry-After
Caching   ETag + If-None-Match on all exports

Push, pull and status

Verb
Path
What it does
GET
/projects/{id}/export
A locale as a file, in any supported format. ETag-cached — the one your build calls.
GET
/projects/{id}/keys
Paginated keys with every locale value, state and inheritance flag.
POST
/projects/{id}/keys
Create or upsert source strings from CI. Idempotent on key name.
PATCH
/projects/{id}/translations
Set or clear values in bulk. Clearing a value in a variant restores inheritance.
POST
/projects/{id}/import
Upload a file. Returns a dry-run diff before you commit it.
POST
/projects/{id}/translate
Queue an AI pass over untranslated keys. Returns a job you can poll.
POST
/platforms/{id}/projects
Create a custom project — a variant of the default — for a new client.
GET
/projects/{id}/glossary
Read or replace locked terms. Useful for syncing from an existing termbase.
Pull a locale at build time
curl -sfL -o de.xcstrings \
  -H "Authorization: Bearer $LOCOLOOP_KEY" \
  "$API/projects/kestrel-ios-nordbank/export?\
locale=de-DE&format=xcstrings&state=approved"

→ 200 · 4,182 keys · 41 KB · etag W/"c8f1"
→ 304 if nothing changed since your last build
Push a new source string from CI
POST /v1/projects/kestrel-ios-default/keys
{
  "name":    "wallet.limit.warn",
  "source":  "Daily limit reached",
  "context": "Banner when the cap is hit",
  "tags":    ["wallet", "errors"],
  "translate": true
}
→ 201 · queued for 8 locales · propagated to 2 variants
MCP server

Let a coding agent read and write strings

Add locoloop to Claude, Cursor or any MCP client. The agent can look up what a key means, propose translations, or check a term against the glossary — all scoped to the API key's permissions, so it can't reach a project you didn't grant.

list_keys get_translation propose_translation search_glossary project_context diff_variant
{ "mcpServers": {
    "locoloop": {
      "url": "https://mcp.locoloop.dev",
      "headers": {
        "Authorization": "Bearer llp_live_…"
      } } } }
In practice

“Which strings in the Nordbank variant still say Wallet instead of Konto?” — the agent calls diff_variant and search_glossary, then proposes the fixes for a human to approve.

Webhooks

Signed with HMAC-SHA256, retried with backoff for 24 hours, replayable from the dashboard.

key.created
translation.approved
locale.completed
variant.override_stale
export.ready

Conventions

Cursor pagination. Opaque cursors, 100 items default, 500 max.
Errors are typed. A stable machine code plus a human sentence, never just a 400.
Idempotency keys. On every POST, so a retried CI job doesn't duplicate work.
Versioned by URL. /v1 is supported for 24 months after /v2 ships.
OpenAPI 3.1 spec. Generate your own client if you want one — we just won't maintain it for you.

Get a key and pull your first locale in five minutes.

Start free