Decline a call
const url = 'https://collab.work.optidata.cloud/api/rooms/calls/a3050cd3-5921-4153-b90a-owt42-e94de63c7b15/decline';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"caller_uuid":"2d9e8f70-1a3b-4c5d-8e9f-a0b1c2d3e4f5","callee_uuids":["5b1c7e22-9d40-4f6a-b3c8-1e2f3a4b5c6d"],"is_invite":false}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://collab.work.optidata.cloud/api/rooms/calls/a3050cd3-5921-4153-b90a-owt42-e94de63c7b15/decline \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "caller_uuid": "2d9e8f70-1a3b-4c5d-8e9f-a0b1c2d3e4f5", "callee_uuids": [ "5b1c7e22-9d40-4f6a-b3c8-1e2f3a4b5c6d" ], "is_invite": false }'Reports that you declined a call you were rung into. The caller and the callees you list are told, as long as they are parties of the call.
You must be a party of the call. decliner_uuid is optional and, when
sent, must be your own user uuid. Up to 100 users in callee_uuids.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”The room’s hash (from its link) or its permanent-link identifier custom_hash.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Optional. When sent, your own user uuid.
Uuid of the user who started the call.
Uuids of the users the call was ringing.
true when you were rung into a call already in progress (see inviteToCall).
Examples
{ "caller_uuid": "2d9e8f70-1a3b-4c5d-8e9f-a0b1c2d3e4f5", "callee_uuids": [ "5b1c7e22-9d40-4f6a-b3c8-1e2f3a4b5c6d" ], "is_invite": false}Responses
Section titled “ Responses ”Done. The response carries the call’s room.
object
object
Internal id. Address the room by hash or custom_hash, never by this id.
Your company’s id.
The room’s identifier and link.
The permanent-link identifier, when the room has one.
The user who created the room.
on_site for rooms holding an uploaded in-person meeting; null or virtual for video meetings.
Whether AI meeting notes are on for this room.
Whether participants are prevented from turning AI notes off.
The room’s link, to share with participants.
object
Maximum number of people in the room at once.
Whether people without an Optiwork account may join.
Who may enter the room and whether they must ask first:
automatic— anyone with the link enters straight away; guests without an account appear as “Guest”.no_request— anyone with the link enters without asking; guests type their name first.unauthenticated_must_request— signed-in Optiwork users enter; guests type their name and ask to join.authenticated_only_no_request— only signed-in Optiwork users, without asking; guests are turned away.authenticated_only_must_request— only signed-in Optiwork users, and they ask to join; guests are turned away.any_must_request— everyone asks to join; guests type their name first.
Present on getRoom and listRooms.
One person’s presence in a room.
object
null for guests without an Optiwork account.
admin for the room owner, moderator for co-hosts, guest for everyone else.
Details a guest gave when joining.
object
Where the guest gets the meeting summary. Shown only on your own participation, or to the room’s owner, its moderators and company super-administrators.
State of the person’s request to join, in rooms where joining must be requested.
object
The user’s display preferences (language, theme, time zone).
object
The person who made the recording.
creating,started— being recorded.stopped_locally,pending,processing— recorded; being saved and processed.stopped— done; the transcript follows when ready.failed— interrupted; seestartRecordingRecovery.
manual when a participant pressed record; automatic for the audio
recorded to produce AI meeting notes; audio_only_sibling for the
audio track kept next to a manual recording.
Whether a copy was saved to Optiwork Drive.
The public link, when the recording has one.
Address of the recording page in Optiwork.
Technical details of the recording. Its content may change; do not rely on it.
object
The user’s display preferences (language, theme, time zone).
Who was in the meeting while it was recorded.
One person’s presence in a room.
object
null for guests without an Optiwork account.
admin for the room owner, moderator for co-hosts, guest for everyone else.
Details a guest gave when joining.
object
Where the guest gets the meeting summary. Shown only on your own participation, or to the room’s owner, its moderators and company super-administrators.
State of the person’s request to join, in rooms where joining must be requested.
object
The user’s display preferences (language, theme, time zone).
People and groups the recording is shared with.
object
The public-link setting, when the recording has a public link.
object
AI summary of the meeting.
AI key points, as a JSON-encoded string: an array of
{ "title", "items": [string] } sections.
The full transcript as produced by the speech-to-text engine (utterances, words, speakers, timings). Its exact shape depends on the engine and may change.
Examples
{ "room": { "id": 12228, "room_settings_id": 12222, "cuid": "7f3c2a10-5b8e-4d21-9c6a-0e4f1b2d3c4a", "name": "Quick question", "description": null, "icon_url": "https://collab.work.optidata.cloud/images/pages/bs-icon-camera-video.svg", "created_at": "2026-10-19T14:41:26.000000Z", "updated_at": "2026-10-19T14:41:26.000000Z", "deleted_at": null, "hash": "a3050d06-90a9-497b-a46d-owt42-2da76c4d3222", "is_recording_in_progress": false, "chat_uuid": null, "owner_uuid": "2d9e8f70-1a3b-4c5d-8e9f-a0b1c2d3e4f5", "custom_hash": null, "is_hidden": false, "conference_type": null, "is_ai_notes_enabled": false, "is_ai_notes_locked": false, "usage_url": "https://collab.work.optidata.cloud/rooms/a3050d06-90a9-497b-a46d-owt42-2da76c4d3222" }}No authentication key was sent, or it is malformed.
Authentication failures use an error key rather than message.
object
Examples
No bearer token sent
{ "error": "JWT passport exception: Missing bearer token in request"}You are not a party of the call (the room’s owner, someone admitted to the room or holding a moderator or admin role in it, or someone rung into it within the last hour), or a field naming the actor is not your own uuid.
A refused or not-found request.
object
Examples
Not a party of the call
{ "message": "You are not a participant of this call."}Actor uuid is someone else's
{ "message": "You can only act on a call on your own behalf."}No room has this hash or permanent link.
A refused or not-found request.
object
Examples
{ "message": ""}The authentication key is expired or not recognised. Get a fresh one and retry.
Authentication failures use an error key rather than message.
object
Examples
{ "error": "JWT passport expired: Passport expired"}The body failed validation.
object
The first validation message.
Validation messages keyed by field name.
object
Examplegenerated
{ "message": "example", "errors": { "additionalProperty": [ "example" ] }}