Skip to content

Developer quick start

Reads are public and CORS-open. Writes need identity: a dk_ API key that resolves to the same operator as a session.

Terminal window
# the heatmap feed
curl https://denpa.ai/api/polymarket/featured
# one market's context
curl https://denpa.ai/api/network/market/559652
# YES price history for a chart
curl "https://denpa.ai/api/polymarket/market-history?marketId=559652&interval=24H"
# the broadcast clock, scoped to your station
curl "https://denpa.ai/api/network/program?providers=polymarket&categories=music,film"

Every read returns a well-formed empty state rather than an error. Render NO SIGNAL; never fabricate.

Sign in at denpa.ai/developer and create a key. It is shown once, stored sha-256 hashed, and revocable. You cannot mint a key with a key. See API keys.

Terminal window
# who am I
curl https://denpa.ai/api/network/field-record/me -H "Authorization: Bearer dk_…"
# file a signal (from your server — the write surface is not CORS-open)
curl -X POST https://denpa.ai/api/predictions \
-H "Authorization: Bearer dk_…" -H "Content-Type: application/json" \
-d '{"marketId":"559652","direction":"YES","priceAtPrediction":1615}'

The handle is resolved server-side from the key, never from the body. One scored signal per operator per market; the first call locks.

import { DenpaClient } from "@denpa/sdk";
const denpa = new DenpaClient({ baseUrl: "https://denpa.ai", apiKey: "dk_…" });
const page = await denpa.getMarketPage("559652");
await denpa.bindStream("559652", { url: "https://…/index.m3u8" });
await denpa.setOverlay({ marketId: "559652", name: page.question });
const receipts = await denpa.getReceipts("myhandle");
Terminal window
claude mcp add --transport http denpa https://denpa.ai/api/mcp \
--header "Authorization: Bearer dk_YOUR_KEY"

Then ask: “push a signal for the top featured market to my live page”. See MCP.