openapi: 3.0.0 info: title: LeanData BookIt 🗓️ Availability 🗓️ Availability 📆 Meetings > Create API description: Programmatic scheduling, availability lookup, and meeting management for the LeanData BookIt scheduling product. Power custom UIs with server-to-server access to availability, round-robin, and meeting CRUD. version: 1.0.0 servers: - url: https://api.leandata.com tags: - name: 📆 Meetings > Create description: '

Use these endpoints to finalize and book meetings after a timeslot has been selected.

⚠️ Important: You must support both POST /v1/meeting and POST /v1/round-robin-meeting.

The correct endpoint is determined by the availability response:

This behavior is driven by your scheduling graph configuration and cannot be assumed ahead of time.

' paths: /v1/meeting: post: tags: - 📆 Meetings > Create summary: v1/meeting description: '

This endpoint is used to book a meeting with a single rep who has already been assigned by your routing logic. The routing graph has selected the most appropriate user for the prospect based on your configuration—this endpoint simply finalizes the booking.

⚠️ Use this endpoint only when pageInfo.displayAllPoolAvailability = null or false in the availability response.

If pageInfo.displayAllPoolAvailability = true, you must instead call POST /v1/round-robin-meeting.

The request payload contains the encrypted scheduling context, the selected time window, prefilled user data, and optional links to support canceling or rescheduling the meeting after it''s booked.


Request Body Parameters

❗️ If your availability response indicates pageInfo.displayAllPoolAvailability = true, you must book using POST /v1/round-robin-meeting instead of this endpoint.

This endpoint supports three request modes. Your request body must include exactly one of:


Required fields for all requests

Field Type Required Description
scheduledTime object Yes The time slot the prospect selected.
scheduledTime.start_time number Yes Start time (Unix timestamp in milliseconds).
scheduledTime.end_time number Yes End time (Unix epoch timestamp in milliseconds).
scheduledTime.timezone string Yes IANA timezone (e.g., America/Los_Angeles).
userFields array Yes Prospect + form field values. Must include values for all required meeting.formFields returned by the availability endpoint.

userFields Important Notes:


Identification Modes

Mode selector rules

❗️Exactly one of token, linkId, or params must be provided. Do not send more than one.

Field Required? When to use Notes
token Required if using token mode Use when booking after calling /v1/scheduling/route-and-fetch-availability or /v1/scheduling/fetch-availability and you have a booking token Recommended path. Avoids needing legacy params.
linkId Required if using link mode Use when booking directly from a single-meeting-type BookIt Link Must be a supported Link type. (Multi-meeting-type / routing / dynamic links aren’t supported.)
params Required if using legacy mode Legacy integrations that already rely on the encrypted params payload Requires additional fields below.

Legacy-only Fields (params mode)

Field Type Required Applies when Description
cancelLink string Optional params mode Base cancel URL prefix used by legacy flows (often includes ?meetingId=).
rescheduleLink string Optional params mode Base reschedule URL prefix used by legacy flows (often includes ?meetingId=).

These links will be included in the confirmation email sent to the prospect. The values must be the base URL-- You can include any query parameters you''d like in the base URL. The BookIt system will automatically append the meetingId to the end of the URL.

❗️ Note: Make sure the base URL is formatted to support appending the meetingId correctly, depending on whether you want it as a path or a query parameter.


Response Body Parameters

' requestBody: content: application/json: schema: type: object example: scheduledTime: startTime: 1746644400000 endTime: 1746646200000 timezone: America/Los_Angeles params: /SX/uPyXb00nUaCDWL5oMxM1Bx8WpQFn/o/oxd+lUGJtn6LHAxmuXEN0kJFtAIVAKHzgZwyVP1oO7U6//YDFIUnehI4PzKEMg3rXI8WrRN9AukpVuPrvb81WoWG4Z6xuvzeT2o9hYkiVreX4C7SP93JHcLD6A4WCvOclsZZlaS+7PbonkTm2gSOMJ74mAwfK8azheT9s39DZa35VZdkGYRZ8yk0pdctpWdA1LHID1XLbGG8wxQw3Y1GbPCrIh/ML4CDEmO9MhZZHQ9vXjfQqP1Zhb3cTvZUM2WSfW+n1tZxQicgviTX4UQ+VwcnBXvApdmBlJO3UXPpr+0DtprsfECABeIdMfRqR8fkqNQ0cFP5C29VWTq49hEUQrQBhpF0jEFoeExxfUchhBrWMuRJ1YabTy+Mh2+hT66yw8o/vqnZwTrJdmxHKlrX+aNKM6D6h4DR+HkoeGvBJOtzzjdA6izF1GOQCgzVpk55xELGedb7b15yWPMHDP11PQNbSXM+ilmoz3aG0PFqwd4PHg2goOi+E4zwLS6jAU1U9zXo5nVY= cancelLink: https://testdomain.com/cancel?= rescheduleLink: https://testdomain.com/reschedule?= userFields: - name: First Name type: text value: LeanData - name: Last Name type: text value: Dev - name: Email type: text value: test@test.com - name: Additional Guest Emails type: textarea value: - test1@test.com responses: '200': description: Successful response content: application/json: {} /v1/round-robin-meeting: post: tags: - 📆 Meetings > Create summary: v1/round-robin-meeting description: '

