DeFi Intel

DeFi Intel API PRIVATE BETA

Programmatic access to the digital-asset entity graph. Query the same data that powers our 11,787 entity profiles, 26,104 typed relations, 3,354 dated events, 1,800 entity-tagged news items and 237 long-form research entries.

API in private beta. The endpoints documented here describe the planned v1 surface. We are accepting early-access applications from Pro and Business subscribers. Apply for access →

Overview

The DeFi Intel API exposes our curated digital-asset entity graph over a small, conventional REST surface. Six v1 endpoints cover the four main object types — entities, relations, events, news — plus dedicated search and incident endpoints. Every response is JSON, every list is cursor-paginated, every request is authenticated via a Bearer token. The schema is stable; breaking changes are versioned with a leading /v1/ path component.

The API is bundled with our paid plans. Pro ($49/mo) includes 10,000 requests per month — enough for an analyst dashboard, a Slack-bot integration, or a small client-side widget. Business ($99/mo) includes 100,000 requests per month — enough for a public-facing site that surfaces entity context next to ticker pages, or a quantitative research pipeline that polls daily. Enterprise is custom volume with an SLA, contractual data-rights, IP-allowlisted access, and a dedicated technical contact; contact sales.

Authentication uses an opaque API key passed as a Bearer token in the Authorization header. Keys are issued from your account dashboard once you upgrade to Pro or Business. Sample header: Authorization: Bearer di_live_a1b2c3d4e5f6.... Test keys (di_test_*) are scoped to a separate sandbox dataset of ~150 demo entities and do not count against your monthly quota; they are useful for CI pipelines and integration smoke tests. Never embed a live key in client-side JavaScript or a public Git repository — rotate compromised keys via the dashboard.

Base URL & conventions

Endpoints

Six v1 endpoints. Every endpoint accepts an Authorization header and returns JSON. Optional query parameters are documented per endpoint.

GET /v1/entities/{slug}

Single entity profile + relations

Returns a single entity record with its full set of typed outbound relations (founder-of, audited-by, deployed-on, holds-token, etc.), tagged news, and event timeline.

Path params

  • slug (string, required) — entity slug, e.g. protocol-aave

Query params

  • include (string, optional) — comma-separated: relations, news, events, research. Default: relations.
  • news_limit (int, optional, max 100) — how many news items to embed. Default: 10.

Response (200) — abbreviated

{
  "data": {
    "slug": "protocol-aave",
    "type": "protocol",
    "name": "Aave",
    "description": "Largest decentralized lending protocol in DeFi.",
    "tvl_usd": 24800000000,
    "chains": ["ethereum","arbitrum","optimism","base","polygon"],
    "founded": "2017-11-01",
    "first_seen": "2017-10-04T00:00:00Z",
    "last_modified": "2026-04-28T11:43:00Z",
    "relations": [
      {"type":"founded-by","target":"person-stani-kulechov"},
      {"type":"audited-by","target":"company-trail-of-bits"},
      {"type":"issues-token","target":"token-aave"},
      {"type":"issues-stablecoin","target":"token-gho"}
    ],
    "tags": ["lending","ethereum","blue-chip","governance-token"]
  },
  "meta": {"request_id":"req_01HTZ...","plan":"pro"}
}

curl

curl https://api.defi-intel.com/v1/entities/protocol-aave \
  -H "Authorization: Bearer di_live_xxx"

JavaScript (fetch)

const r = await fetch(
  "https://api.defi-intel.com/v1/entities/protocol-aave",
  { headers: { Authorization: `Bearer ${process.env.DI_KEY}` } }
);
const { data } = await r.json();
console.log(data.tvl_usd);

Python (requests)

import os, requests
r = requests.get(
    "https://api.defi-intel.com/v1/entities/protocol-aave",
    headers={"Authorization": f"Bearer {os.environ['DI_KEY']}"},
)
print(r.json()["data"]["tvl_usd"])

Rate-limit response headers

X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9234
X-RateLimit-Reset: 1714521600
GET /v1/entities/search

Search across entities

Full-text search across entity name, description and tags. Supports filtering by entity type.

