> ## Documentation Index
> Fetch the complete documentation index at: https://docs.syncline.run/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /v1/meetings/{id}/reschedule

> Reschedule an existing meeting with AI learning

## 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

```bash theme={null}
POST https://api.syncline.run/v1/meetings/{meeting_id}/reschedule
```

### Path Parameters

<ParamField path="meeting_id" type="string" required>
  The meeting ID returned from the original schedule call
</ParamField>

### Request Body

<ParamField body="meeting_id" type="string" required>
  Same as path parameter (for consistency)
</ParamField>

<ParamField body="requested_by" type="string" required>
  Email of person requesting the reschedule
</ParamField>

<ParamField body="reason" type="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"
</ParamField>

<ParamField body="preferred_time_range" type="object">
  Optional preferred date range for new meeting

  ```json theme={null}
  {
    "start": "2025-01-25T00:00:00Z",
    "end": "2025-01-27T00:00:00Z"
  }
  ```
</ParamField>

### Example Request

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

## Response

### Success Response (200 OK)

```json theme={null}
{
  "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

<ResponseField name="success" type="boolean">
  Whether reschedule succeeded
</ResponseField>

<ResponseField name="new_meeting_id" type="string">
  ID of the newly scheduled meeting
</ResponseField>

<ResponseField name="new_meeting_time" type="string">
  ISO 8601 timestamp of new meeting
</ResponseField>

<ResponseField name="reasoning" type="string">
  AI's explanation for the new time choice
</ResponseField>

<ResponseField name="learned_from" type="string">
  What the system learned from this reschedule to improve future scheduling
</ResponseField>

## 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:

```javascript theme={null}
{
  "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

```javascript theme={null}
// 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.

## Related Endpoints

<CardGroup cols={2}>
  <Card title="Auto Schedule" icon="sparkles" href="/api-reference/schedule-auto">
    Schedule with AI learning
  </Card>

  <Card title="Cancel Meeting" icon="xmark" href="/api-reference/cancel-meeting">
    Cancel a meeting
  </Card>
</CardGroup>
