7.0 KiB
RedditBot API
This file is generated from src/web/api-catalog.ts. Run npm run docs:api
after changing the HTTP surface. The live OpenAPI 3.1 document is available at
GET /api/openapi.json, and compact agent discovery is available at
GET /api/v1/capabilities.
Authentication
The dashboard token is an administrator credential. Browser users can exchange it for an HttpOnly, SameSite=Strict session; API clients can send it as a bearer token.
Optional least-privilege bearer credentials are configured with:
REDDIT_BOT_AGENT_READ_TOKEN: GET, HEAD, SSE, and private-media reads except debug routes.REDDIT_BOT_AGENT_CONTROL_TOKEN: read access plus mutations under/api/v1.
Control credentials cannot send messages, import sessions, activate accounts, or update legacy configuration endpoints. Those operations require the administrator dashboard token.
Agent entry points
GET /healthz: unauthenticated process liveness with no private state.GET /api/v1/readyz: component readiness and authentication degradation.GET /api/v1/overview: bot, account, sync, rate-limit, and recent-error snapshot.GET /api/v1/control: current running state.POST /api/v1/control/start,/stop, orPOST /api/v1/control: explicit bot control.POST /api/v1/jobs: tracked chat/media sync; pollGET /api/v1/jobs/:id.GET /api/events/stream: replayable typed SSE events.
MCP server
Run the stdio MCP adapter with npm run mcp. It connects to
REDDIT_BOT_API_URL (default http://127.0.0.1:3000) and reads its bearer
credential from REDDIT_BOT_AGENT_TOKEN, then the scoped agent variables, and
finally WEB_DASHBOARD_TOKEN.
Read tools cover overview, readiness, accounts, activity, conversations,
errors, sync state, and performance. Control tools include start_bot,
stop_bot, set_bot_running, trigger_sync, and get_job. External
message tools are separately annotated as destructive/non-idempotent and need
an administrator credential.
Operations
| Method | Path | Summary | Access | Mutates |
|---|---|---|---|---|
GET |
/healthz |
Process liveness | read | no |
GET |
/api/v1/overview |
Consolidated operational snapshot | read | no |
GET |
/api/v1/readyz |
Component readiness | read | no |
GET |
/api/v1/capabilities |
Discover API operations and safety attributes | read | no |
GET |
/api/openapi.json |
OpenAPI 3.1 description | read | no |
GET |
/api/v1/control |
Get bot running state | read | no |
POST |
/api/v1/control |
Set bot running state | control | yes |
POST |
/api/v1/control/start |
Start bot processing | control | yes |
POST |
/api/v1/control/stop |
Stop bot processing | control | yes |
GET |
/api/v1/jobs |
List recent asynchronous jobs | read | no |
GET |
/api/v1/jobs/{id} |
Get asynchronous job state | read | no |
POST |
/api/v1/jobs |
Start chat or media synchronisation | control | yes |
GET |
/api/stats |
Get bot statistics | read | no |
GET |
/api/analytics/candidate-funnel |
Get durable candidate funnel counts | read | no |
GET |
/api/activity |
Get recent activity | read | no |
GET |
/api/posts/by-author/{username} |
Get processed posts by author | read | no |
GET |
/api/messages |
Get recent sent messages | read | no |
GET |
/api/successful |
Get successful message examples | read | no |
GET |
/api/chats |
Get active chats | read | no |
GET |
/api/chats/sync |
Get chat sync state | read | no |
POST |
/api/chats/sync/delta |
Trigger incremental chat sync | admin | yes |
POST |
/api/chats/sync/full |
Trigger full chat sync | admin | yes |
POST |
/api/chats/fetch-all |
Fetch all chats synchronously | admin | yes |
GET |
/api/conversations |
List conversations | read | no |
GET |
/api/conversations/{id} |
Get conversation detail | read | no |
POST |
/api/conversations/{id}/suggest-reply |
Generate a reply suggestion | admin | yes |
POST |
/api/conversations/{id}/suggest-media-ask |
Generate a media request suggestion | admin | yes |
POST |
/api/conversations/{id}/send-reply |
Send a conversation reply | admin | yes |
GET |
/api/conversations/{id}/shareable-media |
List exchange-library images allowed for the latest inbound request | read | no |
POST |
/api/conversations/{id}/share-media |
Send a selected exchange-library image | admin | yes |
POST |
/api/conversations/start |
Start a new conversation | admin | yes |
GET |
/api/media |
List received private media | read | no |
GET |
/api/media/sync |
Get media sync state | read | no |
POST |
/api/media/sync |
Trigger media sync | admin | yes |
POST |
/api/media/sync/full |
Trigger full media sync | admin | yes |
GET |
/api/media-library |
List operator-owned exchange images | read | no |
POST |
/api/media-library |
Upload and classify an operator-owned exchange image | admin | yes |
PATCH |
/api/media-library/{id} |
Correct tags or enable an exchange image | admin | yes |
DELETE |
/api/media-library/{id} |
Delete an exchange image | admin | yes |
POST |
/api/start |
Start bot processing (legacy) | admin | yes |
POST |
/api/stop |
Stop bot processing (legacy) | admin | yes |
GET |
/api/timers |
Get rate-limit timers | read | no |
GET |
/api/analytics/by-subreddit |
Get performance by subreddit | read | no |
GET |
/api/analytics/by-strategy |
Get performance by strategy | read | no |
GET |
/api/analytics/funnel |
Get mature message outcome funnel | read | no |
GET |
/api/analytics/trend |
Get daily performance trend | read | no |
GET |
/api/analytics/ai-usage |
Get OpenRouter cost and model reliability | read | no |
GET |
/api/attention |
Get operator attention items | read | no |
GET |
/api/outreach |
Get active outreach candidates and funnel stages | read | no |
GET |
/api/config |
Get non-secret application configuration | read | no |
PUT |
/api/config |
Update application configuration | admin | yes |
GET |
/api/login/status |
Get Reddit session state | read | no |
POST |
/api/login/session-import |
Import Reddit and Matrix credentials | admin | yes |
GET |
/api/accounts |
List Reddit accounts | read | no |
POST |
/api/accounts/{accountId}/activate |
Activate a Reddit account | admin | yes |
GET |
/api/logs/stream |
Stream legacy log events | read | no |
GET |
/api/events/stream |
Stream typed application events | read | no |
GET |
/api/logs |
Get recent structured logs | read | no |
GET |
/api/debug/cookies |
Get redacted cookie diagnostics when enabled | admin | no |
POST |
/api/debug/check-responses |
Run response check when enabled | admin | yes |
Error model
Errors use JSON with an error string and optional detail. Authentication
failures are 401; recognized but insufficient agent credentials receive
403; invalid inputs receive 400; unavailable services receive 503.
Long-running agent jobs expose failure text in the job resource.