no-tickets-service. Everything you can do in the dashboard you can do with the
API.
Authentication
Push tokens are issued per project from the dashboard. Treat them like
credentials — anyone holding a push token can write to that project’s feed.
Base URL
NT_API_URL for self-hosted or staging
environments.
Versioning
Every route lives under/v1/. The version increments only on breaking
changes; additive field changes ship within v1. There is no v2 today and no
plan to cut one in the near term.
Response envelopes
- Success: the resource shape directly (no wrapping envelope).
- Validation failures (422):
{ "error": "ValidationError", "details": [...] }onPOST,{ "error": "ValidationError" }(nodetails) onPATCH. The asymmetry is intentional —PATCHrequests are sparse and the per-field errors aren’t always meaningful. - Auth failures (401, 403):
{ "error": "<reason>" }. The one exception is403 EntitlementExceeded, which adds anentitlementfield naming the breached limit:{ "error": "EntitlementExceeded", "entitlement": "projects" }.
Rate limits
Per-token limits apply to write routes (POST, PATCH, DELETE). The default
ceiling is 60 req/min — high enough that normal CI usage never hits it, low
enough that a misconfigured loop won’t melt the server. Limits are not
documented per-route because they apply to the token, not the endpoint.