GET /v1/pricing — Rate Card
Returns the rate card: the price of every line on a Lokutor bill, and the rules of the prepaid balance. It is the one copy of the prices: the dashboard, lokutor.com/pricing and Pricing and billing all read from it. Public, no API key, CORS open, so a browser page can read it directly.
All prices are in US dollars, before tax. How each one is applied (per second, per token, per started minute) is explained in Pricing and billing.
Response
Content-Type: application/json, Cache-Control: public, max-age=300.
{
"version": "2026-10-09.1",
"currency": "USD",
"notes": "Prices before tax. …",
"agent": {
"platform_per_minute": 0.042,
"billing": "per_second"
},
"llm": {
"input_per_million_tokens": 0.44,
"output_per_million_tokens": 0.94,
"speculative_replies_default": true
},
"phone": {
"billing": "per_started_minute",
"inbound": { "ES": 0.035, "PT": 0.025, "FR": 0.028, "IT": 0.035, "DE": 0.028, "AT": 0.028, "CH": 0.028,
"BE": 0.035, "NL": 0.035, "LU": 0.025, "GB": 0.025, "IE": 0.025, "US": 0.019, "CA": 0.021 },
"outbound_fixed": { "ES": 0.049, "PT": 0.066, "FR": 0.025, "IT": 0.047, "DE": 0.028, "AT": 0.027, "CH": 0.098,
"BE": 0.084, "NL": 0.042, "LU": 0.084, "GB": 0.022, "IE": 0.041, "US": 0.025, "CA": 0.025 },
"outbound_mobile": { "ES": 0.105, "FR": 0.084, "DE": 0.093, "AT": 0.087, "GB": 0.077, "IE": 0.077 },
"number_per_month": 5.0
},
"crm_logged_call": 0.04,
"web_search": 0.15,
"tts_per_million_chars": 4.1,
"stt_per_minute": 0.0014,
"denoise_per_minute": 0.0014,
"wallet": {
"min_topup": 10,
"max_topup": 2000,
"signup_bonus": 5,
"signup_bonus_days": 90,
"overdraft": 2,
"min_session_start": 0.25,
"concurrency_default": 10,
"concurrency_before_topup": 3,
"auto_recharge": { "threshold": 5, "amount": 20, "monthly_cap": 500 }
}
}
Fields
| Field | Type | Description |
|---|---|---|
version | string | The card’s version. A session is charged entirely at the version in force when it started, and your usage records which version it was charged at. |
currency | string | Always "USD". |
agent.platform_per_minute | number | A voice-agent session, per minute, billed per second (agent.billing). |
llm.input_per_million_tokens | number | Language-model input tokens, per million. |
llm.output_per_million_tokens | number | Language-model output tokens, per million. |
llm.speculative_replies_default | boolean | Whether an agent starts replies during the caller’s pause unless its config says otherwise (speculative_llm). See Speculative replies. |
phone.billing | string | "per_started_minute": a phone line is billed by the started minute, on top of the agent. |
phone.inbound | object | Per minute of a call your agent receives, by the ISO country code of your number. |
phone.outbound_fixed | object | Per minute of a call your agent makes to a landline, by destination country. |
phone.outbound_mobile | object | Per minute of a call your agent makes to a mobile, by destination country. A country missing here cannot have its mobiles called, except the US and Canada, whose mobiles are charged the landline rate. |
phone.number_per_month | number | A phone number, per month, from the balance. |
crm_logged_call | number | Per call that reaches your CRM (the caller looked up or identified, or the call logged). |
web_search | number | Per web search that returns an answer. |
tts_per_million_chars | number | Text-to-speech API, per million characters synthesized. |
stt_per_minute | number | Speech-to-text API, per minute of audio, billed per second. |
denoise_per_minute | number | Noise removal (/denoise), per minute of audio, billed per second. |
wallet.min_topup, wallet.max_topup | number | The smallest and largest top-up in one payment. |
wallet.signup_bonus, wallet.signup_bonus_days | number | The welcome credit and how many days it lasts. |
wallet.overdraft | number | How far below zero calls in progress may take the balance before the agent says goodbye. |
wallet.min_session_start | number | The balance needed to start a session or request. |
wallet.concurrency_default | number | Sessions an account may hold at once after its first top-up. |
wallet.concurrency_before_topup | number | Sessions an account may hold at once before its first top-up. |
wallet.auto_recharge | object | Default auto-recharge settings: recharge amount when the balance falls below threshold, up to monthly_cap a month. |
Example: price a call
const card = await (await fetch('https://api.lokutor.com/v1/pricing')).json();
// A 3-minute call received on a Spanish number, with 62,100 input and 3,900 output tokens.
const seconds = 180;
const platform = (seconds / 60) * card.agent.platform_per_minute;
const tokens = (62_100 * card.llm.input_per_million_tokens + 3_900 * card.llm.output_per_million_tokens) / 1e6;
const line = Math.ceil(seconds / 60) * card.phone.inbound.ES; // per started minute
console.log((platform + tokens + line).toFixed(3)); // "0.262"
cURL
curl -s https://api.lokutor.com/v1/pricing | jq .