Referencia de la API
Chat completions
POSThttps://api.offmem.app/v1/chat/completions
Genera la respuesta del modelo en el formato Chat Completions de OpenAI. Funciona con los SDK oficiales de OpenAI.
curl https://api.offmem.app/v1/chat/completions \
-H "Authorization: Bearer $OFFMEM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "offmem-glm-5.3-flash-sem-censura",
"messages": [{"role": "user", "content": "Explica qué es una API en una frase."}]
}'Encabezados
AuthorizationBearer om_...obligatorio- Clave de API.
x-api-keytambién funciona. Content-Typeapplication/jsonobligatorio- Cuerpo en JSON.
Cuerpo
modelstringobligatorio- Id del modelo. Ver Modelos.
messagesarrayobligatorio- Conversación en el formato de OpenAI (
system,user,assistant,tool). No puede estar vacía. Las partesimage_urlsolo en modelos con visión, y la URL debe serdata:image/...;base64ohttps://. Otra URL recibe400 invalido. streamboolean- Devuelve la respuesta en partes, como server-sent events. Por defecto
false. Otro tipo recibe400 invalido. stream_options.include_usageboolean- Con
stream, añade un último evento conusage. max_completion_tokens, max_tokensinteger- Límite de tokens de salida. Sin él, la respuesta se detiene en 8.192 tokens. Hasta 32.768; un valor mayor se reduce a él. El mismo límite se reserva del saldo antes de la llamada.
include_reasoningboolean- Devuelve el razonamiento del modelo en
reasoning_content(en el stream y en la respuesta completa). Desactivado por defecto; los tokens de razonamiento se cobran en ambos casos. ninteger- Solo
1. Otro valor recibe400 invalido. tools, tool_choicearray, string | object- Llamada a funciones en el formato de OpenAI, reenviada al modelo.
functions, function_call- No se aceptan:
400 invalido. Usatoolsytool_choice. stopstring | string[]- Hasta 4 secuencias. Más de 4 recibe
400 invalido. temperature, top_p, …- Los demás parámetros de OpenAI llegan al modelo tal como se envían. El soporte depende del modelo.
Campos eliminados
store, metadata, user y safety_identifier se descartan antes de que la solicitud llegue al modelo.Respuesta
Objeto chat.completion de OpenAI. model trae el id de offmem y usage trae solo conteos de tokens: prompt_tokens, completion_tokens, total_tokens, prompt_tokens_details.cached_tokens y completion_tokens_details.reasoning_tokens, siempre presentes (0 cuando el modelo no los informa). En el stream, usage llega una vez, en el último fragmento (choices vacío), solo con stream_options.include_usage.
{
"id": "...",
"object": "chat.completion",
"created": 1762560000,
"model": "offmem-glm-5.3-flash-sem-censura",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "..." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 32,
"total_tokens": 50,
"prompt_tokens_details": { "cached_tokens": 0 }
}
}x-offmem-request-idencabezado- Identificador de la solicitud, el mismo de la consola.
Streaming
Con "stream": true la respuesta es text/event-stream: eventos chat.completion.chunk y un data: [DONE] al final. El evento de uso solo llega cuando stream_options.include_usage es true.
curl -N https://api.offmem.app/v1/chat/completions \
-H "Authorization: Bearer $OFFMEM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "offmem-glm-5.3-flash-sem-censura",
"stream": true,
"stream_options": {"include_usage": true},
"messages": [{"role": "user", "content": "Explica qué es una API en una frase."}]
}'Eventos
data: {"id":"...","object":"chat.completion.chunk","model":"offmem-glm-5.3-flash-sem-censura","choices":[{"index":0,"delta":{"content":"..."}}]}
data: {"id":"...","object":"chat.completion.chunk","model":"offmem-glm-5.3-flash-sem-censura","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":32,"total_tokens":50}}
data: [DONE]Si la conexión se cierra antes del final, la solicitud se cobra por estimación: la entrada más lo que ya se entregó.
Duración
Una solicitud puede durar hasta 300 segundos.