
REST APIScheduled Posts
Scheduled Posts API
Public CRUD API for managing Reddit scheduled posts. Create drafts, list, update, and delete scheduled posts with a single shared API key.
Base URL: https://www.enception.ai
Authentication
Pass your API key in either header:
x-api-key: $SCHEDULED_POSTS_API_KEY # or Authorization: Bearer $SCHEDULED_POSTS_API_KEY
Notes:
- The key may be a comma-separated list, so each consumer can have a distinct, individually revocable key.
- This is a shared service key with no per-user identity. Any valid key can read and write posts for any brand.
- Missing or invalid keys return
401.
Endpoints
POST
/api/v1/scheduled-postsCreate a new scheduled post (status draft).
| Field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | max 300 chars |
body | string | Yes | max 40000 chars |
subreddit | string | Yes | max 100 chars |
brand | string | Yes | must exist; resolves the post's client/website |
role | string | No | optional persona role |
tone | string | No | optional persona tone |
Example
curl -X POST https://www.enception.ai/api/v1/scheduled-posts \
-H "x-api-key: $SCHEDULED_POSTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Best AI presentation tools",
"body": "...",
"subreddit": "productivity",
"brand": "chatslide"
}'Returns { "success": true, "post": { ... } }
GET
/api/v1/scheduled-postsList scheduled posts (newest first).
| Query param | Description |
|---|---|
status | comma-separated statuses, e.g. draft,filtered |
client | case-insensitive partial match on client name |
brand | exact brand membership match |
limit | default 100, capped at 500 |
curl "https://www.enception.ai/api/v1/scheduled-posts?brand=chatslide&status=draft&limit=20" \ -H "x-api-key: $SCHEDULED_POSTS_API_KEY"
Returns { "success": true, "posts": [ ... ] }
PATCH
/api/v1/scheduled-postsUpdate a post by id. Body: { id, title?, subreddit?, body?, status? }.
- Content edits (title/subreddit/body) only allowed while
draftorfiltered; status-only updates also allowed forposting. statusmust be one of:draft,filtered,posting,succeeded.- Returns
409if the post is missing or no longer editable.
curl -X PATCH https://www.enception.ai/api/v1/scheduled-posts \
-H "x-api-key: $SCHEDULED_POSTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "id": "<uuid>", "title": "New title" }'DELETE
/api/v1/scheduled-postsDelete a post by id. Body: { id }. Only draft/filtered posts can be deleted (to avoid destroying posts that are posting/already posted). Returns 409 if missing or not deletable.
curl -X DELETE https://www.enception.ai/api/v1/scheduled-posts \
-H "x-api-key: $SCHEDULED_POSTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "id": "<uuid>" }'Errors
All errors use the shape { "success": false, "error": { "code", "message" } }.
| Status | Code | When |
|---|---|---|
| 400 | INVALID_JSON | body is not valid JSON |
| 400 | VALIDATION_ERROR | missing/invalid fields |
| 400 | BRAND_NOT_FOUND | brand does not exist |
| 401 | UNAUTHORIZED | missing or invalid API key |
| 409 | NOT_EDITABLE | post missing or past an editable status (PATCH) |
| 409 | NOT_DELETABLE | post missing or not draft/filtered (DELETE) |
| 500 | INSERT_FAILED / UPDATE_FAILED / DELETE_FAILED / FETCH_FAILED | database error |