Referencia de la API
La API sigue el formato OpenAI en https://ai.geraikita.com/v1 y el formato Anthropic en https://ai.geraikita.com. Todos los cuerpos de solicitud y de respuesta están en JSON (UTF-8).
| Endpoint | Función |
|---|---|
| POST /v1/chat/completions | Chat en formato OpenAI (con y sin stream) |
| POST /v1/messages | Messages en formato Anthropic (con y sin stream) |
| POST /v1/messages/count_tokens | Contar los tokens del prompt en formato Anthropic — gratis |
| GET /v1/models | Lista de modelos disponibles |
| POST /v1/images/generations | Genera imágenes a partir de un prompt de texto, se cobra por imagen — ver Generación de imágenes |
/v1/responses, /v1/embeddings) aún no son compatibles.Chat completions (OpenAI)
https://ai.geraikita.com/v1/chat/completionsGenera una respuesta a partir de una lista de mensajes. Cabeceras: Authorization: Bearer gk-… y Content-Type: application/json.
Cuerpo de la solicitud
| Parámetro | Tipo | Descripción |
|---|---|---|
model | string | Obligatorio. Id del modelo exactamente como aparece en la lista de modelos, sin prefijo. |
messages | array | Obligatorio. Array ordenado de mensajes; cada mensaje contiene role y content. Al menos un mensaje. |
stream | boolean | true para recibir la respuesta por partes mediante Server-Sent Events. |
max_tokens | integer | Límite de tokens de la respuesta. Si el saldo no alcanza para el valor solicitado, el servidor puede reducirlo automáticamente. |
temperature, top_p, stop | — | Se pasa al modelo tal cual. La compatibilidad y el rango de valores dependen del modelo. |
tools, tool_choice | array / object | Llamada a funciones (tool calling) en formato OpenAI, que se pasa a los modelos que la admiten. |
Ejemplo de solicitud
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": "¡Hola!"}]
}'Ejemplo de respuesta
{
"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 }
}El objeto usage contiene el número de tokens en que se basa la factura — consulta Precios y facturación.
Messages (Anthropic)
https://ai.geraikita.com/v1/messagesEndpoint nativo de Anthropic para el SDK de Anthropic y Claude Code CLI. URL base en el cliente = https://ai.geraikita.com (sin /v1).
Cabeceras
| Cabecera | Valor | Descripción |
|---|---|---|
| x-api-key | gk-… | Tu clave API gk- (también se acepta Authorization: Bearer). |
| anthropic-version | 2023-06-01 | Versión de la API de Anthropic; el SDK la envía automáticamente. |
| content-type | application/json | — |
Cuerpo de la solicitud
| Parámetro | Tipo | Descripción |
|---|---|---|
model | string | Obligatorio. Id del modelo exactamente como aparece en la lista de modelos, sin prefijo. |
messages | array | Obligatorio. Array de mensajes en formato Anthropic, con al menos un mensaje. |
max_tokens | integer | Límite de tokens de la respuesta (obligatorio en el formato Anthropic). |
system | string / array | Instrucciones del sistema (opcional). |
stream | boolean | true para recibir la respuesta por partes mediante Server-Sent Events. |
Ejemplo de solicitud
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": "¡Hola!"}]
}'¿Necesitas contar los tokens antes de enviar? POST https://ai.geraikita.com/v1/messages/count_tokens acepta el mismo cuerpo y no se factura.
Lista de modelos
https://ai.geraikita.com/v1/modelsDevuelve la lista de id de modelo que se pueden enviar en el campo model. Si se llama con una clave restringida por allowlist, solo aparecen los modelos permitidos. Con la cabecera x-api-key o anthropic-version, la respuesta sigue el formato Anthropic.
curl https://ai.geraikita.com/v1/models \
-H "Authorization: Bearer gk-xxxxxxxx"Streaming (SSE)
Con "stream": true, la respuesta se envía como text/event-stream. El servidor envía las cabeceras de inmediato y luego una línea de comentario keepalive : ka cada 10 segundos mientras espera, para que la conexión no se dé por muerta. Configura el timeout total de tu app en al menos 300 segundos.
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}
: ka
data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}
data: [DONE]- Formato OpenAI: cada fragmento es una línea
data:con un JSON que contienechoices[].delta, y el flujo termina condata: [DONE]. - Formato Anthropic: eventos
message_start,content_block_delta, …,message_stop, igual que en la API de Anthropic. - Ignora las líneas que empiezan por dos puntos (
:): son keepalive, no datos. Las guías por herramienta están en Configuración de herramientas agénticas.