Check fixed booking availability and create, list, reschedule, complete, or cancel 30-minute appointments through the scheduling API.
Convor's scheduling API is a booking API for 30-minute appointments. It is separate from Settings → Scheduling, which configures SLA business hours and links to operator/chatbot schedule controls, and separate from each operator's Weekly Availability used by routing.
The appointment booking window is currently fixed server-side: slots start every 30 minutes from 09:00 through 16:30 in the requested timezone.
A booking stores the visitor name and email, local date and time slot, timezone, an optional conversation link for organization API-key callers, and its lifecycle status.
Supported statuses are:
confirmedcancelledcompletedno_showA confirmed booking reserves one absolute time instant for the organization. Conflicting confirmed bookings return 409.
GET /api/scheduling/availability?date=2030-06-15&timezone=Europe%2FWarsawdate must use YYYY-MM-DD. timezone accepts an IANA timezone such as Europe/Warsaw or a fixed UTC offset and defaults to UTC.
The response returns future, unclaimed 30-minute start times:
{
"date": "2030-06-15",
"timezone": "Europe/Warsaw",
"data": ["09:00", "09:30", "10:00"]
}POST /api/scheduling/book{
"visitorEmail": "[email protected]",
"visitorName": "Ada Lovelace",
"date": "2030-06-15",
"timeSlot": "10:00",
"timezone": "Europe/Warsaw",
"conversationId": "11111111-1111-4111-8111-111111111111"
}The slot must be in the future, use a 30-minute increment, and start between 09:00 and 16:30.
Organization API keys may omit conversationId. Visitor bearer callers must provide a conversation they own. Booking creation is not idempotent; after an ambiguous timeout, check availability or list the conversation's bookings before retrying.
List all lifecycle states linked to one conversation:
GET /api/scheduling/bookings?conversationId=11111111-1111-4111-8111-111111111111The response is not paginated. Visitor bearer callers can read only bookings linked to their own conversation.
Operators can also list confirmed bookings for a day:
GET /api/scheduling/bookings/daily?date=2030-06-15The daily endpoint is not available to visitor bearer tokens.
POST /api/scheduling/bookings/:id/reschedule{
"date": "2030-06-16",
"timeSlot": "11:30",
"timezone": "Europe/Warsaw"
}Rescheduling keeps the booking ID and conversation link and records the previous date/slot. The new slot must satisfy the same time and conflict rules as booking creation.
Operators can move a confirmed booking to a terminal outcome:
POST /api/scheduling/bookings/:id/outcome{
"status": "completed"
}The accepted outcome values are completed and no_show.
DELETE /api/scheduling/bookings/:idCancelling a confirmed booking changes its status to cancelled, releases the slot, and clears its reminder claim. An already-cancelled booking returns 422; completed or no-show bookings return 409.
The booking API's 09:00–16:30 start-time window is currently fixed for all organizations. Workspace business hours in Settings → Scheduling do not change appointment availability.
That distinction matters because Convor has three other schedule concepts:
| Method | Endpoint | Scope |
|---|---|---|
GET | /api/scheduling/availability | scheduling:read |
POST | /api/scheduling/book | scheduling:write |
GET | /api/scheduling/bookings | scheduling:read |
GET | /api/scheduling/bookings/daily | scheduling:read |
POST | /api/scheduling/bookings/:id/reschedule | scheduling:write |
POST | /api/scheduling/bookings/:id/outcome | scheduling:write |
DELETE | /api/scheduling/bookings/:id | scheduling:write |
See the Scheduling API reference for request and response schemas.
Last updated: Aug 10, 2026
Was this page helpful?
Automation Rules
Automate conversation workflows with rules that assign operators, apply tags, or close conversations based on conditions.
Widget Configuration
Configure widget appearance, localized content, pre-chat fields, installation, identity verification, and site domains from their current dashboard locations.