/v1/webhooks

Create a webhook.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Creates a webhook that sends a JSON POST to url each time event_type happens. The webhook is turned on unless you pass enabled: false.

The request body should look like the following:

{
  event_type: "booking_request_made",
  url: "https://example.com/apptoto/bookings",
  enabled: true
}

event_type must be one of:

event_typeFires when
event_createdAn event is created
event_updatedAn event is updated
event_deletedAn event is deleted
participant_reminder_state_changedA participant's reminder state changes
participant_confirmedA participant confirms
participant_not_comingA participant says they are not coming
participant_needs_rescheduleA participant asks to reschedule
participant_booking_state_changedA participant's booking state changes
participant_invite_sentA booking message is sent to a participant
participant_acceptedA participant accepts a booking
participant_declinedA participant declines a booking
participant_replied_to_messageA participant replies to a message
participant_check_in_state_changedA participant's check-in state changes
booking_request_madeA booking request is completed
booking_request_rescheduledA booking request is rescheduled
booking_page_viewedA booking page is viewed
message_sentA message is sent
message_receivedA message is received
message_failedA message fails to send or deliver
phone_added_to_stoplistA phone number is added to the stoplist
email_added_to_stoplistAn email address is added to the stoplist
payment_processedA payment is processed
payment_refundedA payment is refunded

url must be a full http:// or https:// address, up to 2048 characters. An account can have at most 100 webhooks.

The created webhook is returned in the same shape as /v1/webhooks:

{
  webhook: {
    id: 4513,
    event_type: "booking_request_made",
    url: "https://example.com/apptoto/bookings",
    enabled: true,
    created_at: "2026-10-12T15:10:42.000-07:00",
    updated_at: "2026-10-12T15:10:42.000-07:00"
  }
}

A missing or invalid event_type or url returns 400 with a message saying what was wrong:

{
  error: "url must be a full http:// or https:// address",
  status: 400
}

See Webhook Payloads for what Apptoto sends to the URL.

OAuth scope

Calls authenticated with an OAuth 2.0 bearer token must include the webhooks:write scope. A token without it receives a 403 insufficient_scope response. HTTP Basic auth is not scope-gated.

Body Params
string
enum
required

What has to happen in Apptoto for the webhook to fire. See Webhook Payloads for what each event sends.

string
required

The full http:// or https:// URL Apptoto should POST to. Up to 2048 characters.

boolean
Defaults to true

Whether the webhook fires. A webhook that is turned off stays saved but sends nothing.

Language
Credentials
:
LoadingLoading…
Response
Click Try It! to start a request and see the response here!