Arc MainnetChain:5042Settlement:USDC
api.arcdao.fun/v1

Build on ArcDAO's governance layer

Query curation votes, delegate data, and treasury activity directly. REST, GraphQL, and real-time event streams.

View API docs

API reference

Explore the endpoints

Pick an endpoint, switch languages, and run it against the sandbox. Response shapes match what the live API will return.

Open curation rounds, vote tallies, and per-voter breakdowns.

Delegate registry, statements, and delegation flows.

USDC grant proposals, vote splits, and execution state.

Sybil-resistance heuristics and governance risk signals.

Curator rankings, accuracy, and rank movement.

GEThttps://api.arcdao.fun/v1/curation/votes

List curation rounds with live tallies.

Request
curl "https://api.arcdao.fun/v1/curation/votes" \
  -H "Authorization: Bearer $ARCDAO_API_KEY"

Response

200 OK · sandbox
application/json
{
  "data": [
    {
      "id": "cur_8f21c4b7",
      "token": { "symbol": "ARGUS", "address": "0x8f21c4b7a9e0d3f6512b8ad4c7e90f13ab55d201" },
      "status": "voting",
      "votes": 41,
      "threshold": 40,
      "conviction_weight": 1.64,
      "opens_at": "2026-09-15T12:00:00Z",
      "closes_at": "2026-09-17T12:00:00Z"
    },
    {
      "id": "cur_41ba09e7",
      "token": { "symbol": "TOLLY", "address": "0x41ba09e7d5c28f0136aa7cb4de5f2901b7c34e88" },
      "status": "threshold_reached",
      "votes": 58,
      "threshold": 40,
      "conviction_weight": 1.92,
      "opens_at": "2026-09-14T09:30:00Z",
      "closes_at": "2026-09-16T09:30:00Z"
    }
  ],
  "has_more": true,
  "next_cursor": "cur_c70d3f5a"
}

Sandbox responses. The live API isn't serving traffic yet — shapes are stable, values are examples.

Event streams

Subscribe to governance events in real time instead of polling.

One WebSocket connection covers curation, delegation, treasury, and risk events. Example stream below.

wss://api.arcdao.fun/v1/streamsubscribed
subscribe.ts
const ws = new WebSocket(
  "wss://api.arcdao.fun/v1/stream?key=" + apiKey
);

ws.onmessage = (msg) => {
  const event = JSON.parse(msg.data);
  if (event.type === "proposal.threshold_reached") {
    notify(event.data.token, event.data.votes);
  }
};

Risk scoring

Governance risk, as structured fields

Example risk score

0.34

0.00 low1.00 high
voterConcentrationIndex
0.41

Share of weight held by the top 10 wallets

treasuryExposurePct
12.8%

Requested grants vs. treasury balance

delegateConflictFlags
2 flags

Shared funding sources or self-bonded delegates

sybilClusterOverlap
0.17

Overlap between voting wallet clusters

GET /risk/score/{round_id}
{
  "round": "cur_8f21c4b7",
  "risk_score": 0.34,
  "voterConcentrationIndex": 0.41,
  "treasuryExposurePct": 12.8,
  "delegateConflictFlags": ["shared_funding_source", "self_delegated_bond"],
  "sybilClusterOverlap": 0.17
}

Rate limits & authentication

Bearer keys, per-tier limits

TierRate limitAuthNote
Public30 req / minNoneRead-only endpoints, cached 30s
Developer300 req / minAPI key (Bearer)Keys not issued yet
Indexer3,000 req / minAPI key (Bearer)Keys not issued yet
Streams10 concurrent socketsAPI key (Bearer)Keys not issued yet
Authenticated request
curl "https://api.arcdao.fun/v1/curation/votes" \
  -H "Authorization: Bearer adao_sk_live_…" \
  -H "Accept: application/json"

API keys aren't being issued yet. Join the list below and we'll send yours when the gateway opens.

SDKs

Official SDK coming soon

JavaScript / TypeScript

npm i @arcdao/sdk
Coming soon

Python

pip install arcdao
Coming soon

Want early API access?

Leave an email or wallet and we'll send an API key when the gateway opens.