Query params

  • q (string, required) — search query, e.g. aave
  • type (string, optional) — filter by type: protocol, company, token, person, chain, dao, event, incident, product
  • limit (int, optional, max 100) — default 25
  • cursor (string, optional) — pagination cursor

Response (200) — abbreviated

{
  "data": [
    {"slug":"protocol-aave","type":"protocol","name":"Aave","score":0.98},
    {"slug":"protocol-aave-v3","type":"protocol","name":"Aave v3","score":0.92},
    {"slug":"token-aave","type":"token","name":"AAVE","score":0.88}
  ],
  "meta": {"total":12,"next_cursor":null}
}

curl

curl "https://api.defi-intel.com/v1/entities/search?q=aave&type=protocol&limit=10" \
  -H "Authorization: Bearer di_live_xxx"
GET /v1/relations

Typed graph traversal

Return the typed relations originating from a given entity. Use this to walk the graph — e.g. find every protocol audited by Trail of Bits, or every token issued by Aave.

Query params

  • from (string, required) — source entity slug
  • type (string, optional) — relation type, e.g. audited-by, founded-by, deployed-on, holds-token, backed-by, integrated-with
  • direction (string, optional) — out (default), in, both
  • limit (int, optional, max 200) — default 50

Response (200) — abbreviated

{
  "data": [
    {"type":"audited-by","from":"protocol-aave","to":"company-trail-of-bits","first_seen":"2020-09-01"},
    {"type":"audited-by","from":"protocol-aave","to":"company-openzeppelin","first_seen":"2020-12-03"},
    {"type":"audited-by","from":"protocol-aave","to":"company-certora","first_seen":"2022-03-16"}
  ],
  "meta": {"next_cursor":null}
}

curl

curl "https://api.defi-intel.com/v1/relations?from=protocol-aave&type=audited-by" \
  -H "Authorization: Bearer di_live_xxx"
GET /v1/news

Entity-tagged news

Return news items tagged to a given entity, ordered most recent first.

Query params

  • entity (string, required) — entity slug
  • limit (int, optional, max 100) — default 25
  • since (ISO-8601, optional) — only return news after this timestamp
  • cursor (string, optional)

Response (200) — abbreviated

{
  "data": [
    {
      "id": "news_01HTZX...",
      "title": "Aave v4 launches on Ethereum mainnet with hub-and-spoke architecture",
      "url": "https://defi-intel.com/news/aave-v4-launch-2026/",
      "source": "DeFi Intel",
      "published_at": "2026-03-30T14:00:00Z",
      "entities": ["protocol-aave","protocol-aave-v4","token-gho"]
    }
  ],
  "meta": {"next_cursor":"eyJrIjoxMjM0NX0..."}
}

Python

r = requests.get(
    "https://api.defi-intel.com/v1/news",
    params={"entity":"protocol-aave","limit":50,"since":"2026-04-01T00:00:00Z"},
    headers={"Authorization": f"Bearer {os.environ['DI_KEY']}"},
)
for item in r.json()["data"]:
    print(item["published_at"], item["title"])
GET /v1/incidents/{slug}

Incident post-mortem data

Returns a single incident record with structured post-mortem fields: scope, root cause, loss in USD, affected entities, remediation timeline.

Path params

  • slug (string, required) — incident slug, e.g. incident-curve-reentrancy-2023

Response (200) — abbreviated

{
  "data": {
    "slug": "incident-curve-reentrancy-2023",
    "title": "Curve Vyper compiler reentrancy",
    "occurred_at": "2023-07-30T12:00:00Z",
    "loss_usd": 73500000,
    "loss_recovered_usd": 52800000,
    "root_cause": "Vyper 0.2.15-0.3.0 reentrancy guard mis-compiled",
    "affected_entities": [
      "protocol-curve","pool-curve-aleth","pool-curve-mseth","pool-curve-peth"
    ],
    "remediation": "Vyper 0.3.7+, frozen pools migrated, white-hat returns",
    "post_mortem_url": "https://defi-intel.com/incidents/curve-reentrancy-2023/"
  }
}

curl

curl https://api.defi-intel.com/v1/incidents/incident-curve-reentrancy-2023 \
  -H "Authorization: Bearer di_live_xxx"
GET /v1/events

Dated events

