{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["img"]},"type":"markdown"},"seo":{"title":"Guide: Event Call Booking","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"guide-event-call-booking","__idx":0},"children":["Guide: Event Call Booking"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide shows the standard flow to book a call:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Get an API key"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Get the event ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["linkPrefix"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["username/event-name"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create (or upsert) a contact"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Insert invitee answers"]}," (primary invitee questions + secondary / custom fields)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use the response to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["disqualify"]}," the contact when needed, or to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["narrow hosts"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fetch availabilities (optionally constrained to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create the event call using an exact available ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dateTime"]}," (pass the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]}," when routing applies)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reference: OpenAPI ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/v1/openapi"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openapi/v1/openapi.json"]}]}," — operations ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insertInviteeAnswers"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updateContact"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getPublicEventDates"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createEventCall"]},". You can also inspect these endpoints with the iClosed MCP (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["get-endpoint-info"]}," for each path/method)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-get-your-api-key","__idx":1},"children":["1) Get your API key"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create an API key from your iClosed account settings, then send it in every request:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"Authorization: Bearer iclosed_<your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you have not done this yet, follow the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/authentication"},"children":["Authentication"]}," guide."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-get-the-event-link-prefix","__idx":2},"children":["2) Get the event link prefix"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For booking APIs, use an event ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["linkPrefix"]}," in this format:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"username/event-name\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"company/discovery-call\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Save this value. You will use it for invitee answers, availability lookup, and booking."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-create-or-upsert-the-contact","__idx":3},"children":["3) Create (or upsert) the contact"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before booking, create a contact with a minimal payload:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["firstName"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lastName"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["email"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This endpoint is idempotent for existing records by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["email"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," and upserts the same contact when it already exists."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request","__idx":4},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /v1/contacts\nContent-Type: application/json\nAuthorization: Bearer iclosed_<your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"email\": \"jane.doe@example.com\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-example","__idx":5},"children":["Response (example)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"contact\": {\n      \"id\": 139,\n      \"accountId\": 4,\n      \"userId\": null,\n      \"email\": \"jane.doe.updated@example.com\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Doe\",\n      \"status\": \"QUALIFIED\",\n      \"phoneNumber\": \"+15551234567\",\n      \"previewId\": \"contact_BpK9_yC5DFG7\",\n      \"tagId\": 7,\n      \"blockedByRecaptcha\": false,\n      \"joinedTime\": \"2026-03-04T20:38:06.409Z\",\n      \"country\": \"US\",\n      \"timeZone\": \"America/New_York\",\n      \"ipAddress\": \"192.168.1.1\",\n      \"blockedId\": null,\n      \"referrerUrl\": \"https://example.com/referral\",\n      \"createdAt\": \"2026-03-04T20:38:06.410Z\",\n      \"updatedAt\": \"2026-03-05T09:41:22.614Z\",\n      \"deletedAt\": null\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Save ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.contact.id"]}," as your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contactId"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-insert-invitee-answers","__idx":6},"children":["4) Insert invitee answers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the contact exists, call ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/fields/inviteeAnswers"]}]}," to submit:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Primary invitee questions"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inviteeQuestionAnswers"]},": each item has ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["answer"]},". Allowed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," values in the API are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EMAIL"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PHONE_NO"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NAME"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FIRST_NAME"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LAST_NAME"]},". Each ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," must match an invitee question of that ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["kind"]}," on the event (see your event setup in iClosed, or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/events/detail"]}," for context)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Secondary (custom) questions"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["secondaryQuestionsAnswer"]},": each item has ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["answer"]}," (always an array of strings) and either ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customFieldId"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identifier"]}," (slug). Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[]"]}," if there are none."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["linkPrefix"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contactId"]}," tie answers to the event and contact. You may use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["previewId"]}," instead of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contactId"]}," when that fits your integration."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-1","__idx":7},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /v1/fields/inviteeAnswers\nContent-Type: application/json\nAuthorization: Bearer iclosed_<your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"linkPrefix\": \"company/discovery-call\",\n  \"contactId\": 139,\n  \"inviteeQuestionAnswers\": [\n    { \"type\": \"EMAIL\", \"answer\": \"jane.doe@example.com\" },\n    { \"type\": \"PHONE_NO\", \"answer\": \"+15551234567\" },\n    { \"type\": \"FIRST_NAME\", \"answer\": \"Jane\" },\n    { \"type\": \"LAST_NAME\", \"answer\": \"Doe\" }\n  ],\n  \"secondaryQuestionsAnswer\": [\n    {\n      \"identifier\": \"company-size\",\n      \"answer\": [\"11-50\"]\n    }\n  ]\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you have no secondary answers, send an empty array (the field is required):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"\"secondaryQuestionsAnswer\": []\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-shape","__idx":8},"children":["Response (shape)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On success (",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["201"]},"), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," includes:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Result message (e.g. confirmation that answers were stored)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disqualifyingCondition"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Array of objects describing ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["disqualification rules that fired"]},", if any. Each entry typically identifies the rule (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["eventId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disqualificationGroupId"]},"), human-readable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["statement"]},", how it was evaluated (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["operator"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["condition"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]},"), and ties back to your event’s disqualification group. Use for logging, UI copy, or redirect URLs alongside ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDisqualified"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Array of user IDs"]}," (numbers) selected by the event’s ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["conditional routing"]}," after evaluating answers. Empty when no conditional hosts apply."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDisqualified"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," when at least one disqualification condition triggered."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"message\": \"Questions Answers Inserted Successfully\",\n    \"disqualifyingCondition\": [],\n    \"conditionalUsers\": [1, 2],\n    \"isDisqualified\": false\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a disqualification rule matches, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDisqualified"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disqualifyingCondition"]}," lists the rules that matched. Field names and extra keys can vary by event configuration; a typical entry looks like this:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"message\": \"Questions Answers Inserted Successfully\",\n    \"disqualifyingCondition\": [\n      {\n        \"id\": 4,\n        \"eventId\": 1,\n        \"statement\": \"Disqualify\",\n        \"operator\": \"AND\",\n        \"value\": \"Yes\",\n        \"condition\": \"IS\",\n        \"disqualificationGroupId\": 4\n      }\n    ],\n    \"conditionalUsers\": [],\n    \"isDisqualified\": true\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this example, the invitee’s answers satisfied a rule labeled “Disqualify” (e.g. a secondary question answered ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Yes"]}," with condition ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["IS"]}," and logical ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["AND"]}," within its disqualification group). Your app should treat ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDisqualified"]}]}," as the authoritative flag and use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disqualifyingCondition"]}]}," for detail when updating CRM, showing messaging, or choosing a redirect."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"troubleshooting","__idx":9},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INVALID_INVITEE_QUESTION_TYPE"]}]},": The event has no invitee question matching the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," you sent. Align ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inviteeQuestionAnswers[].type"]}," with the invitee questions configured on that event for the public API (the event detail payload may label some fields differently in the UI; the insert endpoint expects the normalized types above)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"5-disqualify-the-contact-after-invitee-answers","__idx":10},"children":["5) Disqualify the contact (after invitee answers)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDisqualified"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," (and optionally when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disqualifyingCondition"]}," is non-empty), update the contact’s pipeline status to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DISQUALIFIED"]}]}," with ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /v1/contacts"]}]},". The request body must include ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," (the contact id); other fields are optional."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["disqualifyingCondition"]}," does not perform the status change by itself — your app should decide when to sync CRM state (for example, whenever ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDisqualified"]}," is true)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-2","__idx":11},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"PUT /v1/contacts\nContent-Type: application/json\nAuthorization: Bearer iclosed_<your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": 139,\n  \"status\": \"DISQUALIFIED\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Allowed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," values on this endpoint: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POTENTIAL"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["QUALIFIED"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DISQUALIFIED"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-example-1","__idx":12},"children":["Response (example)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"contact\": {\n      \"id\": 139,\n      \"accountId\": 4,\n      \"userId\": null,\n      \"email\": \"jane.doe@example.com\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Doe\",\n      \"status\": \"DISQUALIFIED\",\n      \"phoneNumber\": \"+15551234567\",\n      \"previewId\": \"contact_BpK9_yC5DFG7\",\n      \"tagId\": 7,\n      \"blockedByRecaptcha\": false,\n      \"joinedTime\": \"2026-03-04T20:38:06.409Z\",\n      \"country\": \"US\",\n      \"timeZone\": \"America/New_York\",\n      \"blockedId\": null,\n      \"referrerUrl\": \"https://example.com/referral\",\n      \"createdAt\": \"2026-03-04T20:38:06.410Z\",\n      \"updatedAt\": \"2026-03-05T10:00:00.000Z\",\n      \"deletedAt\": null\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the lead is disqualified, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["stop the booking flow"]}," (no need to fetch slots or create a call unless your product allows exceptions)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"6-fetch-available-datestimes-with-optional-conditionalusers-","__idx":13},"children":["6) Fetch available dates/times (with optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/events/eventDates"]}]}," with:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["linkPrefix"]}," (required)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeZone"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["currentDate"]}," when you want a specific anchor (recommended for predictable calendars)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]}]}," (optional): a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["comma-separated string of user IDs"]},", e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"3684\""]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"1,2\""]},". Pass the same IDs returned in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.conditionalUsers"]}," from ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Insert invitee answers"]}," (join the numeric array into a string). This ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["restricts availability to those hosts"]}," so slots reflect conditional routing."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-no-conditional-routing","__idx":14},"children":["Request (no conditional routing)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /v1/events/eventDates\nContent-Type: application/json\nAuthorization: Bearer iclosed_<your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"linkPrefix\": \"company/discovery-call\",\n  \"timeZone\": \"America/New_York\",\n  \"currentDate\": \"2026-02-26\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-after-invitee-answers-returned-conditionalusers-3684-3685-","__idx":15},"children":["Request (after invitee answers returned ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers: [3684, 3685]"]},")"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"linkPrefix\": \"company/discovery-call\",\n  \"timeZone\": \"America/New_York\",\n  \"currentDate\": \"2026-02-26\",\n  \"conditionalUsers\": \"3684,3685\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In application code, derive the string from the array, for example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers.join(',')"]}," (skip the field or pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["undefined"]}," when the array is empty)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-example-2","__idx":16},"children":["Response (example)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"isPreview\": false,\n    \"availabilities\": {\n      \"2026-02-26\": [\"09:00\", \"09:15\", \"10:00\"],\n      \"2026-02-27\": [\"09:00\", \"14:00\"]\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pick an available slot and construct an exact booking ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dateTime"]}," in ISO 8601 UTC format (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2026-03-15T14:00:00.000Z"]},")."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"7-create-the-event-call","__idx":17},"children":["7) Create the event call"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the exact available ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dateTime"]}," from the previous step."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Minimum booking fields:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dateTime"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeZone"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["linkPrefix"]}," (or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["eventId"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["secondaryQuestionsAnswer"]}," (may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[]"]},")"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["And one of:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contactId"]},", or"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["contact details (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["firstName"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lastName"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["email"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]},") to upsert at booking time"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]}]}," (optional): same semantics as for ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Get Event Date and Time"]}," — a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["comma-separated string"]}," of user IDs. If you computed availabilities with conditional hosts, pass the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["same"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]}," value here so the booking is validated against ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["those users’ calendars"]}," and assignment stays consistent."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-using-contactid--conditionalusers-","__idx":18},"children":["Request (using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contactId"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]},")"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /v1/eventCalls\nContent-Type: application/json\nAuthorization: Bearer iclosed_<your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"linkPrefix\": \"company/discovery-call\",\n  \"contactId\": 139,\n  \"dateTime\": \"2026-03-15T14:00:00.000Z\",\n  \"timeZone\": \"America/New_York\",\n  \"conditionalUsers\": \"3684,3685\",\n  \"secondaryQuestionsAnswer\": []\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-upsert-contact-during-booking","__idx":19},"children":["Request (upsert contact during booking)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"linkPrefix\": \"company/discovery-call\",\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"email\": \"jane.doe@example.com\",\n  \"dateTime\": \"2026-03-15T14:00:00.000Z\",\n  \"timeZone\": \"America/New_York\",\n  \"conditionalUsers\": \"3684\",\n  \"secondaryQuestionsAnswer\": []\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-example-3","__idx":20},"children":["Response (example)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"eventCall\": {\n      \"message\": \"Event call created successfully\",\n      \"status\": 200,\n      \"data\": {\n        \"startTime\": \"2026-03-15T14:00:00.000Z\",\n        \"endTime\": \"2026-03-15T14:15:00.000Z\",\n        \"id\": 1585584,\n        \"closerId\": 3685,\n        \"timeZone\": \"America/New_York\",\n        \"guestEmail\": \"nayyab142@iclosed.io\",\n        \"token\": \"ULC5lA1vKpS3OLD+m07eOz1U9/mAaXm6Q2j7wLCp1agN53Qt2gYOmbqAx3UQfMmMRQU4FIdSuh0kbIbUJBeBmw==\",\n        \"closerName\": \"zarrar khan\",\n        \"previewId\": \"call_fBdaH9gAZm8h\",\n        \"closerEmail\": \"zarrar1961@gmail.com\",\n        \"confirmationLink\": \"www.google.com\"\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Save ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.eventCall.data.id"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.eventCall.data.previewId"]}," for later operations (search, reschedule, cancel, and tracking)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"end-to-end-flow-summary","__idx":21},"children":["End-to-end flow (summary)"]},{"$$mdtype":"Tag","name":"Image","attributes":{"srcSet":"/assets/event-call-booking-end-to-end-flow-light.6425ff3511206b5e37b9c726d99ed2c9ae780f60164d4dfc645ae92baa210d22.9c1bb791.png light, /assets/event-call-booking-end-to-end-flow.248d412638de8fcb891d7e1db3afbdba6d4b9847bc7785ff11f7f31f7d60ddc6.9c1bb791.png dark","alt":"End-to-end flow (summary): create contact, submit qualifying answers, branch on isDisqualified, then either disqualify the contact or schedule event slots and an event call.","framed":false,"withLightbox":false},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verification-notes","__idx":22},"children":["Verification notes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following were exercised against the production API with a valid account key:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/events/eventDates"]}]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditionalUsers"]}," set to a single host id returned ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["201"]}," with a normal ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["availabilities"]}," payload."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /v1/contacts"]}]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{ \"id\", \"status\": \"DISQUALIFIED\" }"]}," returned ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["200"]}," and an updated contact."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/fields/inviteeAnswers"]}]}," depends on the event having invitee questions whose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["types match"]}," the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inviteeQuestionAnswers[].type"]}," values you send; otherwise the API returns ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INVALID_INVITEE_QUESTION_TYPE"]}]},". Confirm invitee question configuration on the event before relying on this step in production."]}]},"headings":[{"value":"Guide: Event Call Booking","id":"guide-event-call-booking","depth":1},{"value":"1) Get your API key","id":"1-get-your-api-key","depth":2},{"value":"2) Get the event link prefix","id":"2-get-the-event-link-prefix","depth":2},{"value":"3) Create (or upsert) the contact","id":"3-create-or-upsert-the-contact","depth":2},{"value":"Request","id":"request","depth":3},{"value":"Response (example)","id":"response-example","depth":3},{"value":"4) Insert invitee answers","id":"4-insert-invitee-answers","depth":2},{"value":"Request","id":"request-1","depth":3},{"value":"Response (shape)","id":"response-shape","depth":3},{"value":"Troubleshooting","id":"troubleshooting","depth":3},{"value":"5) Disqualify the contact (after invitee answers)","id":"5-disqualify-the-contact-after-invitee-answers","depth":2},{"value":"Request","id":"request-2","depth":3},{"value":"Response (example)","id":"response-example-1","depth":3},{"value":"6) Fetch available dates/times (with optional conditionalUsers )","id":"6-fetch-available-datestimes-with-optional-conditionalusers-","depth":2},{"value":"Request (no conditional routing)","id":"request-no-conditional-routing","depth":3},{"value":"Request (after invitee answers returned conditionalUsers: [3684, 3685] )","id":"request-after-invitee-answers-returned-conditionalusers-3684-3685-","depth":3},{"value":"Response (example)","id":"response-example-2","depth":3},{"value":"7) Create the event call","id":"7-create-the-event-call","depth":2},{"value":"Request (using contactId + conditionalUsers )","id":"request-using-contactid--conditionalusers-","depth":3},{"value":"Request (upsert contact during booking)","id":"request-upsert-contact-during-booking","depth":3},{"value":"Response (example)","id":"response-example-3","depth":3},{"value":"End-to-end flow (summary)","id":"end-to-end-flow-summary","depth":2},{"value":"Verification notes","id":"verification-notes","depth":2}],"frontmatter":{"seo":{"title":"Guide: Event Call Booking"}},"lastModified":"2026-04-13T12:13:14.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/guides/event-call-booking","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}