API de entradas: enviar entradas a Ágora desde una ticketera

Referencia de la API de entradas de Connect Manager: autenticación, campos, estados, respuestas y reintentos para crear entradas en Ágora.

Actualizado el 7 min de lectura

La API de entradas de Connect Manager recibe las entradas que vende una ticketera y las crea en el Ágora del local como entradas canjeables. La ticketera hace un POST a https://hub.connectmanager.es/api/v1/tickets con el token del local por cada entrada y por cada cambio de estado; Connect Manager responde al momento y crea, mantiene o anula la entrada en Ágora.

Esta guía es para los desarrolladores de la ticketera (Speakeasy, por ejemplo). La configuración del local en Connect Manager y en Ágora la hace el técnico de FOS o del distribuidor, y está en la guía de la integración de Speakeasy.

Qué necesitas#

QuéDetalleQuién lo da
Direcciónhttps://hub.connectmanager.es/api/v1/tickets, método POST, cuerpo JSON.FOS
Token del localUna cadena de 48 caracteres. Cada local tiene el suyo y es el que decide en qué Ágora se crea la entrada.FOS, por un canal privado
Workplace del localEl número del local en su instalación de Ágora, que va en workplace.id.FOS
Consumiciones de cada entradaCuántas consumiciones incluye cada entrada que se vende, que va en included_products.included_drinks_quantity.El local

Autenticación#

El token va en la cabecera Authorization como Bearer. Sin token, con uno que no existe o con la integración del local desactivada, la respuesta es un 401.

POST /api/v1/tickets HTTP/1.1
Host: hub.connectmanager.es
Authorization: Bearer <token del local>
Content-Type: application/json
Accept: application/json

Enviar una entrada#

Un aviso por entrada y por cada cambio de estado. El mismo entry.id identifica siempre la misma entrada: el segundo aviso no crea otra, la actualiza.

{
  "event_type": "ticket.updated",
  "sent_at": "2026-07-22T18:05:00+02:00",
  "entry": {
    "id": "el7yuiyep0006msyw2pri1tem1LpJwSc",
    "code": "P6J21FF2S",
    "name": "Entrada general",
    "quantity": 1,
    "status": "activated",
    "status_updated_at": "2026-07-22T18:04:30+02:00"
  },
  "workplace": { "id": 11, "name": "Discoteca" },
  "validity": {
    "valid_from": "2026-07-22T18:00:00+02:00",
    "valid_until": "2026-07-23T04:00:00+02:00",
    "timezone": "Europe/Madrid"
  },
  "included_products": { "included_drinks_quantity": 2 },
  "amounts": {
    "currency": "EUR",
    "net_amount": 9.09,
    "tax_rate": 10.0,
    "tax_amount": 0.91,
    "gross_amount": 10.0,
    "total_amount": 10.0
  },
  "payment": {
    "payment_id": "Cl7yuiyhy0007msyw4vfl5ai6YF4WZRn",
    "payment_method": "card",
    "payment_status": "completed"
  }
}

Campos#

CampoTipoObligatorioPara qué sirve
entry.idtexto, hasta 191SíIdentificador de la entrada en la ticketera. Une todos los avisos de una misma entrada.
entry.codetexto, hasta 100SíEl código que se lee en barra. Es el código de la entrada en Ágora.
entry.statustextoSíUno de pending, activated, used, cancelled, refunded, partially_refunded o expired. Ver «Estados».
workplace.identeroSíEl workplace del local. Si no es el del token, la entrada se rechaza con un 422.
entry.nametexto, hasta 255NoEl nombre de la entrada. Solo cuenta si el local tiene una regla por nombre.
included_products.included_drinks_quantityentero, 0 o másNo, pero recomendadoLas consumiciones incluidas. Con ellas se elige el tipo de entrada de Ágora. Si no se manda, cuenta como 0.
validity.valid_from y validity.valid_untilfecha ISO 8601NoDesde y hasta cuándo se puede canjear. Hacen falta las dos; si no, vale lo que diga el tipo de entrada en Ágora.
validity.timezonezona IANANoLa zona del evento, por ejemplo Europe/Madrid. Si no se manda o no existe, Madrid.
entry.status_updated_atfecha ISO 8601No, pero recomendadoCuándo cambió el estado. Sirve para no aplicar un aviso viejo que llega tarde. Si no viene, se usa sent_at.
sent_atfecha ISO 8601NoCuándo se envió el aviso.
event_typetexto, hasta 40NoEl tipo de aviso en la ticketera. Se guarda tal cual.
entry.quantityentero, 1 o másNoSe guarda, pero en Ágora cada código es una sola entrada: para tres entradas, tres códigos.
customer, amounts, payment, cancellation, usageobjetosNoSe guardan en Connect Manager para conciliar. No llegan a Ágora.

Estados#

