Booking Pages API
OnceHub Booking Pages API
- OpenAPI Version:
3.1.0 - API Version:
2.0.0
The OnceHub Booking Pages API allows you to manage bookings, booking pages, master pages, and scheduling resources programmatically.
Note: This documentation is for the Booking Pages product (legacy). While still supported, we recommend using Booking Calendars for new implementations.
Servers
- URL:
https://api.oncehub.com/v2
Operations
Validate API key
- Method:
GET - Path:
/test - Tags: Authentication
Enter your API key in the headers section below and click on "Try it" to test it.
Responses
Status: 200 200
Content-Type: application/json
messagestring
Example:
{
"message": "The API key is valid for account: admin@example.com"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 403 403 - Forbidden
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all bookings
- Method:
GET - Path:
/bookings - Tags: Bookings
Returns a list of all bookings in the account
Parameters
status
- In:
query
Only return bookings that have the given status.
string
owner
- In:
query
Only return booking owned by a user with a specific user ID.
string
contact
- In:
query
Only return bookings that were scheduled with the contact with the provided ID.
string
booking_page
- In:
query
Only return bookings that were created from the booking page with the provided ID.
string
master_page
- In:
query
Only return bookings that were created from the master page with the provided ID.
string
event_type
- In:
query
Only return bookings that were created using the event type with the provided ID.
string
creation_time.gt
- In:
query
Return bookings with creation time greater than the given date.
string, format: date
creation_time.lt
- In:
query
Return bookings with creation time less than the given date.
string, format: date
starting_time.gt
- In:
query
Return bookings with starting time greater than the given date.
string, format: date
starting_time.lt
- In:
query
Return bookings with starting time less than the given date.
string, format: date
last_updated_time.gt
- In:
query
Return bookings with last updated time greater than the given date.
string, format: date
last_updated_time.lt
- In:
query
Return bookings with last updated time less than the given date.
string, format: date
expand
- In:
query
A comma separated list of fields that you want to expand. Possible values are owner, contact, conversation.
string
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
Responses
Status: 200 200
Content-Type: application/json
dataarrayItems:
All of:
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
contactobject— The ID of the contact the booking was scheduled with. **Expandable**: Use `expand=contact` to include the full Contact object.conversationobject— The ID of the conversation that this booking was scheduled from, null if the booking did not come from a conversation. **Expandable**: Use `expand=conversation` to include the full Conversation object.ownerobject— The ID of the owner of the booking. This is the User who originally accepted the booking, and remains unchanged even if the booking was reassigned to a new booking page. **Expandable**: Use `expand=owner` to include the full User object.utm_paramsobject— If no UTM params exist on the booking, object will return null.
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": null,
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
],
"owner": "USR-FSD423423",
"conversation": "CVR-ZLS0AG3YXZTH",
"utm_params": {
"source": "facebook",
"medium": "social",
"campaign": "webinar_signup",
"term": "online+meeting+scheduler",
"content": "logolink"
},
"contact": "CTC-262WER5NR9CG38"
}
],
"has_more": false
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single booking
- Method:
GET - Path:
/bookings/{id} - Tags: Bookings
Returns a single booking by ID
Parameters
id required
- In:
path
ID of the booking
string
Responses
Status: 200 200
Content-Type: application/json
All of:
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
contactobject— The ID of the contact the booking was scheduled with. **Expandable**: Use `expand=contact` to include the full Contact object.conversationobject— The ID of the conversation that this booking was scheduled from, null if the booking did not come from a conversation. **Expandable**: Use `expand=conversation` to include the full Conversation object.ownerobject— The ID of the owner of the booking. This is the User who originally accepted the booking, and remains unchanged even if the booking was reassigned to a new booking page. **Expandable**: Use `expand=owner` to include the full User object.utm_paramsobject— If no UTM params exist on the booking, object will return null.
Example:
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": null,
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
],
"owner": "USR-FSD423423",
"conversation": "CVR-ZLS0AG3YXZTH",
"utm_params": {
"source": "facebook",
"medium": "social",
"campaign": "webinar_signup",
"term": "online+meeting+scheduler",
"content": "logolink"
},
"contact": "CTC-262WER5NR9CG38"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Cancel a booking
- Method:
POST - Path:
/bookings/{id}/cancel - Tags: Bookings
Cancel a booking by ID
Parameters
id required
- In:
path
ID of the booking
string
Request Body
Content-Type: application/json
cancellation_reasonstring— Reason for cancelling the meeting (optional)send_cancellation_emailboolean, default:true— Whether a cancellation email should be sent
Example:
{
"cancellation_reason": "",
"send_cancellation_email": true
}
Responses
Status: 200 200
Content-Type: application/json
All of:
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
cancel_reschedule_informationobject— An object containing information about the cancel / reschedule event.actioned_bystring, possible values:"user", "customer"— Indicates the entity that performed the action. Valid options are user (person in your team) and customer (person who made the booking).reasonstring— The reason given for canceling or rescheduling a meeting.user_idstring— If the cancel reschedule was done by the user, this field will contain their user id. Note: When a meeting is cancelled via the API, the `user_id` depends on the booking source: - **Booking Calendars:** The `user_id` is booking host's user ID. - **Booking Pages:** The `user_id` is the account owner's user ID.
Example:
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": {
"reason": "Change in schedule",
"actioned_by": "user",
"user_id": "USR-FSD423423"
},
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
]
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 409 409
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 422 422
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Request a reschedule
- Method:
POST - Path:
/bookings/{id}/request-reschedule - Tags: Bookings
Request to reschedule a booking by ID
Parameters
id required
- In:
path
ID of the booking
string
Request Body
Content-Type: application/json
reschedule_reasonstring— Reason for requesting the customer to reschedule the meeting (optional)
Example:
{
"reschedule_reason": ""
}
Responses
Status: 200 200
Content-Type: application/json
All of:
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
cancel_reschedule_informationobject— An object containing information about the cancel / reschedule event.actioned_bystring, possible values:"user", "customer"— Indicates the entity that performed the action. Valid options are user (person in your team) and customer (person who made the booking).reasonstring— The reason given for canceling or rescheduling a meeting.user_idstring— If the cancel reschedule was done by the user, this field will contain their user id. Note: When a meeting is cancelled via the API, the `user_id` depends on the booking source: - **Booking Calendars:** The `user_id` is booking host's user ID. - **Booking Pages:** The `user_id` is the account owner's user ID.
Example:
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": {
"reason": "Change in schedule",
"actioned_by": "user",
"user_id": "USR-FSD423423"
},
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
]
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 409 409
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 422 422
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Reassign a booking
- Method:
POST - Path:
/bookings/{id}/reassign - Tags: Bookings
Reassign an existing booking to a new host by ID.
Effects of reassignment:
- The original calendar event is deleted, and a new event is created in the new host's integrated calendar.
- Reassignment notifications are sent to guests and hosts.
Parameters
id required
- In:
path
The unique ID of the booking.
string
Request Body
Content-Type: application/json
new_host(required)string— The OnceHub user ID for the new host. The user must belong to the same account, hold an active seat license, and cannot be the current host of the booking.locationobject— Optional. Determines how the location is handled when a meeting is reassigned to a new host. **Case 1: When `location` object is omitted:** The system applies the following logic based on the original booking's location type: - *Online Meetings:* The system first tries to use the same Video Conference Service provider as the original host. If that specific Video Conference Service provider is not connected to the new host, it automatically selects the best available integration based on this priority: 1. Google Meet 2. Microsoft Teams 3. Zoom 4. Webex Meetings 5. GoTo Meeting - *In-person/ Phone Meetings:* The location remains unchanged for the new host. >[!NOTE] Missing Integration: If the original meeting was virtual but the new host has no Video Conference Service integrations connected, the booking will be reassigned successfully but will proceed without a virtual link. To avoid meetings without links, it is recommended to verify host integrations before reassignment. **Case 2: When `location` object is included:** The system applies the specific `type` and `value` for the new host. Currently, this object only supports virtual updates and cannot be used to switch a virtual meeting to an In-person location. The selected Video Conference Service must be connected and active in the new host's OnceHub account. >[!IMPORTANT] Reassignment Failure: If the specified Video Conference Service is not connected for the new host, the reassignment request will fail. In this case, the API will return an error along with a list of connected Video Conference Service options available for that host.type(required)string, possible values:"virtual"— Fixed Value: virtual. The required location type for virtual conferencing. Note: virtual is currently the only supported override type. In-person and Phone locations can only be maintained by omitting the location object.value(required)string, possible values:"google_meet", "microsoft_teams", "webex", "gotomeeting", "zoom"— Supported Values: The specific service to be used.
Example:
{
"new_host": "",
"location": {
"type": "virtual",
"value": "google_meet"
}
}
Responses
Status: 200 200
Content-Type: application/json
All of:
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
contactobject— The ID of the contact the booking was scheduled with. **Expandable**: Use `expand=contact` to include the full Contact object.conversationobject— The ID of the conversation that this booking was scheduled from, null if the booking did not come from a conversation. **Expandable**: Use `expand=conversation` to include the full Conversation object.ownerobject— The ID of the owner of the booking. This is the User who originally accepted the booking, and remains unchanged even if the booking was reassigned to a new booking page. **Expandable**: Use `expand=owner` to include the full User object.utm_paramsobject— If no UTM params exist on the booking, object will return null.
Example:
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": null,
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
],
"owner": "USR-FSD423423",
"conversation": "CVR-ZLS0AG3YXZTH",
"utm_params": {
"source": "facebook",
"medium": "social",
"campaign": "webinar_signup",
"term": "online+meeting+scheduler",
"content": "logolink"
},
"contact": "CTC-262WER5NR9CG38"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 409 409
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Set a booking as no-show
- Method:
POST - Path:
/bookings/{id}/no-show - Tags: Bookings
Update the booking status to no-show by ID
Parameters
id required
- In:
path
ID of the booking
string
Responses
Status: 200 200
Content-Type: application/json
All of:
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
contactobject— The ID of the contact the booking was scheduled with. **Expandable**: Use `expand=contact` to include the full Contact object.conversationobject— The ID of the conversation that this booking was scheduled from, null if the booking did not come from a conversation. **Expandable**: Use `expand=conversation` to include the full Conversation object.ownerobject— The ID of the owner of the booking. This is the User who originally accepted the booking, and remains unchanged even if the booking was reassigned to a new booking page. **Expandable**: Use `expand=owner` to include the full User object.utm_paramsobject— If no UTM params exist on the booking, object will return null.
Example:
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": null,
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
],
"owner": "USR-FSD423423",
"conversation": "CVR-ZLS0AG3YXZTH",
"utm_params": {
"source": "facebook",
"medium": "social",
"campaign": "webinar_signup",
"term": "online+meeting+scheduler",
"content": "logolink"
},
"contact": "CTC-262WER5NR9CG38"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 409 409
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all booking pages
- Method:
GET - Path:
/booking-pages - Tags: Booking Pages
Returns a list of all booking pages in your account
Parameters
master_page
- In:
query
Filter booking pages that are associated with this master page ID
string
event_type
- In:
query
Filter booking pages that are associated with this event type ID
string
user
- In:
query
Filter booking pages owned by this user ID
string
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
Responses
Status: 200 200
Content-Type: application/json
dataarrayItems:
activeboolean— True if this booking page is enabled and accepts bookingsidstring— Unique identifier for the objectlabelstring— The internal label of the booking pagenamestring— The customer-facing name of the booking pageobjectstring— String representing the object's typetimezonestring— The Booking page timezone. Displayed in IANA timezone format.urlstring, format:uri— The URL of the booking page
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "booking_page",
"id": "BP-3F7JAWT4UA",
"name": "Andrea Hartie",
"label": "AndreaHartie",
"url": "https://go.oncehub.com/andreahartie",
"active": true,
"timezone": "America/Chicago"
}
],
"has_more": false
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single booking page
- Method:
GET - Path:
/booking-pages/{id} - Tags: Booking Pages
Returns a single booking page by ID
Parameters
id required
- In:
path
ID of the booking page
string
Responses
Status: 200 200
Content-Type: application/json
activeboolean— True if this booking page is enabled and accepts bookingsidstring— Unique identifier for the objectlabelstring— The internal label of the booking pagenamestring— The customer-facing name of the booking pageobjectstring— String representing the object's typetimezonestring— The Booking page timezone. Displayed in IANA timezone format.urlstring, format:uri— The URL of the booking page
Example:
{
"object": "booking_page",
"id": "BP-3F7JAWT4UA",
"name": "Andrea Hartie",
"label": "AndreaHartie",
"url": "https://go.oncehub.com/andreahartie",
"active": true,
"timezone": "America/Chicago"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all event types
- Method:
GET - Path:
/event-types - Tags: Event Types
Returns a list of all event types in your account
Parameters
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
Responses
Status: 200 200
Content-Type: application/json
dataarrayItems:
descriptionstring— The description of the event typeidstring— Unique identifier for the event typenamestring— The name of the event typeobjectstring— String representing the object's type
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "event_type",
"id": "ET-7I7PKDTFJS",
"name": "Live demo",
"description": "Schedule a live demo with us for an in-depth look at our enterprise solutions."
}
],
"has_more": false
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single event type
- Method:
GET - Path:
/event-types/{id} - Tags: Event Types
Returns a single event type by ID
Parameters
id required
- In:
path
ID of the event type
string
Responses
Status: 200 200
Content-Type: application/json
descriptionstring— The description of the event typeidstring— Unique identifier for the event typenamestring— The name of the event typeobjectstring— String representing the object's type
Example:
{
"object": "event_type",
"id": "ET-7I7PKDTFJS",
"name": "Live demo",
"description": "Schedule a live demo with us for an in-depth look at our enterprise solutions."
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all master pages
- Method:
GET - Path:
/master-pages - Tags: Master Pages
Returns a list of all master pages in your account
Parameters
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
string, default: "10"
Responses
Status: 200 200
Content-Type: application/json
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single master page
- Method:
GET - Path:
/master-pages/{id} - Tags: Master Pages
Returns a single master page by ID
Parameters
id required
- In:
path
ID of the master page
string
Responses
Status: 200 200
Content-Type: application/json
activeboolean, default:trueidstringlabelstringnamestringobjectstringurlstring
Example:
{
"id": "MP-73E6RHFU77",
"object": "master_page",
"name": "Star Software LLC",
"label": "Dana",
"url": "https://go.oncehub.com/dana",
"active": true
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Create a one-time booking link
- Method:
POST - Path:
/master-pages/{id}/one-time-links - Tags: Master Pages
Creates a one time link for a master page
One-time links that haven't been consumed will be automatically deleted after 90 days.
Parameters
id required
- In:
path
ID of the master page
string
Responses
Status: 200 200
Content-Type: application/json
creation_timestringidstringurlstring
Example:
{
"id": "S617NW9C",
"url": "https://go.oncehub.com/.S617NW9C",
"creation_time": "2023-12-08T10:21:01Z"
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all SMS notifications
- Method:
GET - Path:
/notifications/sms - Tags: Notifications
Returns a list of SMS notifications sent from your account, sorted by creation date. You can filter by recipient, recipient type, and creation time.
The recipient field can be expanded to include full contact or user details.
Parameters
creation_time.gt
- In:
query
Return SMS notifications created after this date
string, format: date-time
creation_time.lt
- In:
query
Return SMS notifications created before this date
string, format: date-time
recipient
- In:
query
Filter by specific recipient ID (contact or user ID).
string
recipient_type
- In:
query
Filter by recipient type. Valid values are contact or user.
string, possible values: "contact", "user"
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
expand
- In:
query
A comma-separated list of fields to expand. Currently supports: recipient.
string
Responses
Status: 200 200
Content-Type: application/json
data(required)array— Array of SMS notification objects.Items:
creation_time(required)string, format:date-time— The date and time when the SMS notification was created.details(required)object— SMS-specific delivery details.delivered_to(required)string— The phone number where the SMS was delivered.message_body(required)string— The content of the SMS message that was sent.segment_count(required)integer— The number of segments the SMS was split into. SMS messages are charged per segment.
id(required)string— Unique identifier for the object.object(required)string— String representing the object's type. Objects of the same type share the same value.recipient(required)object— The ID of the recipient who received the SMS. Can be either a contact ID or a user ID. When expanded, this will include the full contact or user object.recipient_type(required)string, possible values:"contact", "user"— Indicates whether the recipient is a contact or a user.status(required)string, possible values:"sent", "failed", "delivered", "rejected"— The delivery status of the SMS notification.type(required)string— The type of notification. For SMS notifications, this is always "sms".
object(required)string— String representing the object's type. Always "list" for list responses.
Example:
{
"object": "list",
"data": [
{
"object": "notification",
"id": "SMS-8X92M293",
"type": "sms",
"status": "delivered",
"creation_time": "2025-11-25T14:30:00Z",
"recipient": "CTC-555444333",
"recipient_type": "contact",
"details": {
"delivered_to": "+12025550195",
"message_body": "Hi Carrie, see you at 3PM!",
"segment_count": 1
}
}
]
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 403 403 - Forbidden
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all users
- Method:
GET - Path:
/users - Tags: Users
Returns a list of all users in your account
Parameters
email
- In:
query
Filter by email address
string, format: email
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
Responses
Status: 200 200
Content-Type: application/json
dataarrayItems:
emailstring, format:email— User's email.first_namestring— User's first name.idstring— Unique identifier for the object.last_namestring— User's last name.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is user.role_namestring, possible values:"Account Owner", "Administrator", "Member", "Team Manager"— The name of the role associated with the user, for example - Administrator, Member, Team Manager, or Account Owner.statusstring, possible values:"active", "invited"— The status of the user. The user can have one of the following statuses - active or invited.teamsarray— The teams the user belongs to.Items:
stringtimezonestring— User's timezone. Displayed in IANA timezone format
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "user",
"id": "USR-FSD423423",
"first_name": "Andrea",
"last_name": "Hartie",
"email": "AndreaHartie@example.com",
"status": "active",
"role_name": "Member",
"timezone": "America/Chicago",
"teams": [
"TM-GCJU8DLBTPY1"
]
}
],
"has_more": false
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Add a new user
- Method:
POST - Path:
/users - Tags: Users
Add or invite a new user to your OnceHub account
Notes On Using This Endpoint
- The user will be added with Member role by default if no role is specified
- An invitation email will be sent to the user
- User limits apply based on your account plan (500 for purchased accounts, 30 for trial accounts)
- The Account Owner role cannot be assigned through the API
Request Body
Content-Type: application/json
email(required)string, format:email— Email address of the new userfirst_name(required)string— First name of the new userlast_name(required)string— Last name of the new userrole_namestring, possible values:"Administrator", "Member", "Team Manager"— The role to assign to the user. Valid values are `Administrator`, `Member`, or `Team Manager`. Defaults to `Member` if not specified.teamsarray— Array of team external IDs to add the user to. Each team ID must exist in the account.Items:
string
Example:
{
"email": "carrie.customer@gmail.com",
"first_name": "Carrie",
"last_name": "Customer",
"role_name": "Administrator",
"teams": [
"TM-GCJU8DLBTPY1",
"TM-ABC123DEF456"
]
}
Responses
Status: 200 200
Content-Type: application/json
emailstring, format:email— User's email.first_namestring— User's first name.idstring— Unique identifier for the object.last_namestring— User's last name.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is user.role_namestring, possible values:"Account Owner", "Administrator", "Member", "Team Manager"— The name of the role associated with the user, for example - Administrator, Member, Team Manager, or Account Owner.statusstring, possible values:"active", "invited"— The status of the user. The user can have one of the following statuses - active or invited.teamsarray— The teams the user belongs to.Items:
stringtimezonestring— User's timezone. Displayed in IANA timezone format
Example:
{
"object": "user",
"id": "USR-FSD423423",
"first_name": "Andrea",
"last_name": "Hartie",
"email": "AndreaHartie@example.com",
"status": "active",
"role_name": "Member",
"timezone": "America/Chicago",
"teams": [
"TM-GCJU8DLBTPY1"
]
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 422 422
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 500 500
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single user
- Method:
GET - Path:
/users/{id} - Tags: Users
Returns a single user by ID
Parameters
id required
- In:
path
ID of the user
string
Responses
Status: 200 200
Content-Type: application/json
emailstring, format:email— User's email.first_namestring— User's first name.idstring— Unique identifier for the object.last_namestring— User's last name.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is user.role_namestring, possible values:"Account Owner", "Administrator", "Member", "Team Manager"— The name of the role associated with the user, for example - Administrator, Member, Team Manager, or Account Owner.statusstring, possible values:"active", "invited"— The status of the user. The user can have one of the following statuses - active or invited.teamsarray— The teams the user belongs to.Items:
stringtimezonestring— User's timezone. Displayed in IANA timezone format
Example:
{
"object": "user",
"id": "USR-FSD423423",
"first_name": "Andrea",
"last_name": "Hartie",
"email": "AndreaHartie@example.com",
"status": "active",
"role_name": "Member",
"timezone": "America/Chicago",
"teams": [
"TM-GCJU8DLBTPY1"
]
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Update a user
- Method:
PATCH - Path:
/users/{id} - Tags: Users
Update an existing user's information in your OnceHub account
Notes On Using This Endpoint
- At least one field must be provided to update
- The Account Owner role cannot be assigned or updated through the APIs
Parameters
id required
- In:
path
ID of the user to update
string
Request Body
Content-Type: application/json
first_namestring— User's first namelast_namestring— User's last namerole_namestring, possible values:"Administrator", "Member", "Team Manager"— The role to assign to the user. Valid values are `Administrator`, `Member`, or `Team Manager`.teamsarray— Array of team external IDs to assign the user to. This will replace existing team assignments.Items:
string
Example:
{
"first_name": "Andrea",
"last_name": "Hartie",
"role_name": "Administrator",
"teams": [
"TM-GCJU8DLBTPY1",
"TM-ABC123DEF456"
]
}
Responses
Status: 200 200
Content-Type: application/json
emailstring, format:email— User's email.first_namestring— User's first name.idstring— Unique identifier for the object.last_namestring— User's last name.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is user.role_namestring, possible values:"Account Owner", "Administrator", "Member", "Team Manager"— The name of the role associated with the user, for example - Administrator, Member, Team Manager, or Account Owner.statusstring, possible values:"active", "invited"— The status of the user. The user can have one of the following statuses - active or invited.teamsarray— The teams the user belongs to.Items:
stringtimezonestring— User's timezone. Displayed in IANA timezone format
Example:
{
"object": "user",
"id": "USR-FSD423423",
"first_name": "Andrea",
"last_name": "Hartie",
"email": "AndreaHartie@example.com",
"status": "active",
"role_name": "Member",
"timezone": "America/Chicago",
"teams": [
"TM-GCJU8DLBTPY1"
]
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 403 403
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 410 410
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Delete a user
- Method:
DELETE - Path:
/users/{id} - Tags: Users
Deletes a single user by ID.
Parameters
id required
- In:
path
ID of the user
string
Responses
Status: 200 200
Content-Type: application/json
deleted(required)boolean— Whether the object was deletedid(required)string— ID of the deleted object
Example:
{
"id": "OBJ-123ABC",
"deleted": true
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get scheduling availability
- Method:
GET - Path:
/users/{id}/scheduling-availability - Tags: Users
Returns the scheduling availability for a user
Parameters
id required
- In:
path
ID of the user
string
Responses
Status: 200
Content-Type: application/json
Status: 400 Bad Request
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Update scheduling availability
- Method:
PATCH - Path:
/users/{id}/scheduling-availability - Tags: Users
Updates the scheduling availability for a user
Parameters
id required
- In:
path
string
Request Body
Content-Type: application/json
overridesarray— An array of objects, each defining an exception for a specific date. Any date provided will have its override schedule completely overwritten.Items:
working_hours(required)array— An array of time slot objects for the specific date. To make a user unavailable for the entire date, provide an empty array (`[]`). To **delete** an existing override for a date, set this value to `null`.Items:
end_time(required)string— The end time of an availability slot for the override date in `HH:MM` format. Must be a multiple of 15 minutes and occur after the `start_time`.locations(required)array— An array of location objects available for the time slot on the override date. Can be empty.Items:
type(required)string— The type of location for the override slot. Valid options are: `in_person_by_host`, `in_person_by_guest`, `online_dynamic_link`, `online_static_link`, `phone_by_guest`.idstring— The unique identifier for a physical address. This field is required and only used when the type is `in_person_by_host`.valuestring— The value depends on the location type. For `online_static_link`, this is the static meeting URL. For `in_person_by_guest`, this is the guest-provided meeting location. This field is required only when the type is `online_static_link` or `in_person_by_host`.
start_time(required)string— The start time of an availability slot for the override date in `HH:MM` format. The time must be a multiple of 15 minutes.
datestring— The specific date for the override in `YYYY-MM-DD` format. The date cannot be in the past. Duplicate dates are not allowed.
weeklyarray— An array of objects, each defining the full availability for a specific day of the week. Any day provided will have its schedule completely overwritten.Items:
day(required)string— The day of the week (e.g., "Monday", "Tuesday"). Must be a valid, case-sensitive day name. Duplicate days are not allowed.working_hours(required)array— An array of time slot objects for the day. To clear all availability for a day, provide an empty array (`[]`). This field cannot be `null`. Time slots for a single day cannot overlap.Items:
end_time(required)string— The end time of an availability slot in `HH:MM` format. Must be a multiple of 15 minutes and occur after the start_time.locations(required)array— An array of location objects available for the time slot. Can be empty. You cannot mix `online_dynamic_link` and `online_static_link` types in the same slot.Items:
type(required)string— The type of location. Valid options are: `in_person_by_host`, `in_person_by_guest`, `online_dynamic_link`, `online_static_link`, `phone_by_guest`. Duplicate types are not allowed within the same slot.idstring— The unique identifier for a physical address. This field is required and only used when the type is `in_person_by_host`.valuestring— The value depends on the location type. For `online_static_link`, this is the static meeting URL. For `in_person_by_guest`, this is the guest-provided meeting location. This field is required only when the type is `online_static_link` or `in_person_by_host`.
start_time(required)string— The start time of an availability slot in `HH:MM` format. The time must be a multiple of 15 minutes.
Example:
{
"weekly": [
{
"day": "",
"working_hours": [
{
"start_time": "",
"end_time": "",
"locations": [
{
"type": "",
"id": "",
"value": ""
}
]
}
]
}
],
"overrides": [
{
"date": "",
"working_hours": [
{
"start_time": "",
"end_time": "",
"locations": [
{
"type": "",
"id": "",
"value": ""
}
]
}
]
}
]
}
Responses
Status: 200
Content-Type: application/json
Status: 400 Bad Request
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 422 Unprocessable Entity
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all teams
- Method:
GET - Path:
/teams - Tags: Teams
Returns a list of all teams in your account
Parameters
user
- In:
query
Return all teams that the provided user is a member of.
string
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
Responses
Status: 200 200
Content-Type: application/json
dataarrayItems:
idstring— Unique identifier for the teamnamestring— The name of the teamobjectstring— String representing the object's type
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "team",
"id": "TM-GCJU8DLBTPY1",
"name": "Sales"
}
],
"has_more": false
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single team
- Method:
GET - Path:
/teams/{id} - Tags: Teams
Returns a single team by ID
Parameters
id required
- In:
path
ID of the team.
string
Responses
Status: 200 200
Content-Type: application/json
idstring— Unique identifier for the teamnamestring— The name of the teamobjectstring— String representing the object's type
Example:
{
"object": "team",
"id": "TM-GCJU8DLBTPY1",
"name": "Sales"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all contacts
- Method:
GET - Path:
/contacts - Tags: Contacts
List all contacts in your account
Parameters
email
- In:
query
Filter by the contact's email address
string
creation_time.lt
- In:
query
Return contacts with creation time less than the given date.
string, format: date
last_updated_time.gt
- In:
query
Return contacts with last updated time greater than the given date.
string, format: date
last_updated_time.lt
- In:
query
Return contacts with last updated time less than the given date.
string, format: date
creation_time.gt
- In:
query
Return contacts with creation time greater than the given date.
string, format: date
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
Responses
Status: 200 200
Content-Type: application/json
dataarrayItems:
citystring | null— City of the contactcompanystring | null— Company namecompany_sizestring | null— Size of the contact's companycountrystring | null— Country of the contactcreation_timestring, format:date-time— The date and time when the contact was createdcustom_fieldsarray— Custom fields associated with the contactItems:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
emailstring— Email address of the contactemployeesinteger— Number of employeesfirst_namestring | null— First name of the contacthas_consentboolean— Whether the contact has given consentidstring— Unique identifier for the contactjob_titlestring | null— Job title of the contactlast_interacted_timestring | null, format:date-time— The date and time of the last interaction with the contactlast_namestring | null— Last name of the contactlast_updated_timestring, format:date-time— The date and time the contact was last updatedmobile_phonestring | null— Mobile phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatobjectstring— String representing the object's typeownerstring— The ID of the owner of the contactphonestring | null— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring | null— Postal codesalutationstring | null— Salutationstatestring | null— State or provincestatusstring | null, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified", null— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring | null— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "contact",
"id": "CTC-J4FR05BKEW",
"creation_time": "2020-03-22T09:48:48Z",
"last_updated_time": "2020-03-22T09:48:48Z",
"last_interacted_time": null,
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"email": "carrie.customer@gmail.com",
"employees": 1,
"first_name": "Carrie",
"has_consent": false,
"job_title": "Executive Assistant",
"last_name": "Customer",
"mobile_phone": "+12025550195",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": []
}
],
"has_more": false
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Add a new contact
- Method:
POST - Path:
/contacts - Tags: Contacts
Create a new contact in your OnceHub account
Either email or mobile_phone is required - at least one must be provided
Request Body
Content-Type: application/json
All of:
citystring | null— City of the contactcompanystring | null— Company namecompany_sizestring | null— Size of the contact's companycountrystring | null— Country of the contactcreation_timestring, format:date-time— The date and time when the contact was createdcustom_fieldsarray— Custom fields associated with the contactItems:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
emailstring— Email address of the contactemployeesinteger— Number of employeesfirst_namestring | null— First name of the contacthas_consentboolean— Whether the contact has given consentidstring— Unique identifier for the contactjob_titlestring | null— Job title of the contactlast_interacted_timestring | null, format:date-time— The date and time of the last interaction with the contactlast_namestring | null— Last name of the contactlast_updated_timestring, format:date-time— The date and time the contact was last updatedmobile_phonestring | null— Mobile phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatobjectstring— String representing the object's typeownerstring— The ID of the owner of the contactphonestring | null— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring | null— Postal codesalutationstring | null— Salutationstatestring | null— State or provincestatusstring | null, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified", null— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring | null— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
Example:
{
"object": "contact",
"id": "CTC-J4FR05BKEW",
"creation_time": "2020-03-22T09:48:48Z",
"last_updated_time": "2020-03-22T09:48:48Z",
"last_interacted_time": null,
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"email": "carrie.customer@gmail.com",
"employees": 1,
"first_name": "Carrie",
"has_consent": false,
"job_title": "Executive Assistant",
"last_name": "Customer",
"mobile_phone": "+12025550195",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": []
}
Responses
Status: 201 201
Content-Type: application/json
citystring | null— City of the contactcompanystring | null— Company namecompany_sizestring | null— Size of the contact's companycountrystring | null— Country of the contactcreation_timestring, format:date-time— The date and time when the contact was createdcustom_fieldsarray— Custom fields associated with the contactItems:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
emailstring— Email address of the contactemployeesinteger— Number of employeesfirst_namestring | null— First name of the contacthas_consentboolean— Whether the contact has given consentidstring— Unique identifier for the contactjob_titlestring | null— Job title of the contactlast_interacted_timestring | null, format:date-time— The date and time of the last interaction with the contactlast_namestring | null— Last name of the contactlast_updated_timestring, format:date-time— The date and time the contact was last updatedmobile_phonestring | null— Mobile phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatobjectstring— String representing the object's typeownerstring— The ID of the owner of the contactphonestring | null— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring | null— Postal codesalutationstring | null— Salutationstatestring | null— State or provincestatusstring | null, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified", null— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring | null— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
Example:
{
"object": "contact",
"id": "CTC-J4FR05BKEW",
"creation_time": "2020-03-22T09:48:48Z",
"last_updated_time": "2020-03-22T09:48:48Z",
"last_interacted_time": null,
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"email": "carrie.customer@gmail.com",
"employees": 1,
"first_name": "Carrie",
"has_consent": false,
"job_title": "Executive Assistant",
"last_name": "Customer",
"mobile_phone": "+12025550195",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": []
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 409 409
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single contact
- Method:
GET - Path:
/contacts/{id} - Tags: Contacts
Get a single contact
Parameters
id required
- In:
path
ID of the contact
string
Responses
Status: 200 200
Content-Type: application/json
citystring | null— City of the contactcompanystring | null— Company namecompany_sizestring | null— Size of the contact's companycountrystring | null— Country of the contactcreation_timestring, format:date-time— The date and time when the contact was createdcustom_fieldsarray— Custom fields associated with the contactItems:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
emailstring— Email address of the contactemployeesinteger— Number of employeesfirst_namestring | null— First name of the contacthas_consentboolean— Whether the contact has given consentidstring— Unique identifier for the contactjob_titlestring | null— Job title of the contactlast_interacted_timestring | null, format:date-time— The date and time of the last interaction with the contactlast_namestring | null— Last name of the contactlast_updated_timestring, format:date-time— The date and time the contact was last updatedmobile_phonestring | null— Mobile phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatobjectstring— String representing the object's typeownerstring— The ID of the owner of the contactphonestring | null— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring | null— Postal codesalutationstring | null— Salutationstatestring | null— State or provincestatusstring | null, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified", null— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring | null— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
Example:
{
"object": "contact",
"id": "CTC-J4FR05BKEW",
"creation_time": "2020-03-22T09:48:48Z",
"last_updated_time": "2020-03-22T09:48:48Z",
"last_interacted_time": null,
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"email": "carrie.customer@gmail.com",
"employees": 1,
"first_name": "Carrie",
"has_consent": false,
"job_title": "Executive Assistant",
"last_name": "Customer",
"mobile_phone": "+12025550195",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": []
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Update a contact
- Method:
PATCH - Path:
/contacts/{id} - Tags: Contacts
Update an existing contact in your OnceHub account
Notes On Using This Endpoint
- At least one field must be provided to update
- Identifier fields (email, mobile_phone) cannot be updated via this endpoint
- Only the custom fields provided will be updated - partial updates are supported
Parameters
id required
- In:
path
ID of the contact to update
string
Request Body
Content-Type: application/json
citystring— City of the contactcompanystring— Company namecompany_sizestring— Size of the contact's companycountrystring— Country of the contactcustom_fieldsarray— Custom fields to update. Only the custom fields provided will be updated.Items:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
employeesinteger— Number of employeesfirst_namestring— First name of the contacthas_consentboolean— Whether the contact has given consentjob_titlestring— Job title of the contactlast_namestring— Last name of the contactownerstring— The ID of the owner of the contactphonestring— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring— Postal codesalutationstring— Salutationstatestring— State or provincestatusstring, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified"— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
Example:
{
"first_name": "Carrie",
"last_name": "Customer",
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"employees": 1,
"has_consent": false,
"job_title": "Senior Executive Assistant",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": [
{
"name": "resume",
"value": "https://example.com/resume.pdf"
}
]
}
Responses
Status: 200 200
Content-Type: application/json
citystring | null— City of the contactcompanystring | null— Company namecompany_sizestring | null— Size of the contact's companycountrystring | null— Country of the contactcreation_timestring, format:date-time— The date and time when the contact was createdcustom_fieldsarray— Custom fields associated with the contactItems:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
emailstring— Email address of the contactemployeesinteger— Number of employeesfirst_namestring | null— First name of the contacthas_consentboolean— Whether the contact has given consentidstring— Unique identifier for the contactjob_titlestring | null— Job title of the contactlast_interacted_timestring | null, format:date-time— The date and time of the last interaction with the contactlast_namestring | null— Last name of the contactlast_updated_timestring, format:date-time— The date and time the contact was last updatedmobile_phonestring | null— Mobile phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatobjectstring— String representing the object's typeownerstring— The ID of the owner of the contactphonestring | null— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring | null— Postal codesalutationstring | null— Salutationstatestring | null— State or provincestatusstring | null, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified", null— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring | null— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
Example:
{
"object": "contact",
"id": "CTC-J4FR05BKEW",
"creation_time": "2020-03-22T09:48:48Z",
"last_updated_time": "2020-03-22T09:48:48Z",
"last_interacted_time": null,
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"email": "carrie.customer@gmail.com",
"employees": 1,
"first_name": "Carrie",
"has_consent": false,
"job_title": "Executive Assistant",
"last_name": "Customer",
"mobile_phone": "+12025550195",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": []
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 500 500
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Delete a contact
- Method:
DELETE - Path:
/contacts/{id} - Tags: Contacts
Delete a contact
Parameters
id required
- In:
path
ID of the contact
string
Responses
Status: 200 200
Content-Type: application/json
deleted(required)boolean— Whether the object was deletedid(required)string— ID of the deleted object
Example:
{
"id": "OBJ-123ABC",
"deleted": true
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Create a webhook
- Method:
POST - Path:
/webhooks - Tags: Webhooks
Creates a webhook subscription.
Request Body
Content-Type: application/json
eventsarray— An array of Booking lifecycle events that will trigger the Webhook.Items:
stringnamestring— Unique name for your Webhook subscription. This name is only used by you for reference.urlstring— URL for receiving POST messages from OnceHub
Example:
{
"url": "",
"name": "",
"events": [
""
]
}
Responses
Status: 200 200
Content-Type: application/json
api_versionstring— The API version used for the webhookcreation_timestring— The time when the webhook was createdeventsarray— Booking lifecycle events that trigger the webhookItems:
stringidstring— Unique identifier for the webhooknamestring— Unique name for your webhook subscriptionobjectstring— String representing the object's typesecretstring— Secret key for webhook signature verificationurlstring— URL for receiving POST messages from OnceHub
Example:
{
"object": "webhook",
"id": "WHK-7JD9LBVZTQ",
"api_version": "v2",
"name": "New booking webhook",
"url": "https://mywebsite.com/webhooks/booking",
"events": [
"booking.completed",
"booking.rescheduled"
],
"creation_time": "2020-09-06T20:57:17.467Z",
"secret": "d7686b8c83f04913929079aeae40189e"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 409 409
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
List all webhooks
- Method:
GET - Path:
/webhooks - Tags: Webhooks
Returns a list of your webhook subscriptions, sorted by creation date.
Parameters
before
- In:
query
A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, starting with OBJ-XXXX, your subsequent call can include before=OBJ-XXXX in order to fetch the previous page of the list.
string
after
- In:
query
A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 30 objects, ending with OBJ-XXXX, your subsequent call can include after=OBJ-XXXX in order to fetch the next page of the list.
string
limit
- In:
query
Determines the number of objects that will be returned on each page. Defaults to 10 if not specified and has a maximum limit of 100 objects per page.
integer, default: 10
Responses
Status: 200 200
Content-Type: application/json
dataarrayItems:
api_versionstring— The API version used for the webhookcreation_timestring— The time when the webhook was createdeventsarray— Booking lifecycle events that trigger the webhookItems:
stringidstring— Unique identifier for the webhooknamestring— Unique name for your webhook subscriptionobjectstring— String representing the object's typesecretstring— Secret key for webhook signature verificationurlstring— URL for receiving POST messages from OnceHub
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "webhook",
"id": "WHK-7JD9LBVZTQ",
"api_version": "v2",
"name": "New booking webhook",
"url": "https://mywebsite.com/webhooks/booking",
"events": [
"booking.completed",
"booking.rescheduled"
],
"creation_time": "2020-09-06T20:57:17.467Z",
"secret": "d7686b8c83f04913929079aeae40189e"
}
],
"has_more": false
}
Status: 400 400
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Get a single webhook
- Method:
GET - Path:
/webhooks/{id} - Tags: Webhooks
Returns a single webhook subscription by ID.
Parameters
id required
- In:
path
ID of the webhook
string
Responses
Status: 200 200
Content-Type: application/json
api_versionstring— The API version used for the webhookcreation_timestring— The time when the webhook was createdeventsarray— Booking lifecycle events that trigger the webhookItems:
stringidstring— Unique identifier for the webhooknamestring— Unique name for your webhook subscriptionobjectstring— String representing the object's typesecretstring— Secret key for webhook signature verificationurlstring— URL for receiving POST messages from OnceHub
Example:
{
"object": "webhook",
"id": "WHK-7JD9LBVZTQ",
"api_version": "v2",
"name": "New booking webhook",
"url": "https://mywebsite.com/webhooks/booking",
"events": [
"booking.completed",
"booking.rescheduled"
],
"creation_time": "2020-09-06T20:57:17.467Z",
"secret": "d7686b8c83f04913929079aeae40189e"
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Delete a webhook
- Method:
DELETE - Path:
/webhooks/{id} - Tags: Webhooks
Deletes a single webhook subscription by ID.
Parameters
id required
- In:
path
ID of the webhook
string
Responses
Status: 200 200
Content-Type: application/json
deleted(required)boolean— Whether the object was deletedid(required)string— ID of the deleted object
Example:
{
"id": "OBJ-123ABC",
"deleted": true
}
Status: 401 401 - Unauthorized
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 404 404
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Status: 429 429 - Too Many Requests
Content-Type: application/json
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
Webhooks
Booking Scheduled Event
- Method:
POST - Path:
/webhooks/booking.scheduled - Tags: Webhook Events
Triggered when:
- Customer schedules a booking
- User approves a booking requested by a Customer
Booking Rescheduled Event
- Method:
POST - Path:
/webhooks/booking.rescheduled - Tags: Webhook Events
Triggered when:
- Customer reschedules a booking on the same booking calendar
- Customer reschedules a booking following a request from the User to reschedule
Booking Canceled Then Rescheduled Event
- Method:
POST - Path:
/webhooks/booking.canceled_then_rescheduled - Tags: Webhook Events
Triggered when Customer cancels a booking and then reschedules on a different booking page.
Booking Canceled Reschedule Requested Event
- Method:
POST - Path:
/webhooks/booking.canceled_reschedule_requested - Tags: Webhook Events
Triggered when User cancels and sends a request to the Customer to reschedule.
Booking Canceled Event
- Method:
POST - Path:
/webhooks/booking.canceled - Tags: Webhook Events
Triggered when User or Customer cancels a booking.
Booking Completed Event
- Method:
POST - Path:
/webhooks/booking.completed - Tags: Webhook Events
Triggered when booking end time has passed.
Booking No-Show Event
- Method:
POST - Path:
/webhooks/booking.no_show - Tags: Webhook Events
Triggered when User sets the completed booking to No-show.
Conversation Started Event
- Method:
POST - Path:
/webhooks/conversation.started - Tags: Webhook Events
Triggered when website visitor starts interacting with a chatbot.
Conversation Closed Event
- Method:
POST - Path:
/webhooks/conversation.closed - Tags: Webhook Events
Triggered when:
- Website visitor reaches the end of the conversation flow
- Website visitor starts a new conversation with a different chatbot
Conversation Abandoned Event
- Method:
POST - Path:
/webhooks/conversation.abandoned - Tags: Webhook Events
Triggered when website visitor stops interacting with a bot for more than 10 minutes.
Schemas
Booking
- Type:
Example:
BookingList
- Type:
object
dataarrayItems:
All of:
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
contactobject— The ID of the contact the booking was scheduled with. **Expandable**: Use `expand=contact` to include the full Contact object.conversationobject— The ID of the conversation that this booking was scheduled from, null if the booking did not come from a conversation. **Expandable**: Use `expand=conversation` to include the full Conversation object.ownerobject— The ID of the owner of the booking. This is the User who originally accepted the booking, and remains unchanged even if the booking was reassigned to a new booking page. **Expandable**: Use `expand=owner` to include the full User object.utm_paramsobject— If no UTM params exist on the booking, object will return null.
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": null,
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
],
"owner": "USR-FSD423423",
"conversation": "CVR-ZLS0AG3YXZTH",
"utm_params": {
"source": "facebook",
"medium": "social",
"campaign": "webinar_signup",
"term": "online+meeting+scheduler",
"content": "logolink"
},
"contact": "CTC-262WER5NR9CG38"
}
],
"has_more": false
}
Contact
- Type:
object
citystring | null— City of the contactcompanystring | null— Company namecompany_sizestring | null— Size of the contact's companycountrystring | null— Country of the contactcreation_timestring, format:date-time— The date and time when the contact was createdcustom_fieldsarray— Custom fields associated with the contactItems:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
emailstring— Email address of the contactemployeesinteger— Number of employeesfirst_namestring | null— First name of the contacthas_consentboolean— Whether the contact has given consentidstring— Unique identifier for the contactjob_titlestring | null— Job title of the contactlast_interacted_timestring | null, format:date-time— The date and time of the last interaction with the contactlast_namestring | null— Last name of the contactlast_updated_timestring, format:date-time— The date and time the contact was last updatedmobile_phonestring | null— Mobile phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatobjectstring— String representing the object's typeownerstring— The ID of the owner of the contactphonestring | null— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring | null— Postal codesalutationstring | null— Salutationstatestring | null— State or provincestatusstring | null, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified", null— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring | null— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
Example:
{
"object": "contact",
"id": "CTC-J4FR05BKEW",
"creation_time": "2020-03-22T09:48:48Z",
"last_updated_time": "2020-03-22T09:48:48Z",
"last_interacted_time": null,
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"email": "carrie.customer@gmail.com",
"employees": 1,
"first_name": "Carrie",
"has_consent": false,
"job_title": "Executive Assistant",
"last_name": "Customer",
"mobile_phone": "+12025550195",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": []
}
ContactList
- Type:
object
dataarrayItems:
citystring | null— City of the contactcompanystring | null— Company namecompany_sizestring | null— Size of the contact's companycountrystring | null— Country of the contactcreation_timestring, format:date-time— The date and time when the contact was createdcustom_fieldsarray— Custom fields associated with the contactItems:
namestringvaluestring | number | boolean | array | object | null— Value of the custom field
emailstring— Email address of the contactemployeesinteger— Number of employeesfirst_namestring | null— First name of the contacthas_consentboolean— Whether the contact has given consentidstring— Unique identifier for the contactjob_titlestring | null— Job title of the contactlast_interacted_timestring | null, format:date-time— The date and time of the last interaction with the contactlast_namestring | null— Last name of the contactlast_updated_timestring, format:date-time— The date and time the contact was last updatedmobile_phonestring | null— Mobile phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatobjectstring— String representing the object's typeownerstring— The ID of the owner of the contactphonestring | null— Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) formatpost_codestring | null— Postal codesalutationstring | null— Salutationstatestring | null— State or provincestatusstring | null, possible values:"Qualified", "Sales qualified", "Marketing qualified", "Disqualified", null— The status of the contact. Accepted values are `Qualified`, `Sales qualified`, `Marketing qualified`, or `Disqualified`. If any other value is provided or no value is provided, the status will be set to null.street_addressstring | null— Street addressterms_of_seviceboolean— Whether terms of service were acceptedtimezonestring— Timezone of the contact
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "contact",
"id": "CTC-J4FR05BKEW",
"creation_time": "2020-03-22T09:48:48Z",
"last_updated_time": "2020-03-22T09:48:48Z",
"last_interacted_time": null,
"owner": "USR-FSD423423",
"status": "Qualified",
"city": "New York",
"company_size": "50-100",
"company": "Acme Inc",
"country": "United States",
"email": "carrie.customer@gmail.com",
"employees": 1,
"first_name": "Carrie",
"has_consent": false,
"job_title": "Executive Assistant",
"last_name": "Customer",
"mobile_phone": "+12025550195",
"phone": "+12025550100",
"post_code": "10001",
"salutation": "Ms.",
"state": "New York",
"street_address": "123 Main Street",
"terms_of_sevice": false,
"timezone": "America/New_York",
"custom_fields": []
}
],
"has_more": false
}
BookingPage
- Type:
object
activeboolean— True if this booking page is enabled and accepts bookingsidstring— Unique identifier for the objectlabelstring— The internal label of the booking pagenamestring— The customer-facing name of the booking pageobjectstring— String representing the object's typetimezonestring— The Booking page timezone. Displayed in IANA timezone format.urlstring, format:uri— The URL of the booking page
Example:
{
"object": "booking_page",
"id": "BP-3F7JAWT4UA",
"name": "Andrea Hartie",
"label": "AndreaHartie",
"url": "https://go.oncehub.com/andreahartie",
"active": true,
"timezone": "America/Chicago"
}
BookingPageList
- Type:
object
dataarrayItems:
activeboolean— True if this booking page is enabled and accepts bookingsidstring— Unique identifier for the objectlabelstring— The internal label of the booking pagenamestring— The customer-facing name of the booking pageobjectstring— String representing the object's typetimezonestring— The Booking page timezone. Displayed in IANA timezone format.urlstring, format:uri— The URL of the booking page
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "booking_page",
"id": "BP-3F7JAWT4UA",
"name": "Andrea Hartie",
"label": "AndreaHartie",
"url": "https://go.oncehub.com/andreahartie",
"active": true,
"timezone": "America/Chicago"
}
],
"has_more": false
}
Team
- Type:
object
idstring— Unique identifier for the teamnamestring— The name of the teamobjectstring— String representing the object's type
Example:
{
"object": "team",
"id": "TM-GCJU8DLBTPY1",
"name": "Sales"
}
TeamList
- Type:
object
dataarrayItems:
idstring— Unique identifier for the teamnamestring— The name of the teamobjectstring— String representing the object's type
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "team",
"id": "TM-GCJU8DLBTPY1",
"name": "Sales"
}
],
"has_more": false
}
EventType
- Type:
object
descriptionstring— The description of the event typeidstring— Unique identifier for the event typenamestring— The name of the event typeobjectstring— String representing the object's type
Example:
{
"object": "event_type",
"id": "ET-7I7PKDTFJS",
"name": "Live demo",
"description": "Schedule a live demo with us for an in-depth look at our enterprise solutions."
}
EventTypeList
- Type:
object
dataarrayItems:
descriptionstring— The description of the event typeidstring— Unique identifier for the event typenamestring— The name of the event typeobjectstring— String representing the object's type
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "event_type",
"id": "ET-7I7PKDTFJS",
"name": "Live demo",
"description": "Schedule a live demo with us for an in-depth look at our enterprise solutions."
}
],
"has_more": false
}
Webhook
- Type:
object
api_versionstring— The API version used for the webhookcreation_timestring— The time when the webhook was createdeventsarray— Booking lifecycle events that trigger the webhookItems:
stringidstring— Unique identifier for the webhooknamestring— Unique name for your webhook subscriptionobjectstring— String representing the object's typesecretstring— Secret key for webhook signature verificationurlstring— URL for receiving POST messages from OnceHub
Example:
{
"object": "webhook",
"id": "WHK-7JD9LBVZTQ",
"api_version": "v2",
"name": "New booking webhook",
"url": "https://mywebsite.com/webhooks/booking",
"events": [
"booking.completed",
"booking.rescheduled"
],
"creation_time": "2020-09-06T20:57:17.467Z",
"secret": "d7686b8c83f04913929079aeae40189e"
}
WebhookList
- Type:
object
dataarrayItems:
api_versionstring— The API version used for the webhookcreation_timestring— The time when the webhook was createdeventsarray— Booking lifecycle events that trigger the webhookItems:
stringidstring— Unique identifier for the webhooknamestring— Unique name for your webhook subscriptionobjectstring— String representing the object's typesecretstring— Secret key for webhook signature verificationurlstring— URL for receiving POST messages from OnceHub
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "webhook",
"id": "WHK-7JD9LBVZTQ",
"api_version": "v2",
"name": "New booking webhook",
"url": "https://mywebsite.com/webhooks/booking",
"events": [
"booking.completed",
"booking.rescheduled"
],
"creation_time": "2020-09-06T20:57:17.467Z",
"secret": "d7686b8c83f04913929079aeae40189e"
}
],
"has_more": false
}
WebhookEvent
- Type:
object
Base webhook event structure sent to your webhook URL
api_version(required)string— The OnceHub API version used to render the data objectcreation_time(required)string, format:date-time— The time the event object was createdid(required)string— Unique alphanumeric identifier for the event objectobject(required)string— String representing the object's typetype(required)string— The type of the event (e.g., booking.scheduled, conversation.started)
Example:
{
"id": "EVNT-KN56U3YL7C",
"object": "event",
"creation_time": "2020-03-22T09:49:12Z",
"type": "booking.scheduled",
"api_version": "v2"
}
BookingWebhookData
- Type:
Example:
BookingWebhookCancelData
- Type:
Example:
BookingWithCancelInfo
- Type:
Example:
ConversationWebhookData
- Type:
Example:
BookingCalendar
- Type:
object
duration_minutesnumber— Meeting duration in minutes.hoststring— The user id / team id of the booking calendar meeting host. Additional attendees are not included.idstring— Unique identifier for the object.namestring— The internal label / name of the booking calendar.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is booking_calendar.publishedboolean— True if this booking calendar is enabled and accepts bookings.subjectstring— The customer-facing subject of the booking calendar.urlstring, format:uri— The URL of the booking calendar.
Example:
{
"object": "booking_calendar",
"id": "BKC-LDJ878496X",
"host": "USR-HYPGJXN3A8",
"name": "Andrea Hartie booking calendar",
"subject": "Meeting with Andrea Hartie",
"url": "https://oncehub.com/andreahartie",
"published": true,
"duration_minutes": 30
}
BookingCalendarList
- Type:
object
dataarrayItems:
duration_minutesnumber— Meeting duration in minutes.hoststring— The user id / team id of the booking calendar meeting host. Additional attendees are not included.idstring— Unique identifier for the object.namestring— The internal label / name of the booking calendar.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is booking_calendar.publishedboolean— True if this booking calendar is enabled and accepts bookings.subjectstring— The customer-facing subject of the booking calendar.urlstring, format:uri— The URL of the booking calendar.
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "booking_calendar",
"id": "BKC-LDJ878496X",
"host": "USR-HYPGJXN3A8",
"name": "Andrea Hartie booking calendar",
"subject": "Meeting with Andrea Hartie",
"url": "https://oncehub.com/andreahartie",
"published": true,
"duration_minutes": 30
}
],
"has_more": false
}
User
- Type:
object
emailstring, format:email— User's email.first_namestring— User's first name.idstring— Unique identifier for the object.last_namestring— User's last name.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is user.role_namestring, possible values:"Account Owner", "Administrator", "Member", "Team Manager"— The name of the role associated with the user, for example - Administrator, Member, Team Manager, or Account Owner.statusstring, possible values:"active", "invited"— The status of the user. The user can have one of the following statuses - active or invited.teamsarray— The teams the user belongs to.Items:
stringtimezonestring— User's timezone. Displayed in IANA timezone format
Example:
{
"object": "user",
"id": "USR-FSD423423",
"first_name": "Andrea",
"last_name": "Hartie",
"email": "AndreaHartie@example.com",
"status": "active",
"role_name": "Member",
"timezone": "America/Chicago",
"teams": [
"TM-GCJU8DLBTPY1"
]
}
UserList
- Type:
object
dataarrayItems:
emailstring, format:email— User's email.first_namestring— User's first name.idstring— Unique identifier for the object.last_namestring— User's last name.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is user.role_namestring, possible values:"Account Owner", "Administrator", "Member", "Team Manager"— The name of the role associated with the user, for example - Administrator, Member, Team Manager, or Account Owner.statusstring, possible values:"active", "invited"— The status of the user. The user can have one of the following statuses - active or invited.teamsarray— The teams the user belongs to.Items:
stringtimezonestring— User's timezone. Displayed in IANA timezone format
has_moreboolean— Whether there are more items availableobjectstring
Example:
{
"object": "list",
"data": [
{
"object": "user",
"id": "USR-FSD423423",
"first_name": "Andrea",
"last_name": "Hartie",
"email": "AndreaHartie@example.com",
"status": "active",
"role_name": "Member",
"timezone": "America/Chicago",
"teams": [
"TM-GCJU8DLBTPY1"
]
}
],
"has_more": false
}
SmsNotification
- Type:
object
creation_time(required)string, format:date-time— The date and time when the SMS notification was created.details(required)object— SMS-specific delivery details.delivered_to(required)string— The phone number where the SMS was delivered.message_body(required)string— The content of the SMS message that was sent.segment_count(required)integer— The number of segments the SMS was split into. SMS messages are charged per segment.
id(required)string— Unique identifier for the object.object(required)string— String representing the object's type. Objects of the same type share the same value.recipient(required)object— The ID of the recipient who received the SMS. Can be either a contact ID or a user ID. When expanded, this will include the full contact or user object.recipient_type(required)string, possible values:"contact", "user"— Indicates whether the recipient is a contact or a user.status(required)string, possible values:"sent", "failed", "delivered", "rejected"— The delivery status of the SMS notification.type(required)string— The type of notification. For SMS notifications, this is always "sms".
Example:
{
"object": "notification",
"id": "SMS-8X92M293",
"type": "sms",
"status": "delivered",
"creation_time": "2025-11-25T14:30:00Z",
"recipient": "CTC-555444333",
"recipient_type": "contact",
"details": {
"delivered_to": "+12025550195",
"message_body": "Hi Carrie, see you at 3PM!",
"segment_count": 1
}
}
SmsNotificationList
- Type:
object
data(required)array— Array of SMS notification objects.Items:
creation_time(required)string, format:date-time— The date and time when the SMS notification was created.details(required)object— SMS-specific delivery details.delivered_to(required)string— The phone number where the SMS was delivered.message_body(required)string— The content of the SMS message that was sent.segment_count(required)integer— The number of segments the SMS was split into. SMS messages are charged per segment.
id(required)string— Unique identifier for the object.object(required)string— String representing the object's type. Objects of the same type share the same value.recipient(required)object— The ID of the recipient who received the SMS. Can be either a contact ID or a user ID. When expanded, this will include the full contact or user object.recipient_type(required)string, possible values:"contact", "user"— Indicates whether the recipient is a contact or a user.status(required)string, possible values:"sent", "failed", "delivered", "rejected"— The delivery status of the SMS notification.type(required)string— The type of notification. For SMS notifications, this is always "sms".
object(required)string— String representing the object's type. Always "list" for list responses.
Example:
{
"object": "list",
"data": [
{
"object": "notification",
"id": "SMS-8X92M293",
"type": "sms",
"status": "delivered",
"creation_time": "2025-11-25T14:30:00Z",
"recipient": "CTC-555444333",
"recipient_type": "contact",
"details": {
"delivered_to": "+12025550195",
"message_body": "Hi Carrie, see you at 3PM!",
"segment_count": 1
}
}
]
}
Error
- Type:
object
message(required)string— A human-readable message providing more details about the errortype(required)string, possible values:"authentication_error", "invalid_request_error", "rate_limit_error", "api_error"— The type of error returnedparamstring— If the error is parameter-specific, the parameter related to the error
Example:
{
"type": "invalid_request_error",
"message": "No such booking: '123'",
"param": "id"
}
MasterPage
- Type:
object
The master page object contains the name, label and URL for master pages on your account and indicates whether the master page is enabled to receive bookings.
activeboolean, default:true— True if this master page is enabled and accepts bookings.idstring— Unique identifier for the object.labelstring— The internal label of the master page.namestring— The customer facing name of the master page.objectstring— String representing the object's type. Objects of the same type share the same value. The type here is master_page.urlstring, format:uri— The URL of the master page.
Example:
{
"object": "master_page",
"id": "MP-73E6RHFU77",
"name": "Star Software LLC",
"label": "Dana",
"url": "https://go.oncehub.com/dana",
"active": true
}
BookingBase
- Type:
object
attendeesarray— List of all meeting attendees (emails).Items:
stringbooking_pageobject— The ID of the booking page used to make the booking. **Expandable**: Use `expand=booking_page` to include the full BookingPage object.cancel_reschedule_informationobject | null— An object containing information about the cancel / reschedule event. This field is `null` if the booking has not been cancelled or rescheduled.creation_timestring, format:date-time— The date and time when the booking was created.custom_fieldsarray— Any custom fields that have been added to the field library for the meeting object type on your account will be listed in the array of custom fields.Items:
namestring— Name of the custom field.valueobject— Value of the custom field.
customer_timezonestring— The timezone selected by the customer when making the booking. Displayed in IANA timezone format.duration_minutesinteger— The length of the meeting, in minutes.event_typeobject— The ID of the service selected by customer. **Expandable**: Use `expand=event_type` to include the full EventType object.external_calendarobject— Object containing information about the calendar used in the booking.event_idstring— The id of the booking event that was created in the external calendar.idstring— The ID of the external calendar to which the booking was added.namestring— The name of the external calendar to which the booking was added.typestring, possible values:"google", "exchange", "office_365", "icloud"— Type of calendar
form_submissionobject— The object containing information entered by the customer into the booking form. This will include any system fields and custom fields defined in your booking form.companystring | null— The company provided by your customer in the booking form.custom_fieldsarray— The array containing custom Booking form fields.Items:
namestringvalueobject— Value of the custom field.
emailstring— The email provided by the customer in the booking form.guestsarray— List of additional attendees (emails) invited by the customer.Items:
stringmobile_phonestring— The mobile phone number provided by the customer in the booking form.namestring— The name provided by the customer in the booking form.notestring— The note provided by the customer in the booking form.phonestring | null— The phone number provided by the customer in the booking form.
idstring— Unique identifier for the object.in_trashboolean— The booking was moved to trash in the activity stream. While this value is true, the activity can still be found in the trash and has not been hard deleted yet.last_updated_timestring, format:date-time— The date and time the booking was last updated.location_descriptionstring— Information about the physical location in case of physical meeting.master_pageobject— The ID of the master booking page used to make the booking. **Expandable**: Use `expand=master_page` to include the full MasterPage object.objectstring— String representing the object's type. Objects of the same type share the same value.rescheduled_booking_idstring— The ID of the booking that was rescheduled.starting_timestring, format:date-time— The date and time when the meeting is scheduled to start.statusstring, possible values:"requested", "scheduled", "rescheduled", "completed", "canceled", "no_show"— The status of the booking event. Can be: requested, scheduled, rescheduled, completed, canceled, or no_showsubjectstring— The name of the service or subject as defined in the booking form.tracking_idstring— A unique ID automatically assigned to every booking.virtual_conferencingobject— The object containing information about the video conference in case of virtual meeting.join_urlstring— The URL to join the video conference meeting.
Example:
{
"object": "booking",
"id": "BKNG-J4FR05BKEWEX",
"tracking_id": "D36E0002",
"subject": "Live demo",
"status": "scheduled",
"in_trash": false,
"creation_time": "2020-03-22T09:48:48Z",
"starting_time": "2020-03-22T04:30:00Z",
"customer_timezone": "America/New_York",
"last_updated_time": "2020-03-22T09:48:48Z",
"duration_minutes": 60,
"virtual_conferencing": {
"join_url": "https://meet.google.com/izv-daci-fyi"
},
"location_description": "123 Office Street",
"rescheduled_booking_id": "BKNG-J4FR05BKEWEX",
"cancel_reschedule_information": null,
"attendees": [
"andrea.hartie@example.com"
],
"form_submission": {
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": null,
"mobile_phone": "1-2025550195",
"note": "I want to discuss whether your product can work for our office.",
"company": null,
"guests": [
""
],
"custom_fields": [
{
"name": "Title",
"value": "Executive Assistant"
}
]
},
"booking_page": "BP-X0LCRU5LES",
"master_page": "MP-ZID28U5946",
"event_type": "ET-7NC41GHIDZ",
"external_calendar": {
"type": "google",
"name": "andrea.hartie@example.com",
"id": "andrea.hartie@example.com",
"event_id": "8kvu74dda8kcv0gmmlm3folrhc"
},
"custom_fields": [
{
"name": "discussion_points",
"value": "Need support on new product"
}
]
}
Bot
- Type:
object
idstring— Unique alphanumeric identifier for the object. The prefix of the Bot ID is BOT-.namestring— The name of the bot.objectstring— String representing the object's type. Objects of the same type share the same value. The value here is bot.
Example:
{
"id": "BOT-62774A40FB",
"object": "bot",
"name": "Sales Assistant Bot"
}
Website
- Type:
object
idstring— Unique alphanumeric identifier for the object. The prefix of the Website ID is WEB-.namestring— The name of the website.objectstring— String representing the object's type. Objects of the same type share the same value. The value here is website.urlstring, format:uri— The URL of the website.
Example:
{
"id": "WEB-B1D45D12BB",
"object": "website",
"name": "Company Website",
"url": "https://www.example.com"
}
Audience
- Type:
object
idstring— Unique alphanumeric identifier for the object. The prefix of the Audience ID is AUD-.namestring— The name of the audience.objectstring— String representing the object's type. Objects of the same type share the same value. The value here is audience.
Example:
{
"id": "AUD-123ABC456",
"object": "audience",
"name": "Enterprise Customers"
}
Conversation
- Type:
object
answersarray— Answers to the questions asked during the conversation.Items:
idstring— Unique identifier for the interaction.internal_labelstring | null— Internal label for the question.questionstring— The question asked during the conversation.valuestring— The answer provided by the contact.
audienceobject— The audience associated with this conversation. **Expandable**: Use `expand=audience` to include the full Audience object.bookingsarray— Bookings that are associated to the conversation.Items:
stringbotobject— The bot that facilitated the conversation. **Expandable**: Use `expand=bot` to include the full Bot object.contactobject— The contact / customer involved in this conversation. **Expandable**: Use `expand=contact` to include the full Contact object.creation_timestring, format:date-time— The date and time the conversation was created.idstring— Unique alphanumeric identifier for the object. The prefix of the Conversation ID is CVR-.initiated_bystring, possible values:"bot", "contact"— Either bot (auto reach out) or contact (website visitor clicked on a CTA).last_interacted_timestring, format:date-time— The date and time of the last conversation interaction.last_updated_timestring, format:date-time— The date and time the conversation was last updated.objectstring— String representing the object's type. Objects of the same type share the same value. The value here is conversation.ownerobject— The owner (user object) of the conversation. **Expandable**: Use `expand=owner` to include the full User object.statusstring, possible values:"started", "closed", "abandoned"— The status of the conversation. Can be one of the following: - `started` - The website visitor has responded with a first message and the conversation is active from this point. - `closed` - The conversation has been closed, this can be done by the conversation ending with a last message, or the visitor starting a different conversation. - `abandoned` - If there is no response from the visitor for more than 10 minutes the conversation is ended in an abandoned state.websiteobject— The website this conversation was triggered on. **Expandable**: Use `expand=website` to include the full Website object.
Example:
{
"id": "CVR-022EAEA41C",
"object": "conversation",
"creation_time": "2021-07-13T12:28:24Z",
"initiated_by": "contact",
"last_updated_time": "2021-07-13T12:33:54Z",
"last_interacted_time": "2021-07-13T12:33:54Z",
"contact": "CTC-9QEG09XXYN",
"owner": "USR-GNSBE50D6A",
"status": "closed",
"bot": "BOT-62774A40FB",
"website": "WEB-B1D45D12BB",
"audience": "AUD-123ABC456",
"answers": [
{
"id": "INT-5D22DCBE36",
"internal_label": "",
"question": "Full name",
"value": "Carrie Customer"
}
],
"bookings": [
"BKNG-3KM0HY2BF9SL"
]
}
UtmParams
- Type:
object
Object containing captured values for the 5 standard UTM parameters.
campaignstring— Identifies a specific product promotion or strategic campaigncontentstring— Identifies what specifically was clicked to bring the user to the sitemediumstring— Identifies what type of link was usedsourcestring— Identifies which site sent the traffictermstring— Identifies search terms
Example:
{
"source": "facebook",
"medium": "social",
"campaign": "webinar_signup",
"term": "online+meeting+scheduler",
"content": "logolink"
}
BookingForm
- Type:
object
An object containing information about the guest
array_custom_fieldarray— A placeholder for a custom field that accepts multiple values. Replace `array_custom_field` with the mapped_field_name of your Multi-Select Picklist question. The value must be an array of strings.Items:
stringemailstring— Email of the guestnamestring— Name of the guestphonestring— Phone of the gueststring_custom_fieldstring— A placeholder for a custom field that accepts a single text value. Replace `string_custom_field` with the `mapped_field_name` of your Text or Single-Select Picklist question.
Example:
{
"name": "Carrie Customer",
"email": "carrie.customer@gmail.com",
"phone": "+12025550195",
"string_custom_field": "Executive Assistant",
"array_custom_field": [
"Marketing",
"Sales"
]
}
DeletedObject
- Type:
object
deleted(required)boolean— Whether the object was deletedid(required)string— ID of the deleted object
Example:
{
"id": "OBJ-123ABC",
"deleted": true
}
Tag Descriptions
Authentication
Validate API credentials and manage authentication for OnceHub API access. All API requests require an API key to be passed in the API-Key header.
Bookings
Manage booking appointments and their lifecycle. Bookings represent scheduled meetings between contacts and users. Use these endpoints to list, retrieve, and perform actions on bookings such as canceling, requesting reschedules, or marking as no-show.
Booking Pages
Manage booking pages for your account. Booking pages are public-facing pages where customers can schedule appointments. Each booking page is associated with specific event types and users, allowing for customized scheduling experiences.
Contacts
Manage contact information and relationships. Contacts represent people who have scheduled or may schedule appointments through your booking pages. Use these endpoints to list contacts, retrieve contact details, and manage contact records.
Event Types
Manage event type configurations and settings. Event types define the structure and behavior of different types of appointments, including duration, availability rules, and booking forms. Use these endpoints to list and retrieve event type configurations.
Master Pages
Manage master page configurations and settings. Master pages serve as templates that define the overall structure and branding for booking pages. Use these endpoints to list master pages, retrieve master page details, and create one-time booking links.
Notifications
Notifications are messages sent by OnceHub to contacts and users through various channels such as SMS, email, or push notifications. The notifications API allows you to retrieve and monitor notification delivery status and details.
Teams
Manage teams and team memberships. Teams allow you to organize users into groups for shared calendars, permissions, and resource management. Use these endpoints to retrieve team information and manage team-related operations.
Users
Manage user accounts and their properties. Users represent team members who can schedule appointments, manage calendars, and access the OnceHub platform. Use these endpoints to list users, retrieve user details, manage user accounts, and check scheduling availability.
Webhooks
Manage webhook subscriptions to receive real-time notifications for booking lifecycle events.
Webhook Events
Event payloads sent to your webhook endpoints when booking and conversation lifecycle events occur.
These schemas define the structure of the HTTP POST requests that OnceHub sends to your configured webhook URLs. Each event includes metadata about when it occurred and a data object containing the relevant booking or conversation information.
To start receiving webhook events, create a webhook subscription with your desired event triggers.