API reference
The sarvaFeed REST API lets you programmatically manage boards, posts, votes, and statuses.
Programmatically manage boards, posts, votes, and statuses — and build custom integrations on top of your feedback workflow.
Overview
The sarvaFeed API follows REST conventions and returns JSON for every
endpoint. The base URL is your workspace URL followed by /api/v1.
All requests must be made over HTTPS — HTTP requests are rejected.
https://<your-workspace>.sarvafeed.com/api/v1/...
Authentication
Every request must include a bearer token in the Authorization
header. Generate a token from Settings → API keys. Tokens are
scoped to your workspace and can be revoked at any time.
GET /api/v1/posts
Host: acme.sarvafeed.com
Authorization: Bearer sk_live_abc123...
Endpoints
List posts
GET /api/v1/posts
Returns all posts on the workspace. Supports filtering by board_id,
status, and category, with cursor-based pagination via the after
query parameter.
Create a post
POST /api/v1/posts
Create a new feedback post. Required body fields: board_id, title,
body. Optional: category, author_email, tags[].
Get a post
GET /api/v1/posts/:id
Retrieve a single post including vote count, comments, and status history.
Update a post
PATCH /api/v1/posts/:id
Update specific fields on an existing post. Partial updates only — fields you don't include are left unchanged.
Delete a post
DELETE /api/v1/posts/:id
Permanently delete a post. Votes and comments are deleted with it. This action cannot be undone.
Rate limiting
The API allows 600 requests per minute per workspace. Rate-limit headers are returned with every response:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Your minute-wide quota. |
X-RateLimit-Remaining | Requests left in the current window. |
X-RateLimit-Reset | Unix timestamp when the window resets. |
When you exceed the limit, the API responds with 429 Too Many Requests.
Back off and retry after the Retry-After header value.
Errors
The API uses standard HTTP status codes plus a JSON body explaining what went wrong:
{
"error": {
"code": "validation_failed",
"message": "Field 'title' is required.",
"field": "title"
}
}
Codes you'll see most often: unauthorized, forbidden, not_found,
validation_failed, rate_limited, internal_error.