Scheduling
Instead of launching a bot immediately, you can schedule one for a future meeting. This is useful for calendar-integrated workflows where you want the bot to join automatically at the meeting start time.
How scheduling works
When you create a scheduled bot, Serveka stores the configuration and automatically launches the bot at the calculated join time:
- Join time =
scheduled_start_at+join_offset_seconds - The default
join_offset_secondsis-60, meaning the bot joins 60 seconds before the meeting starts to be ready when participants arrive.
Creating a scheduled bot
Use POST /api/v1/bots/schedule with the meeting details and start time:
curl -X POST https://api.serveka.com/api/v1/bots/schedule \
-H "X-API-Key: srvk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"scheduled_start_at": "2026-05-15T14:00:00Z",
"title": "Weekly Team Standup",
"join_offset_seconds": -120,
"bot_name": "Notetaker",
"language": "en",
"recording_enabled": true,
"transcribe_enabled": true
}'Required fields:
meeting_url: The full meeting URL (platform auto-detected)scheduled_start_at: ISO 8601 UTC datetime for when the meeting starts (must be in the future)
Commonly used options:
title: Display title for this scheduled slotjoin_offset_seconds: Seconds relative toscheduled_start_atwhen the bot joins (negative = join early, default: -60)bot_name: Display name for the bot in the meetinglanguage: Transcription language code (e.g.,en,es)recording_enabled: Whether to record the meetingtranscribe_enabled: Whether to transcribe audiocapture_modes: What streams to capture (default:["audio"])recording_format: Output format for recordings (default:mp4)
Response 201:
{
"id": 7,
"workspace_id": "aaaaaaaa-0000-0000-0000-000000000001",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"platform": "google_meet",
"title": "Weekly Team Standup",
"scheduled_start_at": "2026-05-15T14:00:00Z",
"join_offset_seconds": -120,
"status": "scheduled",
"origin": "api",
"settings": { "bot_name": "Notetaker", "language": "en", "recording_enabled": true },
"error_message": null,
"meeting_id": null,
"created_at": "2026-05-12T10:00:00Z",
"updated_at": "2026-05-12T10:00:00Z"
}Important: Save the scheduled bot's integer id (from the id field) — this is used to manage the scheduled bot.
Scheduled bot statuses
Scheduled bots go through these statuses:
scheduled- Created and waiting for launch timelaunched- Bot has been dispatched to the meetingcancelled- You cancelled the scheduled botfailed- An error occurred preventing launch
Listing scheduled bots
Get all scheduled bots in your workspace:
curl https://api.serveka.com/api/v1/bots/schedule \
-H "X-API-Key: srvk_your_key_here"Filter by status:
curl "https://api.serveka.com/api/v1/bots/schedule?status=scheduled" \
-H "X-API-Key: srvk_your_key_here"Getting a specific scheduled bot
Retrieve details for one scheduled bot by its integer ID:
curl https://api.serveka.com/api/v1/bots/schedule/7 \
-H "X-API-Key: srvk_your_key_here"Updating a scheduled bot
Change the time or settings for a bot that hasn't launched yet (status must be scheduled):
curl -X PATCH https://api.serveka.com/api/v1/bots/schedule/7 \
-H "X-API-Key: srvk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"scheduled_start_at": "2026-05-15T15:00:00Z",
"recording_enabled": false
}'All fields are optional — only provided fields are updated.
Cancelling a scheduled bot
Prevent a scheduled bot from launching:
curl -X DELETE https://api.serveka.com/api/v1/bots/schedule/7 \
-H "X-API-Key: srvk_your_key_here"Response 200:
{ "message": "Scheduled bot cancelled." }You can only cancel bots with status scheduled. Once a bot is launched, you must stop it using the regular bot stop endpoint (DELETE /api/v1/bots/{bot_id}).
What happens at launch time
At the calculated join time (scheduled_start_at + join_offset_seconds):
- Serveka automatically creates a bot with the provided settings
- The scheduled bot's status changes from
scheduledtolaunched - The
meeting_idfield is populated with the internal meeting UUID - You can now manage the bot like any other bot using its
bot_idUUID
The scheduled bot record remains in the system for historical reference even after launching.