docs

API reference.

Every endpoint you can call with an API key, generated from the same manifest the API is routed from, with worked request and response examples validated against the live schemas. Start with the developer quickstart for the end-to-end flow.

Building in JavaScript or TypeScript? You may not need the raw API at all. See the packages →

conventions

The shape of every request.

One base URL, one bearer header, JSON in and out. Keys carry scopes (translate:write, jobs:read) and a route needs the matching one. Account, billing, team, webhook and key management live in the app UI, not the API — a key can’t mint keys or change billing.

base URL
https://api.echo-lingua.com/v1
every request
Authorization: Bearer elk_live_2b7f…
Content-Type: application/json
reference · 19 endpoints

Endpoints you can call with a key.

Click any endpoint for its options, an example request and response, and copy-paste code in cURL, JS/TS, Python and PHP. Each shows the scope it needs; GET /v1/health is Public and needs no auth. Dashboard-only and admin operations aren’t listed — they need a signed-in session, not a key.

Jobs

The batch pipeline: create a job, size it, watch it, then download the repo-shaped bundle. Review, retry the misses, or reprocess from source.

Synchronous translation

Translate a string or the literals in a code snippet inline, no job to poll. Charged at job parity.

Templates

Scaffold blank per-locale PO files from a source, no translation, no charge.

Usage & cost

Read your current-period usage, spend and limits programmatically.

Service

A public liveness probe for status checks and monitoring.

19 of 19 endpoints shown
reading costs

Every amount is in micro-USD.

Money in the API is an integer count of micro-USD — millionths of a US dollar, so 1,000,000 is $1. Divide by a million to get dollars. Using integers means fractions of a cent never round: a small job can legitimately cost a few tenths of a cent.

micro-USD → USD
// Every *Micros field is an integer count of micro-USD (millionths of a dollar).
const usd = (micros) => micros / 1_000_000;

usd(52500);      // 0.0525   → about 5¢
usd(322500);     // 0.3225   → about 32¢
usd(1_000_000);  // 1.00     → one dollar

// Format it for display:
const fmt = (micros) =>
  new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' })
    .format(micros / 1_000_000);   // fmt(52500) → "$0.05"

The money fields

chargedMicros — what a job or estimate would debit from your balance.

creditRequiredMicros — the balance you need to start a job: the charge plus a small safety buffer.

Usage totals from GET /v1/usage use the same unit.

Example: a chargedMicros of 52500 is $0.0525.

Wire it into your pipeline.

Create a scoped key, POST one job, and let the signed webhook tell you it’s done.

Read the developer guide