Referência da API
A API segue o formato OpenAI em https://ai.geraikita.com/v1 e o formato Anthropic em https://ai.geraikita.com. Todos os bodies de requisição e resposta são em JSON (UTF-8).
| Endpoint | Função |
|---|---|
| POST /v1/chat/completions | Chat no formato OpenAI (com e sem stream) |
| POST /v1/messages | Messages no formato Anthropic (com e sem stream) |
| POST /v1/messages/count_tokens | Contagem de tokens do prompt no formato Anthropic — grátis |
| GET /v1/models | Lista de modelos disponíveis |
| POST /v1/images/generations | Gera imagens a partir de um prompt de texto, cobrado por imagem — veja Geração de imagens |
/v1/responses, /v1/embeddings) ainda não são suportados.Chat completions (OpenAI)
https://ai.geraikita.com/v1/chat/completionsGera uma resposta a partir de uma lista de mensagens. Headers: Authorization: Bearer gk-… e Content-Type: application/json.
Body da requisição
| Parâmetro | Tipo | Descrição |
|---|---|---|
model | string | Obrigatório. Id do modelo exatamente como na lista de modelos, sem prefixo. |
messages | array | Obrigatório. Array ordenado de mensagens; cada mensagem contém role e content. Pelo menos uma mensagem. |
stream | boolean | true para receber a resposta aos poucos via Server-Sent Events. |
max_tokens | integer | Limite de tokens da resposta. Se o saldo não for suficiente para o valor pedido, o servidor pode reduzi-lo automaticamente. |
temperature, top_p, stop | — | Repassado ao modelo como está. O suporte e a faixa de valores dependem do modelo. |
tools, tool_choice | array / object | Chamada de funções (tool calling) no formato OpenAI, repassada aos modelos que a suportam. |
Exemplo de requisição
curl https://ai.geraikita.com/v1/chat/completions \
-H "Authorization: Bearer gk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Olá!"}]
}'Exemplo de resposta
{
"id": "chatcmpl-…",
"object": "chat.completion",
"model": "claude-sonnet-5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 12, "completion_tokens": 9, "total_tokens": 21 }
}O objeto usage traz o número de tokens que serve de base para a cobrança — veja Preços e cobrança.
Messages (Anthropic)
https://ai.geraikita.com/v1/messagesEndpoint nativo da Anthropic para o SDK da Anthropic e o Claude Code CLI. Base URL no cliente = https://ai.geraikita.com (sem /v1).
Headers
| Header | Valor | Descrição |
|---|---|---|
| x-api-key | gk-… | Sua chave de API gk- (Authorization: Bearer também é aceito). |
| anthropic-version | 2023-06-01 | Versão da API da Anthropic; enviada automaticamente pelo SDK. |
| content-type | application/json | — |
Body da requisição
| Parâmetro | Tipo | Descrição |
|---|---|---|
model | string | Obrigatório. Id do modelo exatamente como na lista de modelos, sem prefixo. |
messages | array | Obrigatório. Array de mensagens no formato Anthropic, com pelo menos uma mensagem. |
max_tokens | integer | Limite de tokens da resposta (obrigatório no formato Anthropic). |
system | string / array | Instruções de sistema (opcional). |
stream | boolean | true para receber a resposta aos poucos via Server-Sent Events. |
Exemplo de requisição
curl https://ai.geraikita.com/v1/messages \
-H "x-api-key: gk-xxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Olá!"}]
}'Precisa contar os tokens antes de enviar? POST https://ai.geraikita.com/v1/messages/count_tokens aceita o mesmo body e não é cobrado.
Lista de modelos
https://ai.geraikita.com/v1/modelsRetorna a lista de ids de modelo que podem ser enviados no campo model. Se chamado com uma chave restrita por allowlist, só aparecem os modelos permitidos. Com o header x-api-key ou anthropic-version, a resposta segue o formato Anthropic.
curl https://ai.geraikita.com/v1/models \
-H "Authorization: Bearer gk-xxxxxxxx"Streaming (SSE)
Com "stream": true, a resposta é enviada como text/event-stream. O servidor envia os headers imediatamente e depois uma linha de comentário keepalive : ka a cada 10 segundos durante a espera, para que a conexão não seja considerada morta. Defina o timeout total do seu app para pelo menos 300 segundos.
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}
: ka
data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}
data: [DONE]- Formato OpenAI: cada trecho é uma linha
data:com um JSON contendochoices[].delta, terminando comdata: [DONE]. - Formato Anthropic: eventos
message_start,content_block_delta, …,message_stop, como na API da Anthropic. - Ignore as linhas que começam com dois-pontos (
:): são keepalive, não dados. Os guias por ferramenta estão em Configurações de ferramentas agênticas.