/api

Nine endpoints.
Zero ceremony.

Pulse exposes a flat REST surface over plain Node http. No GraphQL, no tRPC, no SDKs to install. Just curl and clarity.

contract.openapi.yaml10 routes · 1 service
GET/api/statusQueue, stats, memory, sanitized config.
GET/api/queueThe four-slot queue, current state.
GET/api/historyLast 50 publish records, newest first.
GET/api/memorySource-bank and angle-bank state.
GET/api/logs150 most recent runtime log lines.
POST/api/fetchFill empty slots from bank, then Reddit.
POST/api/post-slotPublish a single slot to all enabled platforms.
POST/api/post-allPublish all filled slots, sequentially.
PUT/api/slotOverwrite or create a queued item.
DELETE/api/slotClear a slot, release its angle to ready.
terminal · fetch + post
# Fill empty slots from sources
$ curl -X POST localhost:3000/api/fetch

# Publish slot s1 to all enabled platforms
$ curl -X POST localhost:3000/api/post-slot \
-d '{"slotId":"s1"}'

# Inspect the queue
$ curl localhost:3000/api/status | jq .slots
response · QueueItem
{
"redditId": "abc123",
"angleLabel": "hot-take",
"draftedPlatforms": [
"threads",
"linkedin"
],
"ids": {
"threads": "th_998..."
},
"imageUrl": null
}
⚠ /honesty

Pulse is an operator runtime, not a public API.

The HTTP surface ships with no inbound auth and CORS open to *. Run it on a private network or behind your own proxy. Hardening is on the roadmap; documenting reality is shipped today.