Echo developer platform

Build with Echo

A focused, OpenAI-compatible API with one Chat Completions endpoint and three clear lanes: Frontier, coding and tools, or efficient text chat.

POST
https://echo.tracerml.ai/v1/chat/completions
Base URL
https://echo.tracerml.ai
API base
https://echo.tracerml.ai/v1
Model
echo
Format
JSON or SSE
Compatibility scope

Echo supports text Chat Completions with one choice and optional streaming. Tool calls, function calls, multimodal content, and other OpenAI API surfaces are not part of this contract.

01

Access

Authentication

Send an Echo API key as a bearer token on every request. Create a key from the API keys page; the complete secret is shown only once.

HTTP header
Authorization: Bearer ECHO_API_KEY

Keep it server-side

Load keys from a secret manager or environment variable. Never ship them in browser or mobile client code.

Rotate deliberately

Create a replacement, deploy it, verify a request, then revoke the old key from your account.

02

First request

Chat completions quickstart

These examples call the same text completion endpoint. SDK examples disable automatic retries so your application can handle failures and idempotency intentionally.

Shell
curl --fail-with-body --silent --show-error \
  https://echo.tracerml.ai/v1/chat/completions \
  -H "Authorization: Bearer ${ECHO_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "echo",
    "messages": [
      {"role": "user", "content": "Explain recursion in one sentence."}
    ],
    "max_tokens": 128
  }'
03

One Echo balance

Pricing and consumption

Personal subscription credit and one-time top-ups fund the same USD balance. Use that balance in first-party Chat or through an API key, and select the model lane for each request.

01

echo

Frontier coordination for demanding work. It generally consumes more of the shared balance.

Best for
Frontier Chat and hard problems
Balance
Shared Echo credit
02

echo-lite

The efficient coding and tool lane for OpenCode and OpenAI-compatible agents.

Best for
Code and native tools
Balance
Shared Echo credit
03

echo-chat-lite

Efficient text chat with Echo's conversational personality. It does not accept tools.

Best for
Lite Chat and text API calls
Balance
Shared Echo credit
Successful request debitcompleted attributable compute under the current rate card
Subscription first, then top-up

Monthly subscription credit is spent first. Purchased top-up credit is spent afterward and does not expire. Failed requests and internal provider retries are not separate charges. Review the balance or add credit from Pricing.

The dashboard balance is authoritative. Token counts remain visible for usage analysis, but they are not a separate wallet or invoice calculation.

04

Contract

Request format

Send a JSON object with a non-empty message history containing at least one user message. Conversations are stateless; include the history needed for each request.

FieldTypeBehavior
modelstringUse echo for Frontier, echo-lite for coding and tools, or echo-chat-lite for efficient text chat. The HTTP default is echo; SDK clients should set one explicitly.
messagesarrayRequired. Roles: system, developer, user, and assistant. Content must be text.
temperaturenumberOptional, from 0 through 2. Defaults to 0.
max_tokensintegerOptional output ceiling. Defaults to 2048. max_completion_tokens is accepted as an alias.
streambooleanOptional. Defaults to false; use true for SSE.
nintegerOnly 1 is supported.
reasoning_effortstringOptional: auto, none, low, medium, high, default, or full.
Capabilities follow the model lane

echo-lite accepts native function tools. echo-chat-lite is text-only and returns 400 tools_not_supported for non-empty tools. Images and audio are not supported by the bearer API.

05

Output

Response and usage

A successful non-streaming request returns one assistant message. Read the answer from choices[0].message.content and retain the X-Tracer-Request-ID response header for support.

200 · application/json
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1780000000,
  "model": "echo",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "Recursion solves a problem by reducing it to smaller instances of itself."
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 14,
    "total_tokens": 32
  }
}

Usage and cost fields

The standard usage object reports prompt, completion, and total tokens. It does not include a cost field, and token counts should not be treated as an invoice calculation.

