Skip to content

Publish a Calendar feed

POST
/api/v1/calendar/feeds
curl --request POST \
--url https://example.com/api/v1/calendar/feeds \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "color": "example", "detail": "full", "include_notes": true, "include_tasks": true, "name": "example", "source": "journal", "source_id": "example" }'

Requires a signed-in User. It creates a feed definition and a read-only link. It returns 400 when the source or feed settings are invalid. Route: /api/v1/calendar/feeds. Inputs: . Do not automatically replay this operation after an uncertain result.

Media typeapplication/json

Input for one new published feed.

object
color
string | null
detail
required

Full feeds keep event details; Busy-only feeds reveal only availability.

string
Allowed values: full busy_only
include_notes
boolean
include_tasks
boolean
name
required
string
source
required

A feed source selects one owner-scoped collection of calendar data.

string
Allowed values: journal area calendar
source_id
string | null
Media typeapplication/json

One-time result returned only when a User creates or rotates a feed link.

object
feed_id
required

Stable ID used to open the owning feed’s Settings deep link.

string
https_url
required
string
webcal_url
required
string
Examplegenerated
{
"feed_id": "example",
"https_url": "example",
"webcal_url": "example"
}
Media typeapplication/json

The standard API error response: { "error": { ... } }.

object
error
required

Error details.

object
code
required

Stable machine-readable code.

string
Allowed values: bad_request unauthorized forbidden not_found conflict name_conflict_case name_too_long push_endpoint_rejected too_many_requests internal service_unavailable
details
One of:

Optional field or operation details.

object
key
additional properties
string
message
required

Safe text for logs or a user-facing error message.

string
Example
{
"error": {
"code": "bad_request"
}
}