Skip to content

Webinar registrations

POST https://api.nexacloser.com/v1/webinar-registrants registers people for one of your webinars as if they had used the hosted registration form: the contact is created or updated in the CRM, the attendee gets a session and a personal watch link, and the webinar’s automations and reminders run. Full schema: API reference.

Use a Full access organization key.

Terminal window
curl -X POST https://api.nexacloser.com/v1/webinar-registrants \
-H "Authorization: Bearer $NEXACLOSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webinar_id": "wbn_6RLC77yktP",
"registrants": [
{
"first_name": "Dana", "last_name": "Levi",
"email": "[email protected]", "phone": "+972501234567",
"page_url": "https://www.example.com/webinar?utm_source=facebook",
"consent": { "granted": true, "text_shown": "I agree to get webinar reminders by WhatsApp and SMS.", "source": "landing_page" }
},
{ "first_name": "Avi", "email": "[email protected]" }
]
}'
  • Pick the webinar with webinar_id or slug. It must be active and belong to the key’s workspace.
  • registrants is one object or an array of up to 100. Bigger lists: loop on your side.
  • Every registrant needs an email or a phone.
  • A registrant with a phone must carry consent.granted: true, because reminders go out by WhatsApp and SMS. Without it that registrant is refused with consent_required; the others in the batch still go through. Email-only registrants need no consent object.
  • Also accepted: full_name, phone_country_code, phone_national, country, url_parameters, custom_fields, utm_source, utm_medium, utm_campaign, utm_content, utm_term, referrer, locale, timezone. If the webinar has a registration form, its rules apply too.

The call answers 200 once the batch is processed. Each registrant succeeds or fails on its own:

{
"results": [
{
"index": 0,
"ok": true,
"registration_id": "wbr_5D2AkHpKwL",
"personal_link_url": "https://app.nexacloser.com/j/wbr_5D2AkHpKwL.6b146474.59934ce894cb",
"duplicate": false
},
{ "index": 1, "ok": false, "error": "consent_required" }
],
"created": 1,
"duplicates": 0,
"failed": 1
}
  • index is the registrant’s position in your array.
  • personal_link_url is that attendee’s own link to the webinar room. Send it to them if you send your own confirmation.
  • Registering the same person for the same session again succeeds with "duplicate": true and the same registration and link. Retrying a batch is safe.
error Meaning
consent_required The registrant has a phone and no consent.granted: true.
invalid_registrant The item is not an object.
email_or_phone_required Neither an email nor a phone.
valid email required The webinar’s form asks for an email and this one is missing or invalid.
validation_failed The webinar’s form rules rejected the answers.
webinar_full No seat left in the session.
internal Failed on our side. Retry that registrant.
Status error
400 invalid_json, no_registrants, batch_too_large, webinar_required
401 unauthorized
403 forbidden: the webinar belongs to another workspace
404 webinar_not_found: no active webinar with that id or slug
405 method_not_allowed
429 rate_limited

600 registrants per minute and 100,000 per day, per key. A batch of 50 counts as 50.