Saltar al contenido
Consola

Referencia de la API

Messages

POSThttps://api.offmem.app/v1/messages

Genera la respuesta del modelo en el formato Messages de Anthropic. Funciona con los SDK oficiales de Anthropic y con Claude Code.

pip install anthropic
curl https://api.offmem.app/v1/messages \
  -H "x-api-key: $OFFMEM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "offmem-glm-5.3-sem-censura",
    "max_tokens": 1024,
    "system": "Responde en español.",
    "messages": [{"role": "user", "content": "Explica qué es una API en una frase."}]
  }'

Encabezados

x-api-keyom_...obligatorio
Clave de API. Authorization: Bearer también funciona.
Content-Typeapplication/jsonobligatorio
Cuerpo en JSON.
anthropic-versionstring
Aceptado y no obligatorio.

Cuerpo

modelstringobligatorio
Id del modelo, o un nombre claude-* (ver Ids aceptados). La respuesta repite el nombre enviado.
max_tokensintegerobligatorio
Límite de tokens de salida, desde 1. La respuesta se detiene ahí. Hasta 32.768; un valor mayor se reduce a él. El mismo límite se reserva del saldo antes de la llamada.
messagesarrayobligatorio
Turnos con rol user o assistant. Los mensajes con rol system pasan a system.
systemstring | array
Instrucciones, como texto o bloques text.
temperaturenumber
Se reenvía al modelo.
top_pnumber
Se reenvía al modelo.
stop_sequencesstring[]
Hasta 4 secuencias; las excedentes se ignoran.
toolsarray
Herramientas propias (name, description, input_schema). Las herramientas de servidor de Anthropic, como la búsqueda web, se ignoran.
tool_choiceobject
auto, any, tool (con name) o none.
streamboolean
Devuelve server-sent events de Anthropic. Otro tipo recibe 400.

Otros campos, como top_k, metadata y thinking, se ignoran.

Bloques de contenido

BloqueSoporte
textAceptado.
imageBase64 (source.type: base64) o URL https:// (source.type: url), solo en modelos con visión.
tool_useAceptado, en los turnos del asistente.
tool_resultAceptado, con contenido en texto. is_error: true llega al modelo como error.
thinkingIgnorado.
documentNo aceptado: 400. Envía el texto.

Respuesta

200 OK
{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "offmem-glm-5.3-sem-censura",
  "content": [{ "type": "text", "text": "..." }],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 24,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "output_tokens": 40
  }
}
stop_reasonCuándo
end_turnEl modelo terminó la respuesta.
max_tokensAlcanzó max_tokens.
tool_useEl modelo llamó a una herramienta.
refusalLa respuesta fue bloqueada por un filtro de contenido.

usage.input_tokens no incluye los tokens en caché, que llegan en cache_read_input_tokens. cache_creation_input_tokens siempre es 0. El identificador de la solicitud llega en el encabezado request-id.

Streaming

Con "stream": true, los eventos siguen el orden de Anthropic: message_start, content_block_start, content_block_delta (text_delta o input_json_delta), content_block_stop, message_delta y message_stop. Un fallo a mitad del flujo llega como evento error.

Contar tokens

POSThttps://api.offmem.app/v1/messages/count_tokens

Devuelve {"input_tokens": n}, una estimación de 3 caracteres por token sobre system, messages y tools. Sin costo; exige una clave válida.

cURL
curl https://api.offmem.app/v1/messages/count_tokens \
  -H "x-api-key: $OFFMEM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "offmem-glm-5.3-sem-censura", "messages": [{"role": "user", "content": "ok"}]}'
Para usar Claude Code con offmem, ver la página de Claude Code.