Documentação
Endpoints da API v1, autenticação e exemplos.
Autenticação
Todas as rotas de /api/v1/* exigem header:
Authorization: Bearer sk-railter-XXXXXXXXXXXXXXXX
Crie keys no dashboard em Projetos → [seu projeto] → API Keys.
POST /api/v1/llm/chat
Chat completion via Claude, GPT-4o e outros. Suporta streaming SSE.
{
"model": "claude-sonnet-4-6",
"messages": [
{"role": "system", "content": "Você é útil."},
{"role": "user", "content": "Olá!"}
],
"stream": true,
"temperature": 0.7,
"max_tokens": 1024
}
GET /api/v1/llm/models
Lista os modelos disponíveis.
POST /api/v1/mail/send
Envia email transacional via Mailder.
{
"from": "[email protected]",
"to": ["[email protected]"],
"subject": "Assunto",
"html": "<p>Mensagem</p>"
}
GET /api/v1/usage
Consumo da API key atual: resumo do período, série por dia, quebra por modelo e as
últimas requisições (com request_id pra reconciliar
linha a linha com o corpo do /llm/chat).
GET /api/v1/usage?from=2026-07-01&to=2026-07-31&scope=key&include=series,models,recent&limit=100
from/to (padrão: últimos 30 dias, máximo 92),
scope = key (padrão) ou project,
include escolhe as seções, limit corta o
recent (1 a 1000, padrão 100).
O dia da série é cortado no fuso America/Sao_Paulo
(o mesmo que volta em period.timezone), não em UTC.
billed_cost_usd é o que você paga;
base_cost_usd é o custo do provider antes do markup — são números diferentes.
recent continua sendo "as últimas N requisições, de qualquer idade"
enquanto você não mandar from/to;
mandando, ela respeita o recorte junto com o resto. O modo em vigor vem em
period.recent_window
(todo_o_historico ou periodo).
Parâmetro com valor inválido devolve 400 com
error.code = invalid_request — nada é ajustado em silêncio.
base_cost_usd, margin_usd e
markup_percent podem vir null:
é o que acontece quando o recorte inclui requisições gravadas antes de o custo do provider
passar a ser registrado por linha. cost_breakdown_status
diz qual é o caso (completo, parcial,
sem_dado) e cost_breakdown_missing_requests
diz quantas linhas faltam. billed_cost_usd é sempre confiável.
As suas chamadas a este endpoint não entram no seu consumo: ler o medidor não gasta token nem custa nada, e um painel com polling se contaria sozinho.
GET /api/v1/keys/me
Info da API key sendo usada (scopes, limites, consumo do dia, projeto, organização).
Limites
Cada API key tem um teto de requisições por minuto e de tokens por dia (o dia vira à meia-noite
em America/Campo_Grande). Toda resposta traz
X-RateLimit-Limit, X-RateLimit-Remaining,
X-RateLimit-Reset e os equivalentes
X-RateLimit-Tokens-* — dá pra se regular sem precisar bater no teto.
Estourou, a API devolve 429 com Retry-After
e um corpo com error.code
(rate_limit_exceeded ou daily_token_limit_exceeded),
limit e retry_after. Limite zero = sem teto.
Durante a transição os limites rodam em modo observação: os headers já saem, mas nada é barrado.
O modo em vigor vem em rate_limit_mode no
GET /api/v1/keys/me — enquanto ele disser
shadow, nenhuma requisição sua leva 429; quando virar
enforce, o teto passa a valer. Trate os headers desde já.