Skip to main content

Endpoint

POST https://api.apifycloud.io/api/v1/video/{appId}/scheduled-calls

Authentication

Bearer token required. Scope: scheduling:write

Path parameters

  • appId (UUID, required)

Request body

FieldTypeRequiredDescription
guestNamestringyesGuest display name.
scheduledAtUtcstringyesISO-8601 UTC timestamp for the start of the call.
appTimezonestringyesIANA timezone used for display (e.g. America/Bogota).
guestPhonestringconditionalRequired if guestEmail is not provided.
guestEmailstringconditionalRequired if guestPhone is not provided.
assignedAgentIdstringoptionalUser id of the agent to assign the call to.
assignmentMethodstringoptionalmanual, self_selected, round_robin, pool. Defaults to manual.
guestTimezonestringoptionalIANA timezone of the guest.
guestIntakeNotesstringoptionalFree-form notes attached to the booking.
durationMinutesnumberoptionalDefault 30.
bufferBeforeMinutesnumberoptionalDefault 0.
bufferAfterMinutesnumberoptionalDefault 0.
requireConfirmationbooleanoptionalForces the call into pending_confirmation until the guest confirms.

Notes

  • bookingSource is always stamped as api server-side.
  • Recurrence is not exposed in v1. Create each instance individually.
  • When assignedAgentId is provided the endpoint takes an advisory lock on (agent, minute) so concurrent POSTs cannot double-book.
  • Customer rate limits configured on the app preset apply. Hitting the limit returns 429 with nextAllowedAt in the error details.

Response

Returns 201 Created.

Errors

  • 400 invalid_request validation failed (past date, missing required fields)
  • 403 forbidden scheduling not enabled on the app’s active preset, or missing scope
  • 404 app_not_found
  • 409 conflict slot overlaps an existing call, blocked exception, or DND window
  • 429 rate_limit_exceeded either client rate limit or per-customer booking limit
  • 500 server_error

Example