DEVELOPERS
A clean REST API on top of every filing.
Everything you see on DEHY is exposed at /api/v1. Bearer-authenticated, JSON, no SDK required. Designed to drop into your existing Bloomberg replacement, Slack alerting, or research notebook.
Authentication
Mint a key from your account settings. Pass it as a bearer token:
curl https://dehy.io/api/v1/filings \
-H "Authorization: Bearer dh_live_..."Keys are SHA-256 hashed at rest. You see the secret part exactly once on creation; after that, only the four-character prefix. Lose it and you mint a new one.
Rate limits
60 requests / minute on the free tier, 1,200 / minute on Studio. The current ceiling is echoed in the X-RateLimit-Limit header on every response. Hit it and you get a 429 with Retry-After: 60.
Endpoints
GET /api/v1/filings
Recent filings with attached DEHY Score where computed. Returns up to 100 per request; default 50.
{
"filings": [
{
"accession": "0001127602-26-...",
"formType": "4",
"filedAt": "2026-05-24T18:42:11Z",
"issuer": { "cik": "1321655", "name": "Palantir...", "ticker": "PLTR" },
"dehyScore": {
"score": 67,
"direction": "sell",
"algoVersion": "2026-05-01.v1",
"breakdown": { ... }
}
}
]
}GET /api/v1/filings/:accession
Single filing — header, issuer, reporter, full transaction array, attached score.
GET /api/v1/filings/:accession/diff
AI-annotated section diffs for long-form filings (10-Q / 10-K). Empty array if not yet generated. Includes per-section change counts, the model used, and a structured annotation.
GET /api/v1/scores
Top DEHY Scores across all ingested Form 4s. Useful as a daily signal feed without polling the full filings index.
GET /api/v1/cot/markets
Latest CFTC Commitments of Traders snapshot (Legacy Futures-Only), commercial / non-commercial breakdown plus week-over-week change.
GET /api/v1/cot/markets/:code/history
Weekly time-series for one market. Up to 520 weeks (~10y). Returns oldest-first; the report date is the canonical x-axis.
The DEHY Score
Every Form 4 carries a reproducible 0–100 score built from five sub-factors: historical pattern (25%), magnitude (25%), role weight (15%), plan dampener (20%), and cluster signal (15%). The algorithm is versioned — same inputs, same output. See methodology for the full math.
Stability
We version the URL prefix, not individual fields. Additive changes ship without notice; breaking changes ship as /api/v2. If a field becomes null instead of going away, it means we tried and couldn't compute — not that we removed it.