Skip to main content
TroopyDocs
Open Troopy
Troopy

API reference / Analytics

Add a chart note

Puts a note on the analytics chart at a time, or now without at. Examples are a launch, a campaign or a price change. Then a jump in visits shows beside its cause.

post/api/v1/analytics/notes

Authorization

HeaderAuthorization: Bearer <API key>
Or the headerX-API-Key: <API key>
API keyMake one in Troopy under Settings > API keys. It acts as you, in its workspace.

Other ways to call it

CLItroopy analytics notes add
MCP tooltroopy_create_analytics_note
Rate limit60 calls in 60 seconds, for each key
RetriesSend an Idempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.

Body

application/json
text*string

At least 1 characters · At most 500 characters

atstring

When it happened: an ISO time, or YYYY-MM-DD for that day's midnight in the workspace's time zone

Response

201 · application/json
data*object
6 properties
id*string

A 24-character id

text*string
at*string

ISO 8601 date and time

author*object
2 properties
type*enum<string>

personagentapigithubxreddit

name*string
commit*object | null

A commit that Troopy synced from GitHub. null for a note that someone wrote

6 properties
sha*string
repo*string
branch*string
url*string
additions*integer
deletions*integer
mention*object | null

For a post on X or Reddit that named the site. null for the other notes

5 properties
platform*enum<string>

xreddit

url*string
where*string | null

The subreddit, for Reddit

score*integer

Likes on X, upvotes on Reddit

comments*integer

Errors

400 invalid_inputFix the field named in detail. Each operation's schema is in /api/v1/openapi.json.
401 unauthorizedSend an API key as `Authorization: Bearer tr_live_...`. Create one in Troopy under Settings.
403 forbiddenThe key lacks a scope this operation needs, or its owner lacks the role. detail says which; create a key with the scope, or ask an organization owner or admin.
409 conflictThis Idempotency-Key was used for a different request, or that request is still running. Use a new key for a new request.
429 rate_limitedWait the number of seconds in Retry-After, then retry.