Developers

Moonbase API

Programmatic access to published MoonScore reports. Build internal dashboards, embed scores in your CRM, or wire alerts into Slack.

Bearer auth

Generate keys from Settings → API keys. Each key has its own rate limit. Sandbox keys return fixture data.

REST + GraphQL

REST under /v1, GraphQL at /v1/graphql. Try it in the playground.

Signed webhooks

Subscribe to report.completed, score.changed, alert.fired, and more. HMAC-SHA256 signed.

Official SDKs

Drop-in JS/TS and Python clients with webhook verification.

JS / TSPython

Authentication

All requests require a bearer token in the Authorization header.

curl -H "Authorization: Bearer mb_live_…" \
  https://base.moonrig.io/api/public/v1/reports/your-slug

GET /v1/reports/:slug

Fetch a single published report by slug.

GET https://base.moonrig.io/api/public/v1/reports/acme-protocol
Authorization: Bearer mb_live_…

Example response

{
  "slug": "acme-protocol",
  "name": "Acme Protocol",
  "industry": "Web3",
  "stage": "Series A",
  "geography": "Singapore",
  "score": {
    "overall": 78.4,
    "band": "Strong",
    "pillars": [ { "name": "Team", "score": 82, "weight": 0.15 }, ... ],
    "strengths": [ ... ],
    "risks": [ ... ],
    "scored_at": "2026-05-12T08:11:00Z"
  },
  "verification": {
    "verified_score": 76.0,
    "verdict": "confirmed",
    "signed_at": "2026-05-18T14:22:00Z"
  },
  "report_url": "https://base.moonrig.io/r/acme-protocol"
}

POST /v1/graphql

Single endpoint, typed schema. Open the playground to try it live.

curl -X POST -H "Authorization: Bearer mb_live_…" -H "Content-Type: application/json" \
  https://base.moonrig.io/api/public/v1/graphql -d '{"query":"{ me { sandbox } search(industry:\"Web3\",limit:3){ slug score } }"}'

GET /v1/search

Search published reports with optional filters.

GET https://base.moonrig.io/api/public/v1/search?q=defi&industry=Web3&min_score=65&limit=20
Authorization: Bearer mb_live_…
ParameterTypeDescription
qstringFree-text query across name, description, industry
industrystringExact match
stagestringExact match
min_scorenumberFilter to scores ≥ value
limitint (max 50)Default 20

Errors

  • 401 — Missing, invalid, or revoked key
  • 404 — Slug not found or not published
  • 429 — Rate limit exceeded for this key
  • 5xx — Server error; safe to retry

Ready to build?

Create your first API key and start pulling reports.

Get an API key