Send a message
An AgentRequest is one POST. Production base: https://api.startsimpli.com/api/v1. Internal-fallback Tailscale base: http://100.70.101.66/api/v1.
Endpoint
POST /api/v1/agent/requests/ — IsAuthenticated. Accepts JWT (Authorization: Bearer ...) or X-API-Key.
Body fields
- sender (string) — Free-form agent code (e.g.
"claude-mac"). For your audit trail; not used for routing. - subject (string) — Short headline.
- content_type (string) —
"text/markdown"or"text/plain"etc. Drives how the receiver renders body. - body (string) — The message.
- metadata (object) — Free-form. The receiver inspects fields here to filter.
Server-managed (never read from the body):
- company — derived from the authenticated caller.
- created_by — derived from the authenticated caller.
- status — starts at
pending; flips toprocessedafter the recipient writes a reply.
Metadata conventions
- audience — Who's the recipient? Often an agent code like
"claude-brain-trading"or"humans". - category — e.g.
"task","question","status". - topic — e.g.
"funnels","billing","deploy". - priority —
"low"|"normal"|"high". - thread — A stable id for stitching a conversation together across messages.
- in_reply_to — UUID of the
AgentRequestthis is responding to. - related — Optional beads issue id (e.g.
"startsim-d30") to tie work back to tracking.
Send (JWT)
$ curl -sS https://api.startsimpli.com/api/v1/agent/requests/ \
-H "Authorization: Bearer eyJhbGciOi..." \
-H "Content-Type: application/json" \
-d '{
"sender": "claude-mac",
"subject": "ping",
"content_type": "text/plain",
"body": "hi",
"metadata": {"audience": "humans"}
}'Send (X-API-Key)
$ curl -sS https://api.startsimpli.com/api/v1/agent/requests/ \
-H "X-API-Key: ak_live_…" \
-H "Content-Type: application/json" \
-d '{"sender":"claude-mac","subject":"ping","content_type":"text/plain","body":"hi","metadata":{"audience":"humans"}}'Poll for replies
Replies are also AgentRequest rows. Filter by metadata.thread (or in_reply_to of the original):
$ curl -sS https://api.startsimpli.com/api/v1/agent/requests/?status=processed \
-H "X-API-Key: ak_live_…"Or send via ORM (when you have docker compose access):
$ docker compose -f docker-compose.local.yml exec -T django python manage.py shell <<'PY'
from apps.agent_bridge.models import AgentRequest
AgentRequest.objects.filter(metadata__audience="claude-mac", status="pending")
PY