Skribby
API Reference

Update Bot

PATCH/bot/{id}
https://platform.skribby.io/api/v1/bot/{id}

Update a scheduled meeting bot. All parameters are optional, provide only the fields you want to change; unspecified fields will remain unchanged.

Path Parameters

NameTypeDescription
idrequired
string<uuid>Bot ID

Request Body

optional
application/json
transcription_modelstring

The transcription model to use for transcribing the audio. Refer to your billing page for cost and availability per model.

Allowed values:
nonewhisperassembly-ai-realtimedeepgramdeepgram-v3assembly-aispeechmaticsrev-aielevenlabselevenlabs-v2deepgram-realtimedeepgram-realtime-v3speechmatics-realtimesonioxsoniox-realtimegladiagladia-realtimesalad
transcription_credentialsstring<uuid>

Optional credential identifier issued by the Skribby platform when bringing your own API key for the selected transcription model.

servicestring

The service the bot needs to join: - gmeet - Google Meet - teams - Microsoft Teams - zoom - Zoom

Allowed values:
gmeetteamszoom
meeting_urlstring<uri>

The URL to the meeting itself which the bot will use to join

Example: "https://meet.google.com/osk-sbwe-nff"
bot_namestring

The name of the bot that'll join the meeting

Example: "My Meeting Bot"
bot_avatar_filestring

Binary image file for bot avatar. Ideally should be in 16:9 aspect ratio.

bot_avatar_urlstring<uri>

URL to an image that will be used as the bot's avatar. This will be ignored if botavatarfile is provided.

langstring

Language of the meeting. Optional but can improve transcription accuracy. When using deepgram-realtime, this parameter is highly recommended. Refer to the Bot Language page for more information.

Example: "en"
videoboolean

Whether video should also be recorded during the meeting. Refer to your billing page for cost implications and availability.

webhook_urlstring<uri>

URL to receive live updates on bot status changes, participant changes, etc. Refer to the Webhooks section for details on webhook format and available events.

custom_metadataobject | null

Metadata attached to the bot for tracking requests in your system. Keys and values must be strings. Up to 50 keys, each value up to 500 characters. When provided in updates, this replaces the entire metadata object. Set to null to clear it.

store_recording_for_1_yearboolean

Audio recordings are stored for 1 week by default. This addon extends storage to 1 year. Refer to your billing page for cost implications and availability.

time_limitinteger

Use timelimit on `stopoptions`.

scheduled_start_timeinteger

Unix timestamp for when the bot should join the meeting. If not provided, the bot will attempt to join immediately.

profanity_filterboolean

Whether the transcription should censor profanity. Only available on select models. Refer to your billing page for availability per model.

initial_chat_messagestring

Whenever the bot joins the meeting, it'll send this message to the chat.

stop_optionsobject

Define if and when the bot should stop on certain conditions.

authenticationobject

Authentication credentials for joining private meetings. Refer to the Bot Authentication page for more information.

custom_vocabularystring[]

Provide certain words or phrases to improve transcription. Only supported on certain models, refer to your billing page to view availability per model.

realtime_audioboolean

Enable realtime audio streaming addon via a separate WebSocket connection. Refer to your billing page for cost implications and availability.

Responses

Returns Bot
idstring<uuid>

Unique bot identifier

Example: "3c09b2aa-6708-42c1-8145-aa55ee223613"
statusstring

The current lifecycle status of the bot. Refer to the Bot Lifecycle guide for a detailed explanation of each state. *Note on bot_detected:* This is often non-terminal. Skribby automatically retries up to 3 times. You may see the status toggle between bot_detected and booting during retries.

Allowed values:
scheduledbootingjoiningrecordingprocessingtranscribingleavingfinishednot_admittedbot_detectedauth_requiredinvalid_credentialsfailed
stop_reasonstring | null

The reason why the bot stopped. This field is only populated when the status is finished or not_admitted. Refer to the Bot Lifecycle guide for the machine-to-human mapping of these codes.

Allowed values:
invalid_meeting_urlcall_already_finishedwaiting_room_timeoutrequest_deniedhost_in_another_meetingmanually_stoppedkickedmeeting_endedlast_person_detectedsilence_detection_triggered
servicestring

Service the bot joined

Allowed values:
gmeetteamszoom
scheduled_forstring<date-time> | null

When the bot is scheduled to join (for scheduled bots)

time_limitinteger | null

Use time_limit property in stop_options.

stop_optionsobject

Defined options when the bot should stop on certain conditions.

bot_namestring

Name of the bot in the meeting

bot_avatarstring<uri> | null

URL to bot avatar image

meeting_urlstring<uri>

URL of the meeting

webhook_urlstring<uri> | null

Webhook URL for receiving updates. Refer to the Webhooks section for details on webhook format and available events.

custom_metadataobject

Metadata attached to the bot for tracking requests in your system. Keys and values must be strings. Up to 50 keys, each value up to 500 characters. Clearing metadata returns an empty object in responses.

recording_urlstring<uri> | null

URL to download the recording

recording_available_untilstring<date-time> | null

When the recording will be automatically deleted

websocket_urlstring<uri> | null

WebSocket URL for real-time transcription (realtime models only)

websocket_read_only_urlstring<uri> | null

WebSocket URL for real-time transcription (realtime models only) - Only provides access to events, no actions. Useful if you want to use the websocket directly in your front-end without providing access to the user.

websocket_audio_urlstring<uri> | null

WebSocket URL for receiving realtime audio data from the bot. Only available when using a realtime model or when realtime_audio: true was set when creating the bot. Audio is streamed as 16-bit PCM at 16kHz sample rate.

videoboolean

Whether video is recorded for this meeting

langstring | null

Language specified when creating the bot

detected_langstring | null

Language detected from the conversation (if supported by the model)

transcriptTranscriptSegment[]

Array of transcript segments

transcription_modelstring

Model used for transcription

participantsParticipant[]

List of meeting participants

eventsEvent[]

List of bot lifecycle events

profanity_filterboolean

Whether profanity filter was enabled

custom_vocabularystring[]

Words or phrases provided when creating meeting bot for transcription model

created_atstring<date-time>

When the bot was created

finished_atstring<date-time> | null

When the bot finished

Request

curl -X PATCH \
  "https://platform.skribby.io/api/v1/bot/{id}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "transcription_model": "none",
    "transcription_credentials": "123e4567-e89b-12d3-a456-426614174000",
    "service": "gmeet",
    "meeting_url": "https://meet.google.com/osk-sbwe-nff",
    "bot_name": "My Meeting Bot",
    "bot_avatar_file": "string",
    "bot_avatar_url": "https://example.com",
    "lang": "en"
  }'

Response

200 OKapplication/json
{
  "id": "3c09b2aa-6708-42c1-8145-aa55ee223613",
  "status": "scheduled",
  "stop_reason": "invalid_meeting_url",
  "service": "gmeet",
  "scheduled_for": null,
  "time_limit": null,
  "stop_options": {
    "time_limit": 5,
    "waiting_room_timeout": 1,
    "last_person_detection": 0,
    "silence_detection": 0
  },
  "bot_name": "string"
}