Skip to main content

Overview

The reschedule endpoint moves an existing meeting to a new time. Crucially, it records why the meeting was rescheduled so the AI can learn and avoid similar issues in the future.

Authentication

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

Request

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

Path Parameters

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

Request Body

meeting_id
string
required
Same as path parameter (for consistency)
requested_by
string
required
Email of person requesting the reschedule
reason
string
required
Why the meeting is being rescheduled. The AI learns from this!Example reasons:
  • “Too early in the morning”
  • “Too late in the day”
  • “Prefer to avoid Fridays”
  • “Need more preparation time”
  • “Conflicts with another meeting”
preferred_time_range
object
Optional preferred date range for new meeting
{
  "start": "2025-01-25T00:00:00Z",
  "end": "2025-01-27T00:00:00Z"
}

Example Request

{
  "meeting_id": "evt_7d8f9e3a2b1c",
  "requested_by": "alice@example.com",
  "reason": "Too early in the morning - prefer afternoon slots"
}

Response

Success Response (200 OK)

{
  "success": true,
  "new_meeting_id": "new_evt_7d8f9e3a2b1c",
  "new_meeting_time": "2025-01-23T14:00:00Z",
  "reasoning": "System learned from reschedule reason and selected new optimal time",
  "learned_from": "User prefers later times - future bookings will avoid early morning slots"
}

Response Fields

success
boolean
Whether reschedule succeeded
new_meeting_id
string
ID of the newly scheduled meeting
new_meeting_time
string
ISO 8601 timestamp of new meeting
reasoning
string
AI’s explanation for the new time choice
learned_from
string
What the system learned from this reschedule to improve future scheduling

How AI Learning Works

When you reschedule with a reason, the system:

1. Pattern Recognition

Analyzes the reason text for patterns:
  • “too early” → Deprioritizes morning slots for this user
  • “too late” → Deprioritizes evening slots
  • “Friday” → Reduces Friday slot scores
  • “back-to-back” → Increases buffer time importance

2. Score Adjustment

Updates the user’s SmartWeights:
{
  "time_of_day_preference": {
    "morning": 0.6,    // Reduced from reschedule
    "afternoon": 1.2,  // Increased
    "evening": 0.8
  },
  "day_of_week_preference": {
    "friday": 0.7      // Reduced if Friday mentioned
  }
}

3. Future Application

Next time this user needs a meeting:
  • Morning slots get lower scores
  • Afternoon slots get boosted
  • AI naturally gravitates toward preferred times

Example: Learning Loop

// First meeting: AI picked 9am (high score at the time)
const meeting1 = await scheduleAuto({
  attendees: ['alice@example.com', 'bob@example.com'],
  title: 'Sync'
});
// Scheduled for 9:00am

// User reschedules with reason
await reschedule({
  meeting_id: meeting1.meeting_id,
  requested_by: 'alice@example.com',
  reason: 'Too early - I prefer afternoons'
});
// → System learns: Alice prefers afternoons

// Next meeting: AI now prioritizes afternoon
const meeting2 = await scheduleAuto({
  attendees: ['alice@example.com', 'charlie@example.com'],
  title: 'Another Sync'
});
// Scheduled for 2:00pm ✓ (learned preference)

Best Practices

Provide Detailed Reasons

Bad: "Conflict" Good: "Too early in the morning - I'm most focused after 11am" The more detail in the reason, the better the AI can learn.

Consistent Language

If your users reschedule for similar reasons, use consistent phrasing:
  • “Too early in the morning”
  • “Too late in the afternoon”
  • “Prefer to avoid Mondays”
This helps pattern recognition work better.

Track Learning Outcomes

Monitor the learned_from field to see what patterns the AI is picking up. Share this with users so they understand their preferences are being learned.