Centro de ayuda/Eventos y tickets
12 min

API de eventos: gestiona tu evento por código

Referencia del API REST para editar eventos, subir imágenes y administrar etapas de venta, tickets y registros desde tus propias integraciones.

En esta guía
  1. Autenticación y base URL
  2. Editar un evento
  3. Subir imágenes
  4. Etapas de venta
  5. Tickets y precios
  6. Registro de participantes

Autenticación y base URL

Todas las peticiones administrativas usan tu token de acceso personal, disponible en Ajustes → Perfil → Access Token. Se envía en el header api_access_token y las rutas van bajo tu cuenta.

bash
BASE=https://app.maratons.co/api/v1/accounts/{account_id}

curl -H "api_access_token: TU_TOKEN" \
  "$BASE/events"

El {account_id} es el ID numérico de tu cuenta (visible en la URL del panel). Las respuestas son JSON.

Editar un evento

Los eventos se administran con los verbos REST estándar: GET /events lista, POST /events crea, GET /events/{id} consulta y PATCH /events/{id} edita. Los campos principales:

  • title, description, slug y event_type — identidad del evento.
  • event_date, start_time, timezone — fecha y hora de largada.
  • location, latitude, longitude — lugar del evento.
  • status (draft | published), is_public, is_free, is_featured.
  • max_participants, registration_start_date, registration_end_date.
  • contact_email, contact_phone, website_url y social_media.
  • image_url, banner_image_url, logo_image_url — imágenes del evento.
  • white_label_config y custom_fields — branding y datos propios.
bash
curl -X PATCH "$BASE/events/17" \
  -H "api_access_token: TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "event": {
      "title": "Maratón de los Andes 2026",
      "event_date": "2026-11-16",
      "max_participants": 2000,
      "status": "published"
    }
  }'

Subir imágenes

Las imágenes se suben primero al endpoint de uploads (archivo directo o URL externa), que devuelve la URL del archivo almacenado. Luego asignas esa URL al campo correspondiente del evento.

bash
# 1. Subir el archivo (multipart)
curl -X POST "$BASE/upload" \
  -H "api_access_token: TU_TOKEN" \
  -F "attachment=@banner.jpg"
# → { "file_url": "https://..." }

# 2. Asignarla al evento
curl -X PATCH "$BASE/events/17" \
  -H "api_access_token: TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "event": { "banner_image_url": "https://..." } }'

También puedes enviar external_url en lugar de attachment para importar una imagen desde otra URL.

Etapas de venta

Las etapas (Early Bird, Regular, Última hora) viven bajo cada evento en /events/{event_id}/sale_stages y aceptan:

  • name y description — nombre visible de la etapa.
  • start_date, end_date, start_time, end_time, timezone — ventana de venta.
  • max_participants — cupo de la etapa.
  • is_active y position — visibilidad y orden.
bash
curl -X POST "$BASE/events/17/sale_stages" \
  -H "api_access_token: TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sale_stage": {
      "name": "Early Bird",
      "start_date": "2026-06-01",
      "end_date": "2026-07-31",
      "is_active": true
    }
  }'

Tickets y precios

Hay dos recursos: /events/{event_id}/tickets define las distancias o categorías (5K, 10K, 21K) con su recorrido; /events/{event_id}/sale_tickets cruza cada ticket con una etapa y le pone precio y cupo.

  • Ticket: name, description, distance_km, elevation_gain, time_limit_hours, start_time, capacity, image_url y el trazado del recorrido (points, path).
  • Sale ticket: ticket_id, sale_stage_id, price (en centavos), currency, quantity, available_from, available_until, is_active.
bash
# Precio del 10K en Early Bird: $80.000 COP
curl -X POST "$BASE/events/17/sale_tickets" \
  -H "api_access_token: TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sale_ticket": {
      "ticket_id": 3,
      "sale_stage_id": 1,
      "price": 8000000,
      "currency": "COP",
      "quantity": 300
    }
  }'

Registro de participantes

La inscripción usa el API público (sin token, pensado para tu propio frontend): POST /public/api/v1/{account_slug}/events/{event_slug}/register. Recibe el sale_ticket elegido, las respuestas del formulario y, si aplica, cupón, add-ons y datos de pago.

bash
curl -X POST "https://app.maratons.co/public/api/v1/andes/events/maraton-2026/register" \
  -H "Content-Type: application/json" \
  -d '{
    "registration": {
      "ticket_type_id": 12,
      "terms_accepted": true,
      "coupon_code": "EARLY10",
      "form_data": {
        "personal.first_name": "Ana",
        "personal.last_name": "López",
        "contact.email": "ana@correo.com"
      },
      "add_ons": [{ "id": 4, "quantity": 1 }]
    }
  }'

Para consultar o gestionar inscripciones desde el panel administrativo usa /events/{event_id}/participations (lista, detalle, confirmar, cancelar, reenviar ticket) y /events/{event_id}/orders para las órdenes con QR y check-in.

Configura webhooks en Ajustes → Webhooks para recibir notificaciones de estos cambios en tu propio sistema en tiempo real.

Ventas y soporte