entry.statusQué pasa en Ágora
activatedSe crea la entrada canjeable, con su tipo, su código y su validez.
used, partially_refundedSigue válida. Si todavía no estaba en Ágora, se crea.
cancelled, refundedSi ya estaba en Ágora, se vuelve a mandar caducada y deja de poder canjearse. Si no había llegado, no se manda.
pendingNo se manda: espera a que se pague.
expiredNo se manda: Ágora ya la caduca por su validez.

Una entrada que ya se ha canjeado en barra no se puede anular.

Respuestas#

CódigoCuerpoQué hacer
200{"success": true, "message": "Ticket received successfully", "entry_id": "…"}Nada: está recibida. Crearla en Ágora va por detrás.
401{"success": false, "error": "Unauthorized"}Revisar el token. No reintentar con el mismo.
422{"success": false, "error": "Validation error", "fields": ["entry.code"]}Corregir los campos de fields y volver a mandar.
429Demasiadas peticionesEsperar y reintentar. El límite es de 600 avisos por minuto por token.
5xxError del servidorReintentar más tarde con el mismo aviso.

Orden, repeticiones y reintentos#

  • Repetir un aviso no duplica nada: la entrada se identifica por entry.id. Si el aviso no cambia lo que hay en Ágora, no se vuelve a mandar.
  • Los avisos pueden llegar desordenados: uno con status_updated_at anterior al último aplicado se guarda en el histórico pero no cambia la entrada. Así, un «activated» que llega tarde no resucita una entrada cancelada.
  • Un Ágora apagado no frena la venta: el 200 llega aunque el local no tenga conexión. Connect Manager reintenta crear la entrada en Ágora y, si sigue fallando, la deja en error para reenviarla desde el panel.
sequenceDiagram
    participant T as Ticketera
    participant CM as Connect Manager
    participant AG as Ágora del local
    T->>CM: POST /api/v1/tickets (Bearer)
    CM->>CM: Valida el token, los campos y el workplace
    CM-->>T: 200 recibida
    CM->>AG: Crea, mantiene o anula la entrada
    AG-->>CM: Correcto o error (se reintenta)

Modo prueba#

Las integraciones nuevas empiezan en modo prueba: los avisos se validan, se guardan y responden igual que en producción, pero nada se crea en Ágora. FOS revisa las entradas recibidas y apaga el modo prueba cuando todo llega bien. Las entradas que se mandaron en modo prueba no pasan a Ágora al apagarlo: si alguna era una venta de verdad, hay que volver a mandarla.

Errores frecuentes#

SíntomaCausaSolución
401 con un token que antes funcionabaSe ha generado un token nuevo o se ha desactivado la integración del local.Pedir a FOS el token vigente.
422 con workplace.idEl workplace no es el del local del token.Mandar el workplace que dio FOS para ese local.
422 con entry.statusUn estado que no está en la lista.Usar uno de los siete estados de la tabla.
La entrada se canjea con las consumiciones equivocadasNo se mandó included_drinks_quantity, o se mandó un número sin tipo de entrada en Ágora.Mandar las consumiciones y avisar a FOS de los números nuevos.
Una entrada cancelada sigue valiendoEl aviso de cancelación es anterior a otro ya aplicado, o la entrada ya se canjeó.Mandar la cancelación con su status_updated_at real.

Preguntas frecuentes#

¿Hay que esperar a que la entrada esté en Ágora para responder al cliente?#

No. El 200 llega en cuanto Connect Manager guarda el aviso; crear la entrada en Ágora va por detrás y tarda unos segundos.

¿Puedo mandar el mismo aviso dos veces?#

Sí. La entrada se identifica por entry.id y un aviso que no cambia nada no se vuelve a mandar a Ágora.

¿Qué datos personales llegan a Ágora?#

Ninguno. A Ágora solo van el tipo de entrada, el código y la validez. El cliente, los importes y el pago se guardan en Connect Manager para conciliar.

¿Un token sirve para varios locales?#

No. Cada local tiene su integración y su token, y el workplace tiene que ser el de ese local.

¿Cómo se anula una entrada?#

Mandando el mismo entry.id con el estado cancelled o refunded. Si ya estaba en Ágora, deja de valer.

Fuentes#

  • Connect Manager: especificación «Envío de entradas a Ágora» que se entrega a las ticketeras y comportamiento de la API de entradas, versión del 04-11-2026.
  • Guía del integrador de Ágora, apartado «Entradas»: importación de entradas con su tipo, su código y su validez.
  • Connect Manager: guía de la integración de Speakeasy.
¿Te ha servido este manual? ¡Gracias! Nos ayuda a mejorarlo. No hemos podido guardar tu respuesta. Inténtalo de nuevo.
¿Te has atascado?

910 91 92 11 · Lunes a jueves de 9 a 18 h · viernes de 9 a 15 h

Escríbenos