Saltar al contenido principal
POST /meetings Registra una reunión agendada en un sistema externo (ej. GoHighLevel, Calendly, representantes manuales) contra un lead existente de Nexor. La reunión aparece en la línea de tiempo del lead y en GET /leads/{id}/meetings. Este endpoint es solo creación en v1 — cancelaciones, reagendamientos e inasistencias serán manejados por endpoints dedicados en una versión posterior.

Coincidencia de leads

Los leads se emparejan por email, con alcance a tu cliente:
  • Si un lead coincide -> se usa.
  • Si múltiples leads comparten el email -> gana el actualizado más recientemente.
  • Si ningún lead coincide -> 404. Crea el lead primero vía POST /leads.
También puedes pasar lead_id directamente para omitir la coincidencia por email.

Idempotencia

Si proporcionas tanto external_calendar_provider como external_event_id, repetir la solicitud actualiza la reunión existente en lugar de crear un duplicado. Seguro para reintentos de webhook.

Cuerpo de la Solicitud

CampoTipoRequeridoDescripción
lead_emailstring*Coincidencia. *No requerido si se proporciona lead_id.
lead_idstring (uuid)NoOmitir coincidencia por email.
titlestringTítulo de la reunión
starts_atstring (ISO 8601)Si no tiene offset, se interpreta en timezone
ends_atstring (ISO 8601)Sí++Requerido a menos que se proporcione duration_minutes
duration_minutesintegerSí++Requerido a menos que se proporcione ends_at
timezonestringNoZona horaria IANA, por defecto UTC (ej. America/Santiago)
meeting_urlstringNoEnlace de Meet / Zoom / Teams
location_typestringNovideo | phone | in_person, por defecto video
location_detailsstringNo
descriptionstringNo
host_emailstringNoEmail del usuario anfitrión (debe estar activo en tu cliente)
meeting_type_idstring (uuid)No
attendee_namestringNoPor defecto el nombre completo del lead
attendee_emailstringNoPor defecto el email coincidente
attendee_phonestringNoPor defecto el teléfono del lead
additional_attendeesarrayNo[{ name, email }]
external_calendar_providerstringNoej. ghl, google, calendly
external_event_idstringNoID del evento del proveedor (habilita dedup)
statusstringNoscheduled (por defecto) o confirmed

Ejemplo del Cuerpo de la Solicitud

Reunión mínima agendada, emparejada por email del lead:
{
  "lead_email": "tony.stark@gmail.com",
  "title": "Discovery Call",
  "starts_at": "2026-04-20T14:00:00",
  "ends_at": "2026-04-20T15:00:00",
  "timezone": "America/Santiago",
  "meeting_url": "https://meet.google.com/abc-xyz-123",
  "location_type": "video",
  "status": "scheduled"
}
Payload completo — webhook de GoHighLevel (vía Make), con clave de dedup y confirmación:
{
  "lead_email": "tony.stark@gmail.com",
  "title": "Llamada de descubrimiento con Tony Stark",
  "starts_at": "2025-12-29T14:00:00",
  "ends_at": "2025-12-29T15:00:00",
  "timezone": "America/Santiago",
  "meeting_url": "https://meet.google.com/oki-fjnk-oyu",
  "location_type": "video",
  "description": "Confirmation and reminder emails",
  "attendee_name": "Tony Stark",
  "external_calendar_provider": "ghl",
  "external_event_id": "1RZJ24WY65VGQFyhN0vJ",
  "status": "confirmed"
}
Enviar "status": "confirmed" almacena la reunión como scheduled y activa el flag interno confirmed_by_lead — el lead aparece como habiendo confirmado asistencia.

cURL

curl -X POST https://api.getnexor.ai/api/public/meetings \
  -H "Content-Type: application/json" \
  -H "X-API-Key: nxr_live_your_api_key" \
  -d '{
    "lead_email": "tony.stark@gmail.com",
    "title": "Llamada de descubrimiento con Tony Stark",
    "starts_at": "2025-12-29T14:00:00",
    "ends_at": "2025-12-29T15:00:00",
    "timezone": "America/Santiago",
    "meeting_url": "https://meet.google.com/oki-fjnk-oyu",
    "location_type": "video",
    "description": "Confirmation and reminder emails",
    "attendee_name": "Tony Stark",
    "external_calendar_provider": "ghl",
    "external_event_id": "1RZJ24WY65VGQFyhN0vJ",
    "status": "confirmed"
  }'

Respuestas

201 — Reunión creada

{
  "success": true,
  "meeting": {
    "id": "event-uuid",
    "lead_id": "lead-uuid",
    "title": "Llamada de descubrimiento con Tony Stark",
    "starts_at": "2025-12-29T17:00:00Z",
    "ends_at": "2025-12-29T18:00:00Z",
    "duration_minutes": 60,
    "timezone": "America/Santiago",
    "status": "confirmed",
    "meeting_url": "https://meet.google.com/oki-fjnk-oyu",
    "location_type": "video",
    "location_details": null,
    "host_name": null,
    "meeting_type": null,
    "attendee_name": "Tony Stark",
    "attendee_email": "tony.stark@gmail.com",
    "external_calendar_provider": "ghl",
    "external_event_id": "1RZJ24WY65VGQFyhN0vJ",
    "source": "api",
    "created_at": "2026-04-15T12:00:00Z"
  }
}

400 — Error de validación

401 — Error de autenticación — ver Autenticación

404 — Lead no encontrado para el email proporcionado

409external_event_id ya vinculado a un lead diferente

500 — Error interno del servidor

Última modificación el 18 de junio de 2026