REST endpoints by module. Every route below sits behind JwtAuthGuard unless noted.
Hand-maintained, not generated
There's no OpenAPI spec behind this page. It's a direct reflection of the NestJS controllers.
Treat the controller source as the final word if this drifts.
Every route sits behind JwtAuthGuard. Mutating routes on Accounts, Configs, and Reply Manage
additionally sit behind RolesGuard, requiring owner or manager (mentions' approve/dismiss
also accept moderator). See Projects and roles and
Multi-tenancy for how a role is resolved and enforced.
Zero-filled daily series behind Analytics, each point carrying a score (0-100 percentile rank against the account's trailing 90-day baseline, or null on a day with no impressions).
Filterable by status, accountId, and a date range.
POST
/posts/:id/approve
Moves pending_approval → scheduled.
PATCH
/posts/:id/body
Edits the body. Draft/pending/scheduled posts are a plain DB update; a posted Telegram or Discord post is edited live through the adapter (X and manual platforms reject with a clear message). Response includes live: boolean.
POST
/posts/:id/reject
Body includes a rejection reason. See Review queue.
POST
/posts/:id/publish
Publish now, skipping the schedule.
PATCH
/posts/:id/schedule
Reschedule; replaces rather than duplicates the pending publish job.
PATCH
/posts/:id/mark-posted
Manual-posting accounts only. Requires the post already be ready_to_copy.
DELETE
/posts/:id
Removes the record. Does not un-post from the platform if already posted.