File a signal (the canonical write)
POST /api/predictions
THE canonical signal write. One scored signal per user per market, first-call-locked — later additions go through POST /api/signals/{id}/events, never a rewrite. The Layer-4 snapshot (crowdYesAtSignal, timeToResolution) is captured at write time when the client omits it. Identity comes from the session or the operator key; the handle is never read from the body. Not CORS-open — a fork calls this from its own server route (DENPA_BASE_URL, default https://denpa.ai). Receipt at https://denpa.ai/receipts/<id>.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
Price of the SIDE called, in bps. A NO call sends the NO price. The server normalises a NO call that arrived as the YES price when the YES snapshot is known.
Operator self-assessed confidence.
Market YES probability (bps) at signal time. Captured server-side at write time when omitted.
Seconds from signal to expected resolution. Captured server-side when omitted.
Client that filed the signal. Unknown values are stored as web.
Client-reported audience size for the take (untrusted; capped). The server coalesces it with its own live-viewer count for clobTokenId.
The market’s public CLOB token id — lets the server snapshot concurrent viewers as reach.
Crowd YES lean (bps) shown to the user at signal time. Audit payload only — never written to the signal.
Responses
Section titled “ Responses ”Filed
object
The signal id. Receipt at https://denpa.ai/receipts/<id>.
Validation error. error names the missing or malformed field.
object
Stable machine-readable code (snake_case) or a short reason.
unauthenticated
object
Stable machine-readable code (snake_case) or a short reason.
market_closed — the market is settled or provisional · already_predicted — the caller’s signal on this market is locked.
object
Stable machine-readable code (snake_case) or a short reason.
signal_service_unavailable · db_unavailable
object
Stable machine-readable code (snake_case) or a short reason.