API Reference

Automate publishing and manage content programmatically

The Firmreader API is a REST API that lets you create posts, manage channels, and query analytics programmatically.

Base URL

https://api.firmreader.com/v1

Authentication

Every request requires an API key in the Authorization header:

curl https://api.firmreader.com/v1/posts \
  -H "Authorization: Bearer fr_live_abc123"

API keys are created in Settings > API Keys. Each key has a scope that limits what it can access:

ScopePermissions
posts:readList and retrieve posts
posts:writeCreate, update, and delete posts
channels:readList and retrieve channels
channels:writeCreate, update, and delete channels
analytics:readQuery engagement metrics

Rate limits

PlanRequests per minute
Starter60
Business300
Enterprise1,000

Rate limit headers are included in every response:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 297
X-RateLimit-Reset: 1708790400

Error format

All errors follow a consistent format:

{
  "error": {
    "code": "invalid_request",
    "message": "The channel_id field is required.",
    "param": "channel_id"
  }
}
HTTP StatusMeaning
400Bad request — check your parameters
401Unauthorized — invalid or missing API key
403Forbidden — API key lacks required scope
404Not found — resource doesn't exist
429Rate limited — slow down
500Server error — try again later

Pagination

List endpoints return paginated results. Use cursor and limit parameters:

curl "https://api.firmreader.com/v1/posts?limit=20&cursor=post_abc123" \
  -H "Authorization: Bearer fr_live_abc123"

The response includes a next_cursor field. When it's null, you've reached the end.

{
  "data": [...],
  "next_cursor": "post_xyz789",
  "has_more": true
}