---
title: "Update calendar event by ID (Admin)"
description: "Update an existing calendar event by its ID. Requires admin authentication."
---

> Documentation Index
> Fetch the complete documentation index at: https://developer.channelautomations.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Channel Automation API › Calendar

`PUT /api/calendar/events/{id}`

Update an existing calendar event by its ID. Requires admin authentication.

## Authentication

Requires one of the following:

- `BearerAuth`, http, header `Authorization`, format `JWT`
- `ApiKeyAuth`, apiKey, in header, header `X-API-Key`, format `API_KEY`

## Path parameters

- `id` (`put/api/calendar/events/id.path.id`; string, required) — Calendar event ID
  - example `"1dfc54fd-cbc3-4483-858f-c0fb76f89328"`

## Request body

_Required._

- `workspace_id` (`put/api/calendar/events/id.workspace_id`; string, required)
  - example `"15213"`
- `date` (`put/api/calendar/events/id.date`; string, required) — Date in mm-dd-yyyy format
  - example `"07-10-2025"`
- `start_time` (`put/api/calendar/events/id.start_time`; string, required) — Start time in hh:mm AM/PM format
  - example `"11:00 AM"`
- `end_time` (`put/api/calendar/events/id.end_time`; string, required) — End time in hh:mm AM/PM format
  - example `"11:30 AM"`
- `timezone` (`put/api/calendar/events/id.timezone`; string, required) — IANA timezone identifier
  - example `"America/New_York"`
- `title` (`put/api/calendar/events/id.title`; string, optional)
  - example `"Updated Test Event"`
- `description` (`put/api/calendar/events/id.description`; string, optional)
  - example `"Updated test calendar event"`
- `location` (`put/api/calendar/events/id.location`; string, optional)
  - example `"Updated Virtual Meeting"`

## Example request

```json
{
  "workspace_id": "15213",
  "title": "Updated Test Event",
  "description": "Updated test calendar event",
  "date": "07-10-2025",
  "start_time": "11:00 AM",
  "end_time": "11:30 AM",
  "timezone": "America/New_York",
  "location": "Updated Virtual Meeting"
}
```

## Code samples

### cURL

```bash
curl --request PUT \
  --url https://api.channelautomation.com/api/calendar/events/1dfc54fd-cbc3-4483-858f-c0fb76f89328 \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "workspace_id": "15213",
  "title": "Updated Test Event",
  "description": "Updated test calendar event",
  "date": "07-10-2025",
  "start_time": "11:00 AM",
  "end_time": "11:30 AM",
  "timezone": "America/New_York",
  "location": "Updated Virtual Meeting"
}
'
```

### TypeScript

```typescript
const url = 'https://api.channelautomation.com/api/calendar/events/1dfc54fd-cbc3-4483-858f-c0fb76f89328';
const options = {
  method: 'PUT',
  headers: {'Content-Type': 'application/json', Authorization: 'Bearer <token>'},
  body: JSON.stringify({
    workspace_id: '15213',
    title: 'Updated Test Event',
    description: 'Updated test calendar event',
    date: '07-10-2025',
    start_time: '11:00 AM',
    end_time: '11:30 AM',
    timezone: 'America/New_York',
    location: 'Updated Virtual Meeting'
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.channelautomation.com/api/calendar/events/1dfc54fd-cbc3-4483-858f-c0fb76f89328"

payload = {
    "workspace_id": "15213",
    "title": "Updated Test Event",
    "description": "Updated test calendar event",
    "date": "07-10-2025",
    "start_time": "11:00 AM",
    "end_time": "11:30 AM",
    "timezone": "America/New_York",
    "location": "Updated Virtual Meeting"
}
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <token>"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
```

## Responses

### 200

Event updated successfully

#### Example

```json
{
  "success": true,
  "event": {
    "id": "appointment-uuid",
    "contact_id": "contact-uuid",
    "admin_id": "admin-uuid",
    "workspace_id": "workspace-uuid",
    "event_title": "Product Consultation",
    "event_description": "Initial consultation meeting",
    "start_time": "2025-07-15T09:00:00Z",
    "end_time": "2025-07-15T10:00:00Z",
    "status": "scheduled",
    "location": "Virtual Meeting",
    "notes": "Customer interested in kitchen renovation"
  },
  "parsed_times": {
    "utc_start": "2025-07-10T15:00:00.000Z",
    "utc_end": "2025-07-10T15:30:00.000Z",
    "local_start": "2025-07-10T11:00:00.000Z",
    "local_end": "2025-07-10T11:30:00.000Z",
    "format_used": "user_friendly"
  }
}
```

