Skip to main content

Overview

Updates an existing meeting with new times, attendees, or other details. This endpoint modifies the Google Calendar event for all attendees and sends a meeting.updated webhook.

Authentication

Requires Platform API Key in the Authorization header or X-API-Key header.

Request

PUT https://api.syncline.run/v1/meetings/{meeting_id}

Path Parameters

meeting_id
string
required
The meeting ID returned from the original schedule call

Request Body

start_time
string
required
New meeting start time in RFC3339 format (e.g., 2025-11-26T15:00:00-08:00)
end_time
string
required
New meeting end time in RFC3339 format (e.g., 2025-11-26T15:30:00-08:00)
attendees
array
Updated list of attendee emails. If omitted, keeps existing attendees.Example: ["alice@example.com", "bob@example.com"]
reason
string
Reason for the update (included in webhook). Defaults to "meeting_rescheduled".Examples:
  • “Rescheduled due to conflict”
  • “Extended meeting duration”
  • “Added new participant”

Example Request

{
  "start_time": "2025-11-26T15:00:00-08:00",
  "end_time": "2025-11-26T15:30:00-08:00",
  "attendees": ["alice@example.com", "bob@example.com"],
  "reason": "Rescheduled due to conflict"
}

Response

Success Response (200 OK)

{
  "success": true,
  "meeting_id": "meet_abc123",
  "start_time": "2025-11-26T15:00:00-08:00",
  "end_time": "2025-11-26T15:30:00-08:00",
  "attendees": ["alice@example.com", "bob@example.com"],
  "status": "updated"
}

Response Fields

success
boolean
Whether the update succeeded
meeting_id
string
ID of the updated meeting (same as request)
start_time
string
Confirmed new start time in RFC3339 format
end_time
string
Confirmed new end time in RFC3339 format
attendees
array
List of attendee emails for the updated meeting
status
string
Meeting status (always “updated” on success)

Example

const response = await fetch('https://api.syncline.run/v1/meetings/meet_abc123', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    start_time: '2025-11-26T15:00:00-08:00',
    end_time: '2025-11-26T15:30:00-08:00',
    attendees: ['alice@example.com', 'bob@example.com'],
    reason: 'Rescheduled due to conflict'
  })
});

const result = await response.json();
console.log(`Meeting updated: ${result.meeting_id}`);

Webhook Notification

When a meeting is updated, Syncline sends a meeting.updated webhook:
{
  "id": "wh_mno345",
  "event_type": "meeting.updated",
  "timestamp": "2025-11-22T11:00:00Z",
  "platform_id": "plat_xyz789",
  "api_version": "v1",
  "data": {
    "meeting_id": "meet_abc123",
    "attendees": ["alice@example.com", "bob@example.com"],
    "updated_at": "2025-11-22T11:00:00Z",
    "changes": {
      "updated_by": "plat_xyz789",
      "reason": "meeting_rescheduled",
      "old_start_time": "2025-11-25T14:00:00-08:00",
      "new_start_time": "2025-11-26T15:00:00-08:00",
      "old_end_time": "2025-11-25T14:30:00-08:00",
      "new_end_time": "2025-11-26T15:30:00-08:00"
    }
  }
}
Learn more about webhooks

Notes

  • Calendar invites are automatically updated for all attendees
  • Google Calendar sends update notifications to attendees
  • Both old and new times are included in the webhook for tracking changes
  • Only the platform that created the meeting can update it

Error Responses

400 Bad Request
error
Invalid request body or time format
401 Unauthorized
error
Invalid or missing API key
404 Not Found
error
Meeting not found or already cancelled
500 Internal Server Error
error
Failed to update Google Calendar event