Skip to main content
The X Calls API is in development. It isn’t generally available yet, and endpoints and payloads may still change.
A scheduled call is an X call on the X Calls calendar: a time, a title, the people invited, and optionally a recurrence. Your user is its organizer. Scheduling is limited to the accounts that can schedule calls in the X app; other accounts get a 403. Scheduling creates the call right away, so its join_url can be shared at once, and your agent joins it with call_id when it’s time. Invitees see the call on their X calendar and get an email unless notify_invitees is false.
A scheduled call’s id is not its call_id. Change, cancel and answer a scheduled call with its id; join the call with its call_id.

List scheduled calls

GET /2/calls/scheduled returns the X calls on your user’s calendar, earliest first: events on their X Calls calendar, and events on the Microsoft Outlook calendars they linked to X whose conference is an X call. A meeting assistant uses it to know which calls to join, and when. Calls still running at start_time are included.
Each item is one occurrence. calendar says where it lives:
  • x: an X Calls event, with the full scheduled call object. Change it with its id.
  • outlook: an event on a Microsoft Outlook calendar your user linked to X. It has no id and is changed in Outlook.
A meeting on both X Calls and a linked calendar is listed once, as x. A linked calendar that can’t be read right now (Outlook is down, or its events are still loading) leaves out only its own calls; ask again shortly to see them. With no calls in the window, data is left out and result_count is 0.

Schedule a call

POST /2/calls/scheduled
201 Created:

Get a scheduled call

GET /2/calls/scheduled/:id returns a scheduled call your user organizes or is invited to, at its occurrence running now or its next one within a year. An unknown or past call, or one your user isn’t part of, is a 200 with the problem under errors, as with other lookups. Changes can take a few seconds to show here.

Change a scheduled call

PUT /2/calls/scheduled/:id moves, renames or re-invites a call your user organizes. Send only what changes: start_time, duration_minutes, title, description, invitee_ids (the whole new list; it can’t be emptied), recurrence and time_zone, plus notify_invitees. The response is {"data": {"updated": true}}; read the call back with GET.

Cancel a scheduled call

DELETE /2/calls/scheduled/:id cancels a call your user organizes and takes it off invitees’ calendars. Query parameters: scope, occurrence_start_time (see Recurring calls) and notify_invitees. The response is {"data": {"cancelled": true}}, also when it was already cancelled.

Answer an invitation

POST /2/calls/scheduled/:id/rsvp
response is accepted, declined or tentative. The response echoes it: {"data": {"response": "accepted"}}.

Recurring calls

Change, cancel and rsvp apply to every occurrence of a recurring call unless you pick some with scope (a body field for PUT and rsvp, a query parameter for DELETE): occurrence_start_time is the occurrence’s original start, which GET and the list report as occurrence_start_time for recurring calls (start_time moves when an occurrence is moved). For example, to move only next Monday’s sync:
A one-off call has a single occurrence, so every scope means the whole call. A recurrence can be changed but not removed; cancel the occurrences you don’t want with this_and_following.

The scheduled call object