- `success` (`put/api/calendar/events/id.response.200.success`; boolean, optional)
  - example `true`
- `event` (`put/api/calendar/events/id.response.200.event`; object, optional)
  - `workspace_id` (`put/api/calendar/events/id.response.200.event.workspace_id`; string, required) — Workspace ID
    - example `"workspace-uuid"`
  - `start_time` (`put/api/calendar/events/id.response.200.event.start_time`; string, required) — Start time of the appointment
    - format `date-time`; example `"2025-07-15T09:00:00Z"`
  - `end_time` (`put/api/calendar/events/id.response.200.event.end_time`; string, required) — End time of the appointment
    - format `date-time`; example `"2025-07-15T10:00:00Z"`
  - `id` (`put/api/calendar/events/id.response.200.event.id`; string, optional) — Unique identifier (for updates)
    - example `"appointment-uuid"`
  - `contact_id` (`put/api/calendar/events/id.response.200.event.contact_id`; string, optional) — Associated contact ID
    - example `"contact-uuid"`
  - `admin_id` (`put/api/calendar/events/id.response.200.event.admin_id`; string, optional) — Admin/agent ID
    - example `"admin-uuid"`
  - `event_title` (`put/api/calendar/events/id.response.200.event.event_title`; string, optional) — Title of the event/appointment
    - example `"Product Consultation"`
  - `event_description` (`put/api/calendar/events/id.response.200.event.event_description`; string, optional) — Description of the event
    - example `"Initial consultation meeting"`
  - `status` (`put/api/calendar/events/id.response.200.event.status`; string, optional) — Status of the appointment
    - example `"scheduled"`
  - `location` (`put/api/calendar/events/id.response.200.event.location`; string, optional) — Location of the appointment
    - example `"Virtual Meeting"`
  - `notes` (`put/api/calendar/events/id.response.200.event.notes`; string, optional) — Additional notes
    - example `"Customer interested in kitchen renovation"`
- `parsed_times` (`put/api/calendar/events/id.response.200.parsed_times`; object, optional)
  - `utc_start` (`put/api/calendar/events/id.response.200.parsed_times.utc_start`; string, optional)
    - example `"2025-07-10T15:00:00.000Z"`
  - `utc_end` (`put/api/calendar/events/id.response.200.parsed_times.utc_end`; string, optional)
    - example `"2025-07-10T15:30:00.000Z"`
  - `local_start` (`put/api/calendar/events/id.response.200.parsed_times.local_start`; string, optional)
    - example `"2025-07-10T11:00:00.000Z"`
  - `local_end` (`put/api/calendar/events/id.response.200.parsed_times.local_end`; string, optional)
    - example `"2025-07-10T11:30:00.000Z"`
  - `format_used` (`put/api/calendar/events/id.response.200.parsed_times.format_used`; string, optional)
    - example `"user_friendly"`

### 400

Missing required fields or invalid data

#### Example

```json
{
  "success": false,
  "error": "Missing required fields: workspace_id"
}
```

- `success` (`put/api/calendar/events/id.response.400.success`; boolean, optional)
  - example `false`
- `error` (`put/api/calendar/events/id.response.400.error`; string, optional)
  - example `"Missing required fields: workspace_id"`

### 401

Authentication required

#### Example

```json
{
  "error": "Authentication required",
  "success": false
}
```

- `error` (`put/api/calendar/events/id.response.401.error`; string, optional)
  - example `"Authentication required"`
- `success` (`put/api/calendar/events/id.response.401.success`; boolean, optional)
  - example `false`

### 403

Admin privileges required

#### Example

```json
{
  "error": "Admin privileges required",
  "success": false
}
```

- `error` (`put/api/calendar/events/id.response.403.error`; string, optional)
  - example `"Admin privileges required"`
- `success` (`put/api/calendar/events/id.response.403.success`; boolean, optional)
  - example `false`

### 404

Event not found

#### Example

```json
{
  "success": false,
  "error": "Event not found"
}
```

- `success` (`put/api/calendar/events/id.response.404.success`; boolean, optional)
  - example `false`
- `error` (`put/api/calendar/events/id.response.404.error`; string, optional)
  - example `"Event not found"`

### 500

Internal server error

#### Example

```json
{
  "error": "Internal server error",
  "details": "string",
  "success": false
}
```

- `error` (`put/api/calendar/events/id.response.500.error`; string, optional)
  - example `"Internal server error"`
- `details` (`put/api/calendar/events/id.response.500.details`; string, optional)
- `success` (`put/api/calendar/events/id.response.500.success`; boolean, optional)
  - example `false`


Source: https://developer.channelautomations.com/api/put-api-calendar-events-id/index.md
