PilotFoxDocs

Create an annotation

POST
/api/v1/sites/{siteId}/annotations

A dated note, or a date range, on this site's charts or on every site of the organization (scope: org: for unrestricted members whose organization role grants annotations:write, and API keys not limited to some sites), private to members or public. An MCP tool may not make one public or organization-wide (403).

Requires annotations:write on the site (an API key, or a signed-in member's role). Share links: 401.

Authorization

headerx-api-key<token>

An organization API key (ak_…), with the permissions and the sites it was created with. For servers and scripts: no cookie and no Origin check. Also accepted as Authorization: Bearer ak_… (apiKeyBearer). A request carries one credential: a key sent with a share token or a live session cookie is 400 (details.reason: ambiguous_credentials).

Scope: annotations:write

Path Parameters

siteId*string

Request Body

application/json
  1. body
title*string
Length1 <= length <= 120
description?|null
startsAt*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Formatdate-time
endsAt?|null
color?|null
icon?|null
isPublic?boolean
Defaultfalse
scope?string
Default"site"
Value in"site""org"

Response Body

Created

application/json
  1. response
data*
Example Request
curl -X POST 'https://pilotfox.app/api/v1/sites/string/annotations' \  -H 'Content-Type: application/json' \  -d '{  "title": "string",  "startsAt": "2019-08-24T14:15:22Z"}'
Example Response201
{  "data": {    "id": "string",    "title": "string",    "description": "string",    "startsAt": "string",    "endsAt": "string",    "color": "blue",    "icon": "string",    "isPublic": true,    "scope": "site",    "createdBy": "string",    "createdAt": "string",    "updatedAt": "string"  }}