Cómo funciona
MarkdownQué ocurre con la solicitud entre tu aplicación y el modelo.
Guía completa
Envías una solicitud a Ailoot API igual que la enviarías directamente a OpenAI, Anthropic o Google. Ailoot comprueba la clave y el saldo, transmite la solicitud al modelo, devuelve la respuesta en el mismo formato y cobra según el consumo real.
Una clave, tres formatos
El formato depende de la ruta de la solicitud, no del modelo. Puedes llamar al mismo modelo Claude mediante OpenAI Chat, OpenAI Responses o Anthropic Messages; la respuesta llega en el formato de la ruta utilizada.
| Formato | Ruta | Quién lo utiliza |
|---|---|---|
| OpenAI Chat Completions | /v1/chat/completions | OpenAI SDK, la mayoría de los chats y editores, n8n, LangChain |
| OpenAI Responses | /v1/responses | Codex CLI, OpenAI Agents SDK, versiones nuevas del SDK |
| Anthropic Messages | /v1/messages | Claude Code, Anthropic SDK, Zed, Cline |
| Gemini | /v1beta/models/{model}:generateContent | Gemini CLI, Google GenAI SDK |
Dinero: reserva y un único cargo
- Antes de enviar una nueva solicitud de texto, Ailoot reserva una estimación de la entrada y de una respuesta típica, teniendo en cuenta el límite (
max_tokens) y las condiciones del modelo concreto. Si la reserva no cabe en el saldo disponible o en el límite de la clave, el límite enviado solo puede reducirse en modelos y métodos que realmente lo respeten, sin bajar de 256 tokens ni del mínimo de respuesta establecido. Para imágenes, vídeo y audio de salida se mantiene la reserva del coste completo del resultado. - Tras la respuesta, se cobra una sola vez según el consumo real. La reserva no utilizada vuelve inmediatamente al saldo.
- Si la respuesta cuesta más que la reserva, la diferencia se toma del saldo disponible. El saldo nunca queda en negativo.
- Si el saldo no alcanza ni para la reserva mínima, la solicitud no se envía: recibes un error 402 claro y no se cobra nada.
- No se cobra un error tras el que no hay resultado.
Los detalles y un ejemplo de cálculo están en la página Reserva y cargo.
Errores con Request ID
Cada respuesta recibe un identificador de solicitud, en la cabecera X-Request-ID y en el mensaje de error. Los errores llegan en el JSON del formato que has utilizado, por lo que los SDK los reconocen correctamente. Si algo falla, envía el Request ID a soporte para que encontremos la solicitud en un minuto.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}Streaming y tiempos de espera
Las respuestas en streaming (stream: true) se envían como Server-Sent Events. Ailoot entrega la respuesta de texto de pago después de calcular el coste. Por eso, con stream: true el formato sigue siendo streaming (SSE), pero el texto llega en un único bloque cuando termina el modelo, no palabra a palabra. Si la respuesta tarda más de unos 15 segundos, los flujos de Chat Completions, Responses y Messages envían primero las líneas de servicio : ping (aproximadamente cada 10 segundos), seguidas de la línea : ailoot-charged-usd … con el importe cobrado y los propios datos. Los SDK omiten estas líneas.
El formato Gemini no incluye líneas de servicio: la respuesta de :streamGenerateContent llega completa después del cálculo. Deja un margen suficiente en el tiempo de espera del cliente para los modelos de razonamiento: varios minutos es normal.
Cabeceras de respuesta
X-Request-ID llega en cada respuesta. Ailoot añade las demás cabeceras a las respuestas de texto pagadas:
| Cabecera | Contenido |
|---|---|
X-Request-ID | Identificador de solicitud que pide soporte |
X-Ailoot-Charged-USD | Importe cobrado por esta solicitud, en dólares |
X-Ailoot-Output-Tokens | Tokens de respuesta pagados |
X-Ailoot-Max-Tokens-Capped | Límite al que se ha reducido la respuesta porque el saldo no cubría la reserva completa |
X-Ailoot-Notice-Code, X-Ailoot-Notice | Explicación si la respuesta se ha detenido por el límite de longitud |
Si el flujo ya ha comenzado con líneas de servicio, estos datos llegan como una línea de comentario antes de los datos, no como una cabecera.
Caché de prompts
Si el modelo admite caché, volver a enviar un prefijo largo, como una instrucción de sistema o documentos, puede costar menos. Los precios de lectura y escritura de caché aparecen en la ficha del modelo en el catálogo. El desarrollador del modelo decide si se produce un acierto de caché; Ailoot no lo garantiza.