Saltar al contenido

Quickstart

Integra disponibilidad de boletos, precios y enlaces de checkout en tu sitio web en menos de 10 minutos.

Base URL de la API de integración: https://api.eventpass.mx/api/public

Todas las rutas llevan el prefijo /api. Autenticación con API Key en el header Authorization: Bearer ep_live_...

En 4 pasos

  1. Genera tu API Key

    En el backoffice ve a /settings/api-keys. Copia la clave que empieza con ep_live_ o ep_test_ para sandbox.

  2. Obtén el ID de tu evento

    Desde el detalle del evento en el backoffice copia el ID (formato MongoDB ObjectId). El evento debe estar publicado.

  3. Consulta tipos de entrada desde tu backend

    Llama a la API con tu API Key para obtener precio vigente, cupos y checkoutUrl. No expongas la clave en el navegador.

  4. Muestra en tu web

    Usa el campo checkoutUrl de cada tipo para enlazar directo a pay.eventpass.mx. Si tu landing es propia, instala el snippet de Analytics en tu sitio. Si usas referidos, concatena ?ref=CODIGO — ver Referidos en tu sitio.

Endpoints

MétodoRutaDescripción
GET/public/events/:eventIdDatos del evento publicado
GET/public/events/:eventId/ticket-typesTipos de entrada con precio y checkoutUrl
GET/public/ticket-types/:idUn tipo de entrada específico

Prefijo completo: https://api.eventpass.mx/api + ruta (ej. https://api.eventpass.mx/api/public/events/EVENT_ID/ticket-types).

Ejemplo: listar tipos de entrada

Reemplaza EVENT_ID y tu API Key. Ejecuta estos ejemplos desde tu servidor, no desde el navegador del visitante.

cURL
curl "https://api.eventpass.mx/api/public/events/EVENT_ID/ticket-types" \
  -H "Authorization: Bearer ep_live_XXXX" \
  -H "Accept: application/json"
Node.js
const response = await fetch(
  'https://api.eventpass.mx/api/public/events/EVENT_ID/ticket-types',
  {
    headers: {
      Authorization: 'Bearer ep_live_XXXX',
      Accept: 'application/json',
    },
  },
)
if (!response.ok) throw new Error(`HTTP ${response.status}`)
const tickets = await response.json()
Python
import requests

resp = requests.get(
    'https://api.eventpass.mx/api/public/events/EVENT_ID/ticket-types',
    headers={
        'Authorization': 'Bearer ep_live_XXXX',
        'Accept': 'application/json',
    },
    timeout=10,
)
resp.raise_for_status()
tickets = resp.json()
PHP
<?php
$ch = curl_init('https://api.eventpass.mx/api/public/events/EVENT_ID/ticket-types');
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ep_live_XXXX',
        'Accept: application/json',
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($status !== 200) {
    throw new RuntimeException("HTTP $status: $body");
}

$tickets = json_decode($body, true);

Ejemplo de respuesta

JSON
[
  {
    "id": "6a185611402f04a6b1cea457",
    "name": "General Access",
    "description": "Acceso General",
    "currentPrice": 659900,
    "currentTierLabel": "Early Access",
    "nextTierPrice": null,
    "nextTierStartsAt": null,
    "availableQty": 297,
    "status": "active",
    "checkoutUrl": "https://pay.eventpass.mx/EVENT_ID/6a185611402f04a6b1cea457"
  }
]

Campos útiles en la respuesta

currentPrice
Precio vigente en centavos MXN (659900 = $6,599.00)
currentTierLabel
Nombre del tier activo (Early bird, Normal, etc.)
availableQty
Cupos restantes
checkoutUrl
URL directa a pay.eventpass.mx — úsala tal cual en tu botón de compra
status
active | sold_out | inactive

Integrar en tu sitio web

La API Key no debe ir en JavaScript del cliente. Expón un endpoint propio que consulte EventPass y devuelva solo los datos públicos (precio, cupos, checkoutUrl).

1. Backend proxy (recomendado)

Express / Node.js
// GET /api/tickets — tu endpoint, sin exponer la API Key al navegador
app.get('/api/tickets', async (_req, res) => {
  const response = await fetch(
    'https://api.eventpass.mx/api/public/events/' + process.env.EVENTPASS_EVENT_ID + '/ticket-types',
    { headers: { Authorization: 'Bearer ' + process.env.EVENTPASS_API_KEY } },
  )
  if (!response.ok) return res.status(502).json({ error: 'upstream_failed' })
  res.json(await response.json())
})

2. Frontend con checkoutUrl

HTML + JavaScript
const ALLOWED_HOSTS = ['pay.eventpass.mx']

function isAllowedCheckoutUrl(url) {
  try {
    return ALLOWED_HOSTS.includes(new URL(url).hostname)
  } catch {
    return false
  }
}

async function renderTickets() {
  const res = await fetch('/api/tickets')
  const tickets = await res.json()
  const container = document.getElementById('tickets')

  container.innerHTML = tickets
    .filter((t) => t.availableQty > 0 && t.status === 'active')
    .map((t) => {
      const price = (t.currentPrice / 100).toLocaleString('es-MX', {
        style: 'currency',
        currency: 'MXN',
        maximumFractionDigits: 0,
      })
      const href = isAllowedCheckoutUrl(t.checkoutUrl) ? t.checkoutUrl : '#'
      return `<a href="${href}" class="btn">${t.name} — ${price}</a>`
    })
    .join('')
}

renderTickets()
checkoutUrl: usa el valor de la API sin modificarlo. El formato correcto es https://pay.eventpass.mx/{eventId}/{ticketTypeId}. No uses rutas como /events/{eventId}.

Si tu sitio usa códigos de referido (?ref= en tu landing), consulta Referidos en tu sitio para concatenar el código al checkoutUrl.

Errores comunes

HTTPMensajeCausa habitual
401API key requiredFalta el header Authorization
401Invalid API keyClave incorrecta o revocada
404Event not foundID incorrecto o evento no publicado
404(sin JSON)Ruta sin prefijo /api
429Too Many RequestsSuperaste 30 req/min — implementa caché