For builders

API reference

REST endpoints for DAO governance data. Bearer auth, free for everyone, fair-use rate-limited.

Authentication

Generate a free API key in Settings โ€” available to every signed-in user. Pass it as a bearer token in every request:

Authorization: Bearer gw_xxxxxxxxxxxxxxxxxxxxxxxx

Keys are prefixed gw_. Rotate any time in Settings. Lost keys cannot be recovered โ€” only regenerated.

Rate limits

Monthly quota
5,000 /mo

Free for every signed-in user. Need more for a public-goods project? Reach out.

Burst limit
5 req/sec

Per key, to keep the service healthy for all.

Burst limit: 5 requests per second per key. Every response includes x-ratelimit-remaining-month and x-ratelimit-remaining-burst headers.

Endpoints

GET/api/v1/daos

List all monitored DAOs with current Democracy Score and breakdown.

Request
curl https://daosentinel.xyz/api/v1/daos?limit=5 \
  -H "Authorization: Bearer gw_..."
Response
{
  "data": [
    {
      "slug": "uniswap",
      "name": "Uniswap",
      "chain": "ethereum",
      "governanceToken": "UNI",
      "democracyScore": "67.30",
      "scoreBreakdown": { ... },
      "treasuryUsd": "3100000000.00",
      "totalProposals": 234
    }
  ]
}
GET/api/v1/proposals

Proposals across all DAOs. Filter by state, DAO slug, paginate.

Request
curl "https://daosentinel.xyz/api/v1/proposals?state=active&dao=arbitrum&limit=10" \
  -H "Authorization: Bearer gw_..."
Response
{
  "data": [
    {
      "id": "uuid",
      "externalId": "0xabc...",
      "title": "Activate v4 hooks on Base mainnet",
      "state": "active",
      "endTimestamp": "2026-06-15T20:00:00Z",
      "votesCount": 847,
      "aiSummary": "This proposal activates...",
      "aiRiskLevel": "high",
      "hasWhaleVote": true,
      "daoSlug": "uniswap",
      "daoName": "Uniswap"
    }
  ]
}
GET/api/v1/alerts

Alert feed โ€” whale votes, last-minute swings, score drops. Filter by type and severity.

Request
curl "https://daosentinel.xyz/api/v1/alerts?type=whale_vote&severity=critical&limit=20" \
  -H "Authorization: Bearer gw_..."
Response
{
  "data": [
    {
      "id": "uuid",
      "type": "whale_vote",
      "severity": "critical",
      "title": "๐Ÿณ Whale vote on Uniswap: 23.4% VP",
      "description": "0xabc...123 cast 2.1M UNI...",
      "data": { "voter": "0xabc...", "vp": 2100000, "vpPct": 23.4 },
      "createdAt": "2026-06-04T16:42:18Z",
      "daoSlug": "uniswap",
      "daoName": "Uniswap"
    }
  ]
}

JS/TS SDK

A typed client for all 3 endpoints above, zero runtime dependencies. Same MIT license as the rest of the project.

npm install dao-sentinel-sdk
import { DaoSentinelClient } from 'dao-sentinel-sdk';

const client = new DaoSentinelClient({ apiKey: process.env.DAO_SENTINEL_API_KEY! });

const daos = await client.listDaos({ limit: 10 });
const { data: proposals } = await client.listProposals({ state: 'active', dao: 'uniswap' });
const alerts = await client.listAlerts({ severity: 'critical' });

Source: packages/sdk-js.

MCP server

Query DAO Sentinel directly from Claude Desktop, Claude Code, or any MCP-compatible agent โ€” 5 read-only tools covering DAOs, proposals, alerts, the Atom feed, and ICS calendars.

npm install -g dao-sentinel-mcp
{
  "mcpServers": {
    "dao-sentinel": {
      "command": "dao-sentinel-mcp",
      "env": { "DAO_SENTINEL_API_KEY": "gw_..." }
    }
  }
}

Source: packages/mcp-server.

Public endpoints (no auth)

GET/api/badge/[slug]

Returns an SVG Democracy Score badge. Embeds anywhere.

<img src="https://daosentinel.xyz/api/badge/uniswap" />
GET/api/alerts/stream

Server-Sent Events stream of new alerts in real time. Open from any client.

const es = new EventSource(
  'https://daosentinel.xyz/api/alerts/stream'
);
es.addEventListener('alert', (e) =>
  console.log(JSON.parse(e.data))
);

Ready to build?

Sign in, generate your free key from Settings, ship. No plan, no card.

API reference โ€” DAO Sentinel