Form D Re-check API: Half-cent poll: ids of Form D filings added or updated since your — SEC Form D
Half-cent poll: ids of Form D filings added or updated since your cursor, with the next cursor and the URL of the full feed. Call it in a loop; fetch the feed only when changed > 0.
$0.005 per call — pay with prepaid card credits (Authorization: Bearer ck_live_…, packs from $1) or with USDC over x402: call it, get 402 with the price, retry signed. Failed calls are never charged.
How do you call it?
GET /v1/sec/formd/changes — product id
sec_formd_changes. Over MCP, call answerpool_get with
product_id=sec_formd_changes.
curl "https://answerpool.io/v1/sec/formd/changes?cursor=c1_2026-09-16T12%3A00%3A00"
# with a prepaid credit key
curl -H "Authorization: Bearer ck_live_..." "https://answerpool.io/v1/sec/formd/changes?cursor=c1_2026-09-16T12%3A00%3A00"
Live call: https://answerpool.io/v1/sec/formd/changes?cursor=c1_2026-09-16T12%3A00%3A00 · JSON sample: /v1/samples/sec_formd_changes
What does the answer look like?
A representative response, the same static sample served at /v1/samples/sec_formd_changes.
as_of | 2026-09-16T12:15:00Z |
|---|---|
feed | sec_formd |
changed | 2 |
added | 0002150620-26-000001 |
updated | (empty) |
truncated | false |
empty | false |
cursor_from | c1_2026-09-16T12:00:00 |
next_cursor | c1_2026-09-16T12:15:00 |
window.from | 2026-09-16T12:00:00 |
window.to | 2026-09-16T12:15:00 |
full_feed_url | /v1/sec/formd/since?since=2026-09-16T12:00:00 |
coverage_started_at | 2026-08-27T00:00:00 |
refresh_after | 2026-09-17T11:15:00.000Z |
next_endpoints
| path | url | description | since the same cursor time | price_usd |
|---|---|---|---|---|
| /v1/sec/formd/since | /v1/sec/formd/since?since=2026-09-16T12:00:00 | The rows themselves | — | 0.0 |
The same sample as raw JSON
{
"as_of": "2026-09-16T12:15:00Z",
"feed": "sec_formd",
"changed": 2,
"added": [
"0002150620-26-000001"
],
"updated": [],
"truncated": false,
"empty": false,
"cursor_from": "c1_2026-09-16T12:00:00",
"next_cursor": "c1_2026-09-16T12:15:00",
"window": {
"from": "2026-09-16T12:00:00",
"to": "2026-09-16T12:15:00"
},
"full_feed_url": "/v1/sec/formd/since?since=2026-09-16T12:00:00",
"coverage_started_at": "2026-08-27T00:00:00",
"next_endpoints": [
{
"path": "/v1/sec/formd/since",
"url": "/v1/sec/formd/since?since=2026-09-16T12:00:00",
"description": "The rows themselves",
"since the same cursor time": null,
"price_usd": 0.0
}
],
"refresh_after": "2026-09-17T11:15:00.000Z"
}How fresh is it, and where does the data come from?
The fastest source behind this answer can change every 15 minutes, so every response carries a refresh_after timestamp — right now it would be 2026-09-17T11:15:00.000Z. Schedule the next call on that value rather than on a guess.
- SEC EDGAR (US federal public domain) — upstream:
https://efts.sec.gov
Method version 0.1.0 ·
serving cache 0 days ·
every response carries a result_id you can resolve at
/v1/provenance.
What should you call next?
- sec_formd_since — The rows themselves (free)
When should you use it?
A polling loop that needs to know whether anything happened, cheaply, before deciding to fetch and parse rows.
What you skip building
- full-feed polling
- amendment detection
- dedup
When should you not use it?
Reading the offerings — /v1/sec/formd and its feeds return them. Backfills — cursors are clamped to 7 days; fetch the full feed instead.
Where else can you find this?
- Catalog entry (JSON, free)
- OpenAPI schema — input and output types, prices, the 402 flow
- llms.txt — every product in one plain-text document