The REST API

Authenticate with a scoped API key, read boards, posts, roadmap, changelog, and status, and create posts and releases.

7 min read

Everything the dashboard does against your workspace data, the API does too. The base URL is https://api.signlos.com/api/v1, responses are JSON, and every response carries a success boolean.

Authentication

Create a key in Settings → API keys, choose its scopes, and copy it — the full key is shown once and stored only as a hash. Send it as a bearer token.

curl https://api.signlos.com/api/v1/boards \
  -H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx"

Keys are confined to /api/v1

An API key is rejected on the dashboard and admin routes, deliberately. Otherwise a key created for one narrow scope would inherit its creator's full role everywhere else in the product.

A key never outranks its creator

A key inherits the workspace role of the person who made it, and is re-checked on every request. If that person is demoted or removed, the key immediately loses the same access. Rotate keys when someone leaves anyway — an active key belonging to a departed teammate is a key nobody is watching.

Scopes

Grant a key only the scopes it needs. A dashboard that reads votes has no reason to hold changelog:write.

ScopeGrants
boards:readList boards and read board detail.
posts:readList and read posts, votes, and comments.
posts:writeCreate posts and update status, tags, and title.
roadmap:readRead roadmap items and their linked posts.
changelog:readRead published release notes.
changelog:writeCreate and publish release notes.
status:readRead status components and incidents.
status:writeOpen, update, and resolve incidents.

Endpoints

MethodPathScope
GET/boardsboards:read
GET/boards/{id}boards:read
GET/postsposts:read
POST/postsposts:write
GET/posts/{id}posts:read
PATCH/posts/{id}posts:write
GET/roadmaproadmap:read
GET/changelogchangelog:read
GET/changelog/{id}changelog:read
POST/changelogchangelog:write
GET/status/componentsstatus:read
GET/status/incidentsstatus:read

Rate limits

100 requests per minute, per key. Over the limit you get HTTP 429 — back off and retry rather than hammering, since the window is a rolling minute.

Errors

{
  "success": false,
  "error": "Insufficient API key scopes. Required: posts:write",
  "code": "INSUFFICIENT_SCOPES"
}
StatusCodeWhat went wrong
401UNAUTHORIZEDMissing, malformed, revoked, or expired key.
403INSUFFICIENT_SCOPESThe key is valid but lacks the scope for this route.
403API_KEY_SCOPEThe key was used outside /api/v1.
400VALIDATION_ERRORThe request body failed schema validation.
429Rate limit exceeded.

Public endpoints (no key)

Anything on a published portal is readable without authentication, under /api/public/{workspace}. That is what the portal itself uses, and it is the right surface for a public dashboard or a status badge.

curl https://api.signlos.com/api/public/YOUR-WORKSPACE/status
NextConnect Claude to SignlOS

Common questions

How do I authenticate with the SignlOS API?
Create a scoped API key in Settings → API keys and send it as a bearer token: Authorization: Bearer sk_live_…. Keys are accepted only on the /api/v1 endpoints.
What is the SignlOS API rate limit?
100 requests per minute per API key. Exceeding it returns HTTP 429; back off and retry.

Something unclear or wrong? Tell us — or post it on our board.