Return dated events filtered by date range and (optionally) by entity. Events include token launches, version upgrades, hack/incident dates, governance votes, regulatory rulings.

Query params

  • from (ISO-8601 date, required) — inclusive lower bound, e.g. 2026-01-01
  • to (ISO-8601 date, required) — inclusive upper bound
  • entity (string, optional) — restrict to events tagged to this entity
  • category (string, optional) — launch, upgrade, incident, governance, regulatory, partnership
  • limit (int, optional, max 200) — default 50

Response (200) — abbreviated

{
  "data": [
    {
      "id": "event_aave_v4_launch",
      "title": "Aave v4 launches on Ethereum mainnet",
      "date": "2026-03-30",
      "category": "launch",
      "entities": ["protocol-aave","protocol-aave-v4"]
    },
    {
      "id": "event_kelp_lrt_depeg",
      "title": "KelpDAO LRT depeg → Aave $8.45B 48h withdrawal",
      "date": "2026-04-12",
      "category": "incident",
      "entities": ["protocol-aave","protocol-kelpdao"]
    }
  ],
  "meta": {"next_cursor":null}
}

Errors

Errors use standard HTTP status codes plus a JSON body with a stable error.code. Always handle 429 (rate limit) and 5xx (server) gracefully with exponential backoff.

Statuserror.codeMeaning
400invalid_requestMalformed query, missing required param, invalid date format
401unauthorizedMissing or malformed Authorization header
403plan_requiredEndpoint requires Business or Enterprise plan
404not_foundSlug does not exist in the entity graph
422unprocessable_slugSlug format is valid but resolves to a deprecated record
429rate_limitedMonthly quota exceeded or burst rate-limit hit; retry after Retry-After seconds
500internal_errorServer-side fault; retry with backoff
503maintenanceScheduled maintenance window

Sample error body:

{
  "error": {
    "code": "not_found",
    "message": "No entity with slug 'protocol-doesnotexist'",
    "request_id": "req_01HTZX..."
  }
}

Pagination

Every list endpoint supports cursor pagination. The first request returns up to limit records plus a meta.next_cursor string when more records exist; pass that cursor back as the cursor query param on the next request. The cursor is opaque — do not parse it. When meta.next_cursor is null, you have reached the end.

We deliberately do not support offset-style pagination (?page=N) because it does not survive concurrent inserts cleanly. Cursors are stable across the lifetime of a single iteration; if you need to re-iterate from the start, simply omit cursor.

# first page
curl "https://api.defi-intel.com/v1/news?entity=protocol-aave&limit=50" \
  -H "Authorization: Bearer di_live_xxx"

# next page
curl "https://api.defi-intel.com/v1/news?entity=protocol-aave&limit=50&cursor=eyJrIjoxMjM0NX0..." \
  -H "Authorization: Bearer di_live_xxx"

Rate limits

Two limits apply: a monthly quota (10,000 on Pro, 100,000 on Business, custom on Enterprise) and a burst limit of 20 requests per second per key. Both apply to every endpoint and every key. The current window is reflected in the response headers on every request:

If you need higher burst or monthly volume than Business provides, contact sales for Enterprise. We typically size Enterprise contracts to the customer's actual peak QPS plus 30% headroom; common Enterprise tiers are 1M, 5M and 25M requests per month.

Get an API key

The API is in private beta. Pro ($49/mo) and Business ($99/mo) subscribers can apply for early access through the account dashboard once subscribed. Enterprise customers should contact sales directly. We onboard new beta accounts in weekly batches; expect a 2-5 business day turnaround.

Get on the API beta waitlist

Subscribe to Pro or Business and email us your intended use case. We're prioritising analyst dashboards, fintech integrations, and quantitative research pipelines for the first cohort.

Roadmap

The v1 REST surface is stable; we will not break it. Past v1, we are working on:

Have a use case we should prioritise? Tell us at [email protected] or via the contact form.


Last updated 2026-05-03. The DeFi Intel API is independent of any individual data source and assembles the entity graph from on-chain telemetry, public filings, primary research and curated editorial. See our methodology for the curation process. Questions: [email protected].

Stay current — and get on the API beta

The weekly DeFi Intel brief is free, and Pro subscribers go to the front of the API beta queue.