Saltar al contenido principal

Primeros pasos

Usa la API para leer los eventos e invitados de tu organización desde otro sistema, como un CRM, y para enviar un recordatorio a un solo invitado cuando necesites probar el correo y la cancelación. Todas las rutas están bajo /rest/v1 y responden JSON. La mayoría son GET; el recordatorio a un invitado usa POST.

Primero necesitas una clave de API. Los Owners y Organization Admins la crean desde My organization. Cópiala cuando aparezca. WeHabit muestra la clave completa una sola vez.

Llamar a la API​

Envía la clave en el encabezado Authorization. El host es el mismo que usas para Leaders.

curl "https://wehabit.mx/rest/v1/events" \
-H "Authorization: Bearer <API_KEY>" \
-H "Accept: application/json"

Una respuesta correcta se ve así:

{
"data": [],
"pagination": {
"page": 1,
"limit": 50,
"total": 0,
"totalPages": 0
}
}

data es la página actual de eventos. pagination.total es cuántos eventos coinciden con los filtros, no solo los de esta página.

Sustituye <API_KEY> por la clave que copiaste. No la envíes como parámetro de consulta. En GET no incluyas un cuerpo JSON; Content-Type no es necesario. En POST (recordatorio a un invitado), envía JSON con Content-Type: application/json.

Pasar parámetros de consulta​

Los filtros, la paginación y el orden van en la query string de la URL.

ReglaEjemplo
Empieza la consulta con ?/rest/v1/events?status=published
Une los parámetros con &?status=published&limit=20
Omite un parámetro para usar su valor predeterminadoSin page significa la página 1
No repitas un parámetro?page=1&page=2 se rechaza

Esta petición devuelve los primeros 20 eventos publicados cuyo título contiene "conference", del más próximo al más lejano:

curl "https://wehabit.mx/rest/v1/events?status=published&search=conference&limit=20&sort=start_at&order=asc" \
-H "Authorization: Bearer <API_KEY>" \
-H "Accept: application/json"

Codifica los caracteres que no son seguros en una URL. Un espacio en search puede ser %20. Un desfase de zona + debe ser %2B, o el servidor lo tratará como un espacio.

updated_since=2026-08-01T00:00:00%2B00:00

Z es más simple cuando quieres UTC: 2026-08-01T00:00:00Z.

Parámetros que usarás más​

ParámetroPredeterminadoQué enviar
page1Número de página, 1 o mayor.
limit50Tamaño de página, de 1 a 100.
statustodos los eventosdraft, published o completed.
branch_idtodas las sucursalesId numérico de una sucursal de esta organización.
from / tosin filtro de fechaLímites inclusivos de la hora de inicio, en ISO 8601.
updated_sincesin filtro de sincronizaciónEventos actualizados en o después de esta hora.
searchsin filtro de textoCoincidencia en el título, hasta 200 caracteres. No distingue mayúsculas.
sortstart_atstart_at, created_at, updated_at o title.
orderascasc o desc.

published significa que el evento no es borrador y no ha terminado. completed significa que no es borrador y la fecha de fin ya pasó. cancelled no es un estado válido.

branch_id es el entero de la sucursal, no un UUID. Una sucursal de otra organización se trata como no encontrada.

La lista completa de campos, las reglas de estado y los ejemplos de error están en Listar eventos. Los registros de invitados de un evento están en Listar invitados del evento. Para enviar un recordatorio a un invitado (con enlace de cancelación), consulta Enviar recordatorio a un invitado.

Recorrer las páginas​

Sigue pidiendo la siguiente page hasta que page sea mayor que totalPages.

/rest/v1/events?limit=100&page=1
/rest/v1/events?limit=100&page=2

Para sincronizar, guarda el updatedAt más reciente que hayas visto y envíalo como updated_since en la siguiente ejecución. Así recibes los eventos creados o cambiados desde entonces.

Qué más conviene saber​

  • Una clave puede leer todos los eventos e invitados de su organización, incluidos borradores, eventos privados y eventos solo por invitación. Con reminders:send también puede enviar un recordatorio a un solo invitado. No puede crear eventos, actualizar invitados ni enviar a todos los invitados.
  • Cada clave permite 60 peticiones por minuto. Una respuesta 429 incluye Retry-After y retry_after, ambos en segundos. Espera ese tiempo antes de reintentar.
  • Las rutas de listado solo permiten GET. La ruta de recordatorio a un invitado solo permite POST. Otros métodos responden 405 con el encabezado Allow.
  • coverImageUrl es un enlace firmado que expira después de una hora. coverImage es la ruta almacenada y no expira.
  • X-Request-ID es opcional. Si envías un id corto (letras, números, ., _ o -, hasta 128 caracteres), la API devuelve el mismo valor. Úsalo cuando pidas ayuda por una llamada fallida.
  • Los parámetros inválidos responden 400 con un objeto details. Cada clave nombra el parámetro y qué tiene de incorrecto.
  • Una clave ausente, expirada o revocada responde 401. Crea una clave nueva o pide a un Owner u Organization Admin que revoque la anterior desde My organization.

Las reglas de encabezados, los límites y el cuerpo de error compartido están en Autenticación.