Overview
The /schedule endpoint creates a meeting at a specific time you’ve already selected. Use this when you’ve used /availability to find slots and want the user to pick, or when you have a predetermined time.
For AI-powered automatic scheduling, use /schedule/auto instead.
Authentication
Requires Platform API Key in the X-API-Key header.
Request
POST https://api.syncline.run/v1/schedule
Request Body
Array of exactly 2 email addresses
ISO 8601 timestamp for meeting start (e.g., “2025-01-22T14:00:00Z”)
Meeting duration in minutes
Meeting description/agenda
Defaults to “Google Meet” for video conference
Example Request
{
"attendees": ["alice@example.com", "bob@example.com"],
"start_time": "2025-01-22T14:00:00Z",
"duration_minutes": 30,
"title": "Product Demo",
"description": "Walkthrough of new features",
"location": "Google Meet"
}
Response
Success Response (200 OK)
{
"success": true,
"meeting_id": "evt_7d8f9e3a2b1c",
"start_time": "2025-01-22T14:00:00Z",
"end_time": "2025-01-22T14:30:00Z",
"title": "Product Demo",
"attendees": ["alice@example.com", "bob@example.com"],
"location": "Google Meet",
"meet_link": "https://meet.google.com/abc-defg-hij"
}
Error Responses
Same error responses as /schedule/auto.
Usage Limits
Each successful schedule counts toward your monthly meeting limit based on plan:
- Free: 100 meetings/month
- Starter: 1,000 meetings/month
- Growth: 5,000 meetings/month
- Enterprise: Unlimited
Example
// First, find availability
const availResponse = await fetch('https://api.syncline.run/v1/availability', {
method: 'POST',
headers: {
'X-API-Key': 'sk_live_...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
attendees: ['alice@example.com', 'bob@example.com'],
duration_minutes: 30
})
});
const { slots } = await availResponse.json();
// User picks slot[2]
const chosenSlot = slots[2];
// Schedule at that time
const scheduleResponse = await fetch('https://api.syncline.run/v1/schedule', {
method: 'POST',
headers: {
'X-API-Key': 'sk_live_...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
attendees: ['alice@example.com', 'bob@example.com'],
start_time: chosenSlot.start_time,
duration_minutes: 30,
title: 'Product Demo'
})
});
const meeting = await scheduleResponse.json();