Skip to main content
POST
Log a Meeting
To change a meeting’s outcome later, use the dedicated endpoints: Mark as No-show, Cancel, and Mark as Completed. Lead matching. Leads are matched by email, scoped to your client. If one lead matches it is used; if multiple share the email the most recently updated wins; if none match you get a 404 (create the lead first via POST /leads). Pass lead_id directly to skip email matching. Idempotency. If you supply both external_calendar_provider and external_event_id, replaying the request updates the existing meeting instead of creating a duplicate. Safe for webhook retries.

Authorizations

X-API-Key
string
header
required

API key for authentication. Keys are prefixed with nxr_live_.

Body

application/json
title
string
required

Meeting title.

starts_at
string
required

ISO 8601. If no offset, interpreted in timezone.

lead_email
string

Matcher. Not required if lead_id is provided.

lead_id
string<uuid>

Bypass email matching.

ends_at
string

ISO 8601. Required unless duration_minutes is given.

duration_minutes
integer

Required unless ends_at is given.

timezone
string

IANA tz, default UTC (e.g. America/Santiago).

meeting_url
string

Meet / Zoom / Teams link.

location_type
enum<string>
default:video
Available options:
video,
phone,
in_person
location_details
string
description
string
host_email
string

Host user email (must be active in your client).

meeting_type_id
string<uuid>
attendee_name
string

Defaults to lead's full name.

attendee_email
string

Defaults to matched email.

attendee_phone
string

Defaults to lead's phone.

additional_attendees
object[]
external_calendar_provider
string

e.g. ghl, google, calendly.

external_event_id
string

Provider's event id (enables dedup).

status
enum<string>
default:scheduled
Available options:
scheduled,
confirmed

Response

Meeting created

success
boolean
meeting
object
Last modified on June 26, 2026