MenuReferência da API

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).

EndpointFunção
POST /v1/chat/completionsChat no formato OpenAI (com e sem stream)
POST /v1/messagesMessages no formato Anthropic (com e sem stream)
POST /v1/messages/count_tokensContagem de tokens do prompt no formato Anthropic — grátis
GET /v1/modelsLista de modelos disponíveis
POST /v1/images/generationsGera imagens a partir de um prompt de texto, cobrado por imagem — veja Geração de imagens
No momento, apenas os endpoints acima estão disponíveis. Outros endpoints da OpenAI (por exemplo /v1/responses, /v1/embeddings) ainda não são suportados.

Chat completions (OpenAI)

POSThttps://ai.geraikita.com/v1/chat/completions

Gera uma resposta a partir de uma lista de mensagens. Headers: Authorization: Bearer gk-… e Content-Type: application/json.

Body da requisição

ParâmetroTipoDescrição
modelstringObrigatório. Id do modelo exatamente como na lista de modelos, sem prefixo.
messagesarrayObrigatório. Array ordenado de mensagens; cada mensagem contém role e content. Pelo menos uma mensagem.
streambooleantrue para receber a resposta aos poucos via Server-Sent Events.
max_tokensintegerLimite 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_choicearray / objectChamada 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

200 OK · application/json
{
  "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)

POSThttps://ai.geraikita.com/v1/messages

Endpoint nativo da Anthropic para o SDK da Anthropic e o Claude Code CLI. Base URL no cliente = https://ai.geraikita.com (sem /v1).

Headers

HeaderValorDescrição
x-api-keygk-…Sua chave de API gk- (Authorization: Bearer também é aceito).
anthropic-version2023-06-01Versão da API da Anthropic; enviada automaticamente pelo SDK.
content-typeapplication/json—

Body da requisição

ParâmetroTipoDescrição
modelstringObrigatório. Id do modelo exatamente como na lista de modelos, sem prefixo.
messagesarrayObrigatório. Array de mensagens no formato Anthropic, com pelo menos uma mensagem.
max_tokensintegerLimite de tokens da resposta (obrigatório no formato Anthropic).
systemstring / arrayInstruções de sistema (opcional).
streambooleantrue 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

GEThttps://ai.geraikita.com/v1/models

Retorna 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.

text/event-stream
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 contendo choices[].delta, terminando com data: [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.