This endpoint is used to book a meeting with a user from a round robin pool. If your routing logic has determined that a pool of users should be considered for this meeting, this endpoint handles the final assignment and booking of the meeting with the most appropriate available user.

💡 Use this endpoint when the availability response indicates pageInfo.displayAllPoolAvailability is true.

The request payload includes the encrypted scheduling context, the chosen time window, prefilled prospect data, and optional links for canceling or rescheduling the meeting after booking.


Request Body Parameters

Required for all requests

Field Type Required Description
scheduledTime object Yes Defines the selected meeting time and the eligible host pool for that time.
scheduledTime.start_time number Yes Meeting start time (Unix epoch milliseconds).
scheduledTime.end_time number Yes Meeting end time (Unix epoch milliseconds).
scheduledTime.timezone string Yes IANA timezone (e.g. America/Los_Angeles). Used for formatting the prospect confirmation email; the actual meeting time is based on the timestamps.
scheduledTime.users string[] Yes Ordered list of user IDs eligible for the selected timeslot. Order matters and must match the order implied by availability.timeSlots[].users via availability.indexToUserIdMap from the availability response (preserves round-robin priority).
userFields array Yes Form field values submitted by the prospect. Must include values for all required meeting.formFields returned by the availability endpoint.

Identification Modes

Mode selector rules

❗️Exactly one of token, linkId, or params must be provided. Do not send more than one.

Field Required? When to use Notes
token Required if using token mode Use when booking after calling /v1/scheduling/route-and-fetch-availability or /v1/scheduling/fetch-availability and you have a booking token Recommended path. Avoids needing legacy params.
linkId Required if using link mode Use when booking directly from a single-meeting-type BookIt Link Must be a supported Link type. (Multi-meeting-type / routing / dynamic links aren’t supported.)
params Required if using legacy mode Legacy integrations that already rely on the encrypted params payload Requires additional fields below.

Legacy-only Fields (params mode)

Field Type Required Applies when Description
cancelLink string Optional params mode Base cancel URL prefix used by legacy flows (often includes ?meetingId=).
rescheduleLink string Optional params mode Base reschedule URL prefix used by legacy flows (often includes ?meetingId=).

These links will be included in the confirmation email sent to the prospect. The values must be the base URL-- You can include any query parameters you''d like in the base URL. The BookIt system will automatically append the meetingId to the end of the URL.

❗️ Note: Make sure the base URL is formatted to support appending the meetingId correctly, depending on whether you want it as a path or a query parameter.


Response Body Parameters

' requestBody: content: application/json: schema: type: object example: scheduledTime: start_time: 1746486000000 end_time: 1746486900000 timezone: America/Los_Angeles users: - 0058c00000CssZGAAZ - 0058c00000CtXJhAAN - 0058c00000AukyPAAR - 0058c00000CtXKaAAN - 0058c000009wAEKAA2 - 0058c00000CssZLAAZ cancelLink: https://testdomain.com/cancel?meetingId= rescheduleLink: https://testdomain.com/reschedule?meetingId= params: +aELYG7xzbgpE4sSyByw27/J11+QuSnMHV/Z5UDYfWhTYqOWLqSPG2bqRUBjUncGDhALE5PZ9lTtTK1n9yoQVLnHT58AUVANEe23Dzi1/62oOBZx+lpw7NeB0zqAYnGkVXjbchNC7PtZLcWA4VXjwuZvkIfkFqxZqA5hf9u2NpC6AMUyTo7j+Svyoc/S2Dit9IBrmbWhZcdn3eaNkVTkfqcW6RjX/LA+A9MgomWe9eQbgibpJGgUBN4KwmVQYQxiuwaSe4pMNyckOGg9EymjVPizsLSq9Iwc/tbj11RW6fPTbgquUyymeGYhIeIt0uONE/vAGiHO7Vkdn9gvAsQG5Y5aKvRF84zmd+vePfh7h43VvVoWH1w2lff5/Ks0rSDvAgRgdwXauZwudGoX0YWXHJfZEwEcgAbw16aLJiY6r+eLkgInglI2ZA9DfmE753JSbJ1PrtP7WNZYPI6NUvRORaKTg7xHPQg6ZrLTo1jo4L6qfP0nnn9D3sEmnVVxyfDeE+CVZWbawxjVTZFVTXL9/hVu2djwzEKlI9VxapB9qc1VK7cwBNLgC3qlnaaMr5Js userFields: - name: First Name type: text value: Test - name: Last Name type: text value: pool - name: Email type: text value: test@test.com - name: Additional Guest Emails type: textarea value: [] responses: '200': description: Successful response content: application/json: {}