Select Slot ALPHA
Read as Markdown Required plan: SchedulerDescription #
Books a time for a Scheduling Request
by posting the start of the chosen slot.
This is the second of the two Time Selection integration operations. Read that page first for the shared response envelope, result vocabulary, authentication, and error shapes.
Only a start is required: the Scheduling Request already fixes the meeting
length, so the end is derived from the request’s duration. The start must
match the start of a slot returned by Available Slots.
Selecting a time here runs the exact same booking as the human booking page: the same calendar writes, notifications, and workflow triggers.
On success the response is 202 Accepted, not 200: the selection is taken but
the calendar write finalizes moments later. The scheduling_request rides along
and settles from pending to complete shortly after; query it again whenever
you like to see the confirmed event.
You do not build this URL. It is returned as the opaque
simple_select_slot_url by Available Slots,
alongside the times. This operation requires the organizational_unit_scheduler
scope.
Example Request #
Send the request to the simple_select_slot_url returned by Available Slots,
exactly as given.
POST {SIMPLE_SELECT_SLOT_URL} HTTP/1.1
Authorization: Bearer {API_KEY}
Content-Type: application/json; charset=utf-8
{
"start": "2026-09-17T09:30:00Z"
}Example Response #
HTTP/1.1 202 Accepted
Content-Type: application/json; charset=utf-8
{
"integration_operation_result": {
"type": "select_slot",
"result": "accepted",
"integration_operations": {},
"selected_slot": {
"start": "2026-09-17T09:30:00Z",
"end": "2026-09-17T10:00:00Z"
}
},
"scheduling_request": {
"scheduling_request_id": "srq_7b9784257940f9bbbfcad097",
"slot_selection": "pending",
"primary_select_url": "https://app.cronofy.com/rts/wZ9tLbN4sWjH6yD1cF0a",
"dashboard_url": "https://app.cronofy.com/scheduler/requests/7b9784257940f9bbbfcad097",
"summary": "Intro call with Riya Patel"
}
}Request parameters #
start required #
A Time in UTC (for example
2026-09-17T09:30:00Z) of the chosen slot. It must match the start of a slot
returned by Available Slots. The end is not
accepted; it is derived from the request’s fixed duration.
A missing or unparseable start returns invalid (422); see
Error responses.
API_KEY required #
An access token for the Organizational Unit with the
organizational_unit_scheduler scope, or the client_secret of the linked
Internal Application. See Authentication.
Response parameters #
integration_operation_result #
An Object describing the outcome of the
operation. See The response envelope.
integration_operation_result.type #
A String of select_slot for this
operation.
integration_operation_result.result #
A String outcome, one of:
accepted: the selection was taken; the calendar write finalizes moments later (202).conflict: a concurrent booking briefly held the slot; retry the same payload (409).not_possible: the request’s state means this cannot be done (409); seeresult_detail.invalid: the input was wrong, such as a missing or malformedstart(422); see the top-levelerrors.
integration_operation_result.result_detail #
Present only when result is not_possible. A String
explaining why, one of slot_unavailable, superseded, no_longer_possible,
requires_more_input, or configuration_error. See
result_detail.
integration_operation_result.integration_operations #
An Object of the actions available next.
Empty on an accepted selection (nothing is left to do). On a slot_unavailable
result it carries a simple_select_slot_url so you can re-pick without another
call.
integration_operation_result.selected_slot #
Present when result is accepted. An Object
with the start and end of the booked slot.
integration_operation_result.selected_slot.start #
A Time representing the UTC start of the
booked slot.
integration_operation_result.selected_slot.end #
A Time representing the UTC end of the
booked slot, derived from the request’s fixed duration.
scheduling_request #
The full Scheduling Request, in the same shape as the Query response. It travels alongside every envelope response so you can render the current state without a second call.
Error responses #
Beyond the shared errors for authentication, authorization, an unknown token, and rate limiting, this operation can return the following.
Chosen time already gone
not_possible with a result_detail of slot_unavailable (409): the request
is still open, but that time has been taken. The response hands back a fresh
available_slots / suggested_slots list and the simple_select_slot_url, so
you can re-pick without another call.
{
"integration_operation_result": {
"type": "select_slot",
"result": "not_possible",
"result_detail": "slot_unavailable",
"integration_operations": {
"simple_select_slot_url": "{SIMPLE_SELECT_SLOT_URL}"
},
"available_slots": [
{ "start": "2026-09-17T10:00:00Z", "end": "2026-09-17T10:30:00Z" },
{ "start": "2026-09-17T14:00:00Z", "end": "2026-09-17T14:30:00Z" }
],
"suggested_slots": [
{ "start": "2026-09-17T10:00:00Z", "end": "2026-09-17T10:30:00Z" }
]
},
"scheduling_request": { ... }
}Concurrent booking held the slot
conflict (409): another booking briefly held the target calendars. Nothing is
wrong; retry the same payload in a moment.
{
"integration_operation_result": {
"type": "select_slot",
"result": "conflict",
"integration_operations": {}
},
"scheduling_request": { ... }
}Missing or malformed start
invalid (422): the start was absent or unparseable. A top-level errors
map (the public API’s shape) names the offending field:
errors.required when missing, errors.not_recognized when unparseable.
{
"integration_operation_result": {
"type": "select_slot",
"result": "invalid",
"integration_operations": {}
},
"errors": {
"start": [
{ "key": "errors.required", "description": "required" }
]
},
"scheduling_request": { ... }
}Request needs more than a time, or is no longer open
not_possible with a result_detail of requires_more_input, superseded,
no_longer_possible, or configuration_error (409), depending on the
request’s state. See result_detail
for what each means and how to react.
{
"integration_operation_result": {
"type": "select_slot",
"result": "not_possible",
"result_detail": "no_longer_possible",
"integration_operations": {}
},
"scheduling_request": { ... }
}