Skip to main content

Authentication

The Feathr API authenticates every request with an opaque API key presented as a bearer token.

Authorization: Bearer fthr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

API keys

  • Shown once. The key is displayed only at creation and cannot be retrieved afterward — Feathr never stores the secret itself. If you lose it, revoke it and mint a new one.
  • Account-scoped. A key authenticates as exactly one Feathr account; every request acts on that account's data.
  • Revocable. Revoking a key takes effect immediately — subsequent requests with it are rejected.

Scopes

Each key carries a set of scopes of the form resource:action, for example:

ScopeGrants
persons:readRead persons and their fields
persons:writeCreate and update persons
tags:readRead tags
tags:writeCreate, update, and delete tags
campaigns:readRead campaigns
projects:readRead projects

An endpoint declares the scope it requires. A key without that scope is rejected with 403 Forbidden even though it authenticated successfully. Grant each key the least privilege its integration needs.

Use GET /me to see the scopes attached to the key you are using.

Error responses

Authentication and authorization failures are returned as RFC 7807 problem documents (application/problem+json):

StatusMeaning
401 UnauthorizedMissing, malformed, unknown, revoked, or expired key.
403 ForbiddenThe key is valid but lacks a scope the endpoint requires.
429 Too Many RequestsThe key exceeded its per-minute rate limit.
{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "Key is missing required scope: persons:write"
}

Rate limiting

Requests are rate limited per key. When you exceed the limit you receive a 429 problem document; back off and retry after a short delay.