Skip to content

Overview

Contract version 1.5 · 2026-09-10. Additions are appended and never change an existing response shape; a breaking change bumps the major and keeps the old shape live for a deprecation window. This section is the narrative contract. The machine-readable twin is the OpenAPI 3.1 document at /docs/openapi.json (also served at https://denpa.ai/openapi.json); the API reference pages are rendered from it.

HostWhat
https://denpa.aithe protocol hub (Next.js) — federation, writes, receipts, market pages
https://api.denpa.aiHono API service — /api/v1/* (AURA, Station Protocol, signal categorisation, the protocol feed) and wss://api.denpa.ai/ws
https://api-production-802f5.up.railway.appthe same Hono service on its Railway hostname
https://program-clock-production.up.railway.appthe channel clock (/program/*)
  1. Reads — public REST, CORS-open (ACAO: *, GET/OPTIONS) on /api/polymarket/ · /api/broadcast/ · /api/oracle/featured · /api/embed/ · /api/card/ · /api/c/ · /api/fashion/signals · /api/network/ · /api/situations.
  2. Writesdk_ key (or first-party session) → POST /api/predictions. Not CORS-open: forks call it from their own server route.
  3. Agentsdk_ bearer → POST /api/mcp (10 tools, streamable HTTP).
  4. KeysPOST /api/dev/keys needs a Privy login. You cannot mint a key with a key.
CredentialStatusWhere
nonecurrentall CORS reads and several public reads
Authorization: Bearer dk_…currentpredictions, field-record/me, MCP, Station Protocol
session cookies db_uid + db_sig (HMAC)first-partyapp surfaces, identity claim
db_live_…same family as dk_older prefix; accepted everywhere dk_ is
x-admin-secretinternaladmin and stats routes
SIWE / x-api-key / db_your_api_keylegacydo not build on these

Every read endpoint returns a well-formed empty state rather than erroring. /api/wire returns 200 and an empty list on error; signal proxies never throw. Forks must do the same: render NO SIGNAL, never fabricate.