Uso y registros
Mira cuánto gasta cada clave de Half Off Dev, revisa tokens, latencia y errores por petición, rastrea llamadas por ID y cuadra tu saldo.
Pagar la mitad solo sirve de algo si ves a dónde va el dinero. Half Off Dev registra cada petición a modelos que hacen tus claves, normalmente a los pocos segundos de terminar, y te ofrece cuatro sitios donde mirar.
| Página | Para qué sirve |
|---|---|
| Overview | Seguir el gasto, la tasa de éxito y la latencia en el tiempo, por grupo de canales y por modelo |
| Logs | Revisar cada petición: tokens, cargo, tiempos, errores |
| API keys | Comparar el gasto acumulado y el último uso de cada clave |
| Billing | Consultar saldo, créditos y gasto diario |
Panel de resumen#
Overview suma el tráfico de todas tus claves en las últimas 24 horas, 7, 30 o 90 días.
| Indicador | Qué te dice |
|---|---|
| Gasto | Importe cobrado en el periodo y número de peticiones |
| Tasa de éxito | Porcentaje de peticiones correctas y cuántas fallaron |
| TTFT P95 | Tiempo hasta el primer token en el percentil 95, con la media |
| Rendimiento | Media de tokens de salida por segundo |
| Tasa de aciertos de caché | Porcentaje de tokens de entrada servidos desde la caché de prompts |
| Saldo | Lo que te queda y cuántas claves activas tienes |
Debajo de los totales hay gráficos de gasto y de tokens, desgloses Por grupo de canales y Por modelo, y una Distribución de errores que agrupa las peticiones fallidas por tipo de error. El tiempo hasta el primer token y el rendimiento se miden solo en peticiones con streaming.
Logs#
Logs lista tus peticiones a modelos de la más reciente a la más antigua, 50 por página; Cargar más carga las anteriores. Filtra por grupo de canales, modelo, estado (Completado o Fallido) y, si tienes varias, por clave de API.
| Columna | Contenido |
|---|---|
| Hora | Inicio de la petición. Pasa el ratón para ver la hora exacta. |
| Modelo | ID del modelo. ⇢ indica una petición con streaming. |
| Grupo | Grupo de canales que la atendió |
| Estado | Código HTTP que recibiste |
| Ent. | Tokens de entrada, incluidos los escritos en la caché de prompts |
| En caché | Tokens de entrada leídos de la caché de prompts |
| Sal. | Tokens de salida, incluidos los de razonamiento |
| TTFT | Tiempo hasta el primer token, en peticiones con streaming |
| Tok/s | Tokens de salida por segundo |
| Cargo | Lo que pagaste por ella |
Haz clic en una fila para ver el detalle: Id de solicitud, la Clave usada, el Formato de API (anthropic, openai o gemini), la Latencia total, Escritura de caché y Tokens de razonamiento, la tasa de Acierto de caché, el tipo de Error si falló y la Afinidad. Al final, Pregunta a soporte sobre esta solicitud abre una consulta a soporte con el ID ya rellenado.
Afinidad#
La afinidad indica si la petición se mantuvo en el mismo canal que el resto de su conversación, que es lo que permite a la caché de prompts abaratar las conversaciones largas. El ahorro se explica en Caché de prompts.
| Valor | Significado |
|---|---|
new | Primera petición de la conversación |
sticky | Un turno posterior que siguió en el canal de su conversación, así que la caché pudo reutilizarse |
explicit | Agrupada por un ID de sesión que envió tu cliente |
none | No hay conversación con la que agruparla |
Qué se registra#
- Toda petición que superó las comprobaciones de clave y saldo, haya ido bien o mal. Las fallidas muestran su estado y tipo de error, con un cargo de $0.
- No se registran, ni se cobran, las peticiones rechazadas en la entrada: clave ausente o no válida, cuerpo que no es JSON, modelo desconocido, modelo que la clave no tiene permitido, saldo vacío y clave por encima de su límite de ritmo. Tu código recibe el error directamente.
Los registros se conservan 90 días.
IDs de petición#
Cada respuesta de un modelo lleva la cabecera x-halfoff-request-id, por ejemplo req_3f9c1a7e5b2d4c6e8a0b1d2f. Es el mismo Id de solicitud que ves en Logs. Los errores también la llevan, incluidas las peticiones rechazadas antes de registrarse (clave incorrecta, saldo vacío, modelo desconocido), y soporte puede rastrearlas solo con ese ID.
Guárdalo junto a tus propios registros e inclúyelo cuando preguntes a soporte por una llamada.
curl -sD - -o /dev/null https://halfoff.dev/v1/chat/completions \
-H "Authorization: Bearer $HALFOFF_API_KEY" \
-H "content-type: application/json" \
-d '{"model": "gpt-6.1-sol", "messages": [{"role": "user", "content": "Responde con una palabra: ¿listo?"}]}' \
| grep -i '^x-halfoff'La cabecera x-halfoff-group de esa misma respuesta indica qué grupo de canales la atendió.
Cuadrar los cargos#
Tu saldo solo se mueve por dos motivos: los créditos lo suben y las peticiones lo bajan.
- Créditos: recargas, códigos canjeados y ganancias por referidos, en Historial de saldo dentro de Billing.
- Peticiones: cada petición cobrada, en Logs.
Para auditar una sola clave, compara su Gastado en API keys con sus peticiones en Logs, filtradas por esa clave.
Las pequeñas diferencias suelen deberse a una de estas causas:
- Los cargos llegan con unos segundos de retraso. Se registran poco después de que termine la petición, así que un total consultado en pleno pico de tráfico puede ir algo por detrás.
- Un stream que cortas se cobra por lo que se generó. Si cierras el stream antes de su evento final de uso, la salida se factura según una estimación del texto que ya recibiste. Consulta Streaming.
- La columna Charge es la referencia. Es exactamente lo que salió de tu saldo por esa petición. Los precios por token están en la lista de modelos.
Contactar con soporte#
Abre Support y pulsa Nueva solicitud. Si tu duda es sobre una llamada concreta, incluye su ID de petición (req_…); desde una fila de Logs, Pregunta a soporte sobre esta solicitud lo hace por ti. Las respuestas aparecen en la misma página y Soporte, en la barra lateral, muestra un aviso cuando llega una nueva. Responde para añadir detalles o marca la consulta como resuelta.