Response envelope
All/api/public/v1/ endpoints follow JSON:API 1.1.
Every response body has this top-level structure:
data is a single resource object for singular responses and an array for list
responses. links and meta are omitted when empty.
Resource object
Each resource object has atype, an id, and an attributes object:
Pagination
List endpoints support page-based pagination via query parameters:| Parameter | Default | Max | Description |
|---|---|---|---|
page[number] | 1 | — | 1-indexed page number |
page[size] | 20 | 100 | Items per page |
links object carries cursor URLs:
next and prev are null when no further pages exist.
Error envelope
Error responses use standard HTTP status codes and carry a JSON body:422) include field-level detail:
ID formats
Server-issued IDs
All IDs generated by Open Notes are UUID v7 strings. UUID v7 is time-ordered, which means IDs sort chronologically and are safe to use as cursor tokens.Integration-supplied external IDs
IDs that originate from your platform (user IDs, message IDs, channel IDs, server IDs) are stored as plain strings. Pass them exactly as your platform exposes them — no transformation is applied by Open Notes.Timestamps
All timestamps are ISO 8601 strings in UTC:created_at and updated_at are present on all resource types. Additional event
timestamps (e.g. force_published_at) appear on specific resource types.