For raw streaming clients, the optional X-Tracer-Progress: 1 header can add a tracer.usage event after a successful completion. Its usage payload may include:

echo_estimated_cost_usdEstimated Echo request cost in USD.
echo_cost_statusInformational estimation or metering status.
frontier_estimated_cost_low_usdGPT-5.6 Sol standard-list estimate for the same visible input and output.
frontier_estimated_cost_high_usdClaude Fable 5 standard-list estimate for the same visible input and output.
fable_estimated_cost_usdLegacy-compatible high end of the frontier comparison range.
fable_to_echo_ratioLegacy-compatible high-end comparison divided by the Echo estimate, or null.
comparison_basisThe visible input history and output used for comparison.
invoice_reconciledfalse; the event is not an invoice.

Cost events are optional. Use the account dashboard as the source for usage and billing records.

06

Incremental output

Streaming SSE

Set stream: true. Echo responds with text/event-stream; append each choices[0].delta.content value in order and stop when you receive data: [DONE].

Server-sent events
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","model":"echo","choices":[{"index":0,"delta":{"role":"assistant","content":"One"},"finish_reason":null}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","model":"echo","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]
1Buffer events

Network chunks do not map one-to-one to SSE events. Buffer until a blank-line delimiter.

2Read data lines

Join data: lines and ignore comment lines beginning with :.

3Handle failure

An error may arrive after HTTP 200. Treat an event with an error member as failure.

Progress extension

X-Tracer-Progress: 1 opts raw SSE clients into coarse tracer.progress, keep-alive comments, and an optional tracer.usage event. Do not enable it with an OpenAI SDK stream parser.

07

Failures

Errors

Application errors normally use an OpenAI-shaped error envelope. Framework validation failures, including malformed JSON or a missing body, may use a different 422 response shape.

Error envelope
{
  "error": {
    "message": "messages must be a non-empty array",
    "type": "invalid_request_error",
    "param": "messages",
    "code": "invalid_request"
  }
}
400

Invalid requestFix the request; do not retry it unchanged.

401

Authentication failedThe API key is missing, malformed, or unknown.

402

Echo credit requiredTop up the shared balance or upgrade the Personal subscription before retrying.

403

Access forbiddenThe key, model, scope, API access, or tenant policy forbids the request.

404

Model not foundSet the model to echo, echo-lite, or echo-chat-lite.

409

Idempotency conflictInspect the error code before deciding whether to issue a new request.

413

Payload too largeThe request body exceeded the deployment limit.

422

Body validation failedThe HTTP body could not be validated as a JSON object.

428

Terms requiredAccept the current legal terms in your Echo account.

429

Limit reachedHonor Retry-After when present, then retry with backoff and jitter.

503

Temporarily unavailableRetry cautiously with exponential backoff and a small attempt cap.

08

Admission

Rate limits

Echo enforces request-rate limits and may apply account-specific concurrency and daily request limits. Limits are attributed to the tenant associated with the API key and can vary by deployment or account.

Request rate
Concurrency
Daily usage
  • On 429, honor the Retry-After response header when present.
  • Otherwise use exponential backoff with jitter and a bounded retry count.
  • Do not retry validation, authentication, billing, or policy failures unchanged.
  • Monitor status, latency, interrupted streams, and X-Tracer-Request-ID.
09

Production

Security

Protect credentials

Store keys in a server-side secret manager. Redact authorization headers from logs and rotate after suspected exposure.

Proxy browser traffic

Echo does not expose a direct-browser CORS contract. Authenticate your own server proxy and have it add the key.

Minimize sensitive data

Do not place secrets or personal data in prompts, idempotency keys, or correlation headers unless required.

Render output safely

Apply encoding, validation, and content controls appropriate to the destination where model text is rendered.

Production checklist

Use the expected HTTPS origin

Validate configured base URLs against https://echo.tracerml.ai, cap user-supplied message sizes before forwarding, and retain request IDs without storing credentials or prompt text in operational logs.