Calendar
Manage content calendar entries for planning and scheduling posts.
List Entries
GET /api/v1/calendar/entries
Retrieve calendar entries within a date range.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Yes | Start date in YYYY-MM-DD format |
end_date | string | Yes | End date in YYYY-MM-DD format |
Example
curl "https://powerpost.ai/api/v1/calendar/entries?start_date=2026-03-01&end_date=2026-03-31" \
-H "x-api-key: pp_live_sk_YOUR_KEY" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID"const res = await fetch(
'https://powerpost.ai/api/v1/calendar/entries?start_date=2026-03-01&end_date=2026-03-31',
{
headers: {
'x-api-key': 'pp_live_sk_YOUR_KEY',
'X-Workspace-Id': 'YOUR_WORKSPACE_ID',
},
}
)
const data = await res.json()import requests
res = requests.get(
"https://powerpost.ai/api/v1/calendar/entries",
headers={
"x-api-key": "pp_live_sk_YOUR_KEY",
"X-Workspace-Id": "YOUR_WORKSPACE_ID",
},
params={
"start_date": "2026-03-01",
"end_date": "2026-03-31",
},
)
data = res.json()Response
{
"entries": [
{
"entry_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Product launch announcement",
"description": "Share the new feature across all channels",
"scheduled_date": "2026-03-25",
"scheduled_time": "14:00",
"platforms": ["instagram", "tiktok", "x"],
"created_at": "2026-03-19T10:00:00Z",
"updated_at": "2026-03-19T10:00:00Z"
}
]
}Create Entry
POST /api/v1/calendar/entries
Create a new calendar entry for planning future content.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Entry title (max 500 characters) |
description | string | No | Entry description (max 5000 characters) |
scheduled_date | string | Yes | Target date in YYYY-MM-DD format |
scheduled_time | string | No | Target time in HH:MM format |
platforms | string[] | No | Target platforms (instagram, tiktok, youtube, x, facebook, linkedin) |
Example
curl -X POST https://powerpost.ai/api/v1/calendar/entries \
-H "x-api-key: pp_live_sk_YOUR_KEY" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"title": "Product launch announcement",
"description": "Share the new feature across all channels",
"scheduled_date": "2026-03-25",
"scheduled_time": "14:00",
"platforms": ["instagram", "tiktok", "x"]
}'const res = await fetch('https://powerpost.ai/api/v1/calendar/entries', {
method: 'POST',
headers: {
'x-api-key': 'pp_live_sk_YOUR_KEY',
'X-Workspace-Id': 'YOUR_WORKSPACE_ID',
'Content-Type': 'application/json',
},
body: JSON.stringify({
title: 'Product launch announcement',
description: 'Share the new feature across all channels',
scheduled_date: '2026-03-25',
scheduled_time: '14:00',
platforms: ['instagram', 'tiktok', 'x'],
}),
})
const data = await res.json()import requests
res = requests.post(
"https://powerpost.ai/api/v1/calendar/entries",
headers={
"x-api-key": "pp_live_sk_YOUR_KEY",
"X-Workspace-Id": "YOUR_WORKSPACE_ID",
"Content-Type": "application/json",
},
json={
"title": "Product launch announcement",
"description": "Share the new feature across all channels",
"scheduled_date": "2026-03-25",
"scheduled_time": "14:00",
"platforms": ["instagram", "tiktok", "x"],
},
)
data = res.json()Response
{
"entry_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Product launch announcement",
"description": "Share the new feature across all channels",
"scheduled_date": "2026-03-25",
"scheduled_time": "14:00",
"platforms": ["instagram", "tiktok", "x"],
"created_at": "2026-03-19T10:00:00Z",
"updated_at": "2026-03-19T10:00:00Z"
}Get Entry
GET /api/v1/calendar/entries/{id}
Retrieve a single calendar entry by ID.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The calendar entry ID (UUID) |
Example
curl https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000 \
-H "x-api-key: pp_live_sk_YOUR_KEY" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID"const res = await fetch(
'https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000',
{
headers: {
'x-api-key': 'pp_live_sk_YOUR_KEY',
'X-Workspace-Id': 'YOUR_WORKSPACE_ID',
},
}
)
const data = await res.json()import requests
res = requests.get(
"https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000",
headers={
"x-api-key": "pp_live_sk_YOUR_KEY",
"X-Workspace-Id": "YOUR_WORKSPACE_ID",
},
)
data = res.json()Response
{
"entry_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Product launch announcement",
"description": "Share the new feature across all channels",
"scheduled_date": "2026-03-25",
"scheduled_time": "14:00",
"platforms": ["instagram", "tiktok", "x"],
"created_at": "2026-03-19T10:00:00Z",
"updated_at": "2026-03-19T10:00:00Z"
}Update Entry
PATCH /api/v1/calendar/entries/{id}
Update an existing calendar entry. Only include the fields you want to change.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The calendar entry ID (UUID) |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | No | Entry title (max 500 characters) |
description | string | No | Entry description (max 5000 characters) |
scheduled_date | string | No | Target date in YYYY-MM-DD format |
scheduled_time | string | No | Target time in HH:MM format |
platforms | string[] | No | Target platforms (instagram, tiktok, youtube, x, facebook, linkedin) |
Example
curl -X PATCH https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000 \
-H "x-api-key: pp_live_sk_YOUR_KEY" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated launch announcement",
"scheduled_date": "2026-03-28"
}'const res = await fetch(
'https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000',
{
method: 'PATCH',
headers: {
'x-api-key': 'pp_live_sk_YOUR_KEY',
'X-Workspace-Id': 'YOUR_WORKSPACE_ID',
'Content-Type': 'application/json',
},
body: JSON.stringify({
title: 'Updated launch announcement',
scheduled_date: '2026-03-28',
}),
}
)
const data = await res.json()import requests
res = requests.patch(
"https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000",
headers={
"x-api-key": "pp_live_sk_YOUR_KEY",
"X-Workspace-Id": "YOUR_WORKSPACE_ID",
"Content-Type": "application/json",
},
json={
"title": "Updated launch announcement",
"scheduled_date": "2026-03-28",
},
)
data = res.json()Response
{
"entry_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Updated launch announcement",
"description": "Share the new feature across all channels",
"scheduled_date": "2026-03-28",
"scheduled_time": "14:00",
"platforms": ["instagram", "tiktok", "x"],
"created_at": "2026-03-19T10:00:00Z",
"updated_at": "2026-03-20T09:15:00Z"
}Delete Entry
DELETE /api/v1/calendar/entries/{id}
Delete a calendar entry.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The calendar entry ID (UUID) |
Example
curl -X DELETE https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000 \
-H "x-api-key: pp_live_sk_YOUR_KEY" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID"const res = await fetch(
'https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000',
{
method: 'DELETE',
headers: {
'x-api-key': 'pp_live_sk_YOUR_KEY',
'X-Workspace-Id': 'YOUR_WORKSPACE_ID',
},
}
)
const data = await res.json()import requests
res = requests.delete(
"https://powerpost.ai/api/v1/calendar/entries/550e8400-e29b-41d4-a716-446655440000",
headers={
"x-api-key": "pp_live_sk_YOUR_KEY",
"X-Workspace-Id": "YOUR_WORKSPACE_ID",
},
)
data = res.json()Response
{
"success": true
}Errors
| Code | Description |
|---|---|
| 400 | Invalid request (missing fields, bad date format) |
| 401 | Invalid API key |
| 403 | Workspace access denied |
| 404 | Calendar entry not found |
| 429 | Rate limit exceeded |