AppointmentMeeting

An appointment meeting represents the conferencing details for an appointment. Meetings are created asynchronously after an appointment is scheduled, so the `status` field reflects where the meeting is in its lifecycle. Meeting details such as `join_url` are populated only once the status is `created`. The `host_url` field is a proxy URL on the account's booking domain (the canonical SavvyCal host, or an active custom domain when one is configured) that the meeting host follows to start the meeting. **Treat this URL as a credential — anyone with it can start the meeting as the host.** It is valid through the appointment's end time + a 24h grace window, after which it returns 410 Gone. SavvyCal refreshes the underlying conferencing-provider URL transparently behind the proxy, so the proxy URL generally remains stable across `appointment.meeting.updated` events. It may change if SavvyCal rotates the underlying token (e.g., for security reasons) or when the meeting is replaced — a brand-new meeting with a new `id`, which happens when a reschedule routes the appointment to a different host on the account. Listen for `appointment.meeting.updated` and `appointment.meeting.replaced` to keep stored copies fresh. `host_url` is null when the meeting is not yet `created` or when the conferencing provider has no distinct host start URL (e.g., Google Meet uses a single shared URL).

An appointment meeting represents the conferencing details for an appointment. Meetings are created asynchronously after an appointment is scheduled, so the status field reflects where the meeting is in its lifecycle. Meeting details such as join_url are populated only once the status is created.

The host_url field is a proxy URL on the account's booking domain (the canonical SavvyCal host, or an active custom domain when one is configured) that the meeting host follows to start the meeting. Treat this URL as a credential — anyone with it can start the meeting as the host. It is valid through the appointment's end time + a 24h grace window, after which it returns 410 Gone.

SavvyCal refreshes the underlying conferencing-provider URL transparently behind the proxy, so the proxy URL generally remains stable across appointment.meeting.updated events. It may change if SavvyCal rotates the underlying token (e.g., for security reasons) or when the meeting is replaced — a brand-new meeting with a new id, which happens when a reschedule routes the appointment to a different host on the account. Listen for appointment.meeting.updated and appointment.meeting.replaced to keep stored copies fresh.

host_url is null when the meeting is not yet created or when the conferencing provider has no distinct host start URL (e.g., Google Meet uses a single shared URL).

Example

{  "conferencing_provider": "zoom_admin",  "error_message": null,  "external_meeting_id": "82912345678",  "host_url": "https://book.acme.com/p/appointments/appt_a1b2c3d4e5f6/host?token=An5thqO6Li9Dy9WXe3IsJQYDEXGjS70GjQIdNntKZgw",  "id": "amtg_a1b2c3d4e5f6",  "join_url": "https://zoom.us/j/82912345678",  "object": "appointment_meeting",  "password": "abc123",  "status": "created"}