Skip to main content
Use the meetings API to retrieve information about meetings created through a scheduling page. You can also book a meeting with a scheduling page through the API, and manage the payment link attached with a scheduling page.
If you’re looking to manage meeting activities on CRM record pages, check out the meetings activity API instead.
With the meetings API, you can:
  • Get a list of meeting links.
  • Get booking information for a meeting link.
  • Get the next availability page for a meeting link.
  • Update the payment link associated with a meeting link.
This could be useful if you have an app that can get a list of meeting links or book meetings. You could also use the meetings API to create an interface for your customers to book meetings with your team, or to programmatically manage payment collection on scheduled meetings. The following features aren’t supported when using the meetings API: The sections below provide a walkthrough of how to use the endpoints.

Retrieve meeting scheduling pages

To retrieve all meetings scheduling pages, make a GET request to /scheduler/2027-03-beta/meetings/meeting-links. Use the amount of meeting links you want returned as the limit in the request URL and use your user ID, name, and type as a query parameter. You can filter the request using the following query parameters: limit, type, name, and organizerUserId. The response will resemble the following:

Retrieve booking information

To view a meeting link’s booking and availability details, make a GET request to /scheduler/2027-03-beta/meetings/meeting-links/book/{slug}?timezone={timeZone} and provide the following in your request:
  • slug (path parameter): the meeting link’s slug. If it contains a forward slash, URL-encode it as %2F. For example, troymcclure/my_meeting becomes troymcclure%2Fmy_meeting.
  • timezone (query parameter): the visitor’s time zone (e.g., America/New_York). The API uses this to determine which month’s availability windows to return based on the visitor’s local date.
  • By default, the response will only include results from the current month. To get availability information for a future month, you can include the monthOffset query parameter to specify the number of months forward from the current month (e.g., monthOffset=2 would get availability two months from the current date).
For example, if a user’s scheduling link is https://meetings.hubspot.com/jdoe, to get booking information in the New York time zone in two months, you’d make a GET request to /scheduler/2027-03-beta/meetings/meeting-links/book/jdoe?timezone=America/New_York&monthOffset=2. The response would resemble the following:

Retrieve availability

To get the next availability page for a meeting, make a GET request to /scheduler/2027-03-beta/meetings/meeting-links/book/availability-page/{slug}?timezone={timezone}. If the slug contains a forward slash, URL-encode it as %2F (e.g., troymcclure/my_meeting becomes troymcclure%2Fmy_meeting). For example: /scheduler/2026-03/meetings/meeting-links/book/troymcclure%2Fbookme2026?timezone=America/New_York The response will resemble the following:

Book a meeting

To book a meeting using a meeting link, make a POST request to /scheduler/2027-03-beta/meetings/meeting-links/book?timezone={timezone}. The following request body fields are required:
  • slug: the slug of the meeting link to book.
  • firstName: the first name of the person booking the meeting.
  • lastName: the last name of the person booking the meeting.
  • email: the email address of the person booking the meeting.
  • startTime: the requested start time of the meeting, as a Unix timestamp in milliseconds.
  • duration: the duration of the meeting in milliseconds.
For example, to book a meeting, make a POST request to /scheduler/2027-03-beta/meetings/meeting-links/book?timezone=America/New_York with the following request body:
The response will resemble the following:

Offline bookings

If the server was not able to access the user’s calendar availability, either because the user did not have a calendar connected or because the calendar provider could not be reached, a meeting will be booked “offline”. That means that no calendar event will be created, and the user will instead be sent a notification informing them of the time that a lead attempted to book a meeting with them. In the case of an offline booking, isOffline will be set to true in the response body. The calendarEventId field will be set to "", indicating that no event ID was generated.

Retrieve user calendar and meetings connection statuses

To view which HubSpot account users have connected their calendars, enabled calendar sync, and have scheduling pages turned on, use the Users API to retrieve users with the following properties: For example, to check if a user has connected their calendar and turned on both calendar sync and meeting scheduling, make a GET request to /crm/objects/2027-03-beta/users?properties=hs_calendar_connection_status,hs_calendar_sync_enabled,hs_meetings_enabled. To attach a payment link, include its ID as the paymentLinkId in the request body:
A successful response returns 200 with the updated meeting link metadata. The paymentLinkId field in the response reflects the current associated value:
To remove an existing payment link association, set paymentLinkId to null:
A successful response returns 200 with the updated meeting link metadata, where paymentLinkId reflects the removed state.
Last modified on September 9, 2026