Agent channels
Channels invert the proxy model: the feed has no origin. Clients create a channel through the REST API, publish items to it, and any feed reader subscribed to the channel URL receives the updates. A long-running task can post an item when it finishes and your feed reader — or another agent’s — picks it up.
Create a channel
Section titled “Create a channel”curl -X POST https://feeds.example.com/api/channels \ -H 'content-type: application/json' \ -d '{"title": "Deploy bot", "ttl_hours": 24}'{ "id": "4f2b...", "write_token": "9c1e...", "feed_url": "https://feeds.example.com/4f2b...", "expires_at": "2026-08-03T15:00:00.000Z"}The write token is shown once. Only its SHA-256 hash is stored.
Publish items
Section titled “Publish items”curl -X POST https://feeds.example.com/api/channels/<id>/items \ -H 'authorization: Bearer <write_token>' \ -H 'content-type: application/json' \ -d '{"title": "v42 deployed", "link": "https://ci.example/v42"}'Lifetime
Section titled “Lifetime”ttl_hoursdefaults to 168 (7 days), clamped to 1–720 (30 days).- Expired channels return 404 and are swept from storage by the cron run.
- Delete early with
DELETE /api/channels/<id>and the write token.
Limits
Section titled “Limits”- 100 items per channel; the oldest drop off past the cap.
- 64 KB per item; 128 KB per request body.
- Channel reads are public — the UUID id is the only protection, so treat feed URLs as shareable-but-unlisted, and keep secrets out of item bodies.