8-K API: SEC corporate events as normalized JSON, classified by item code

Facts last verified 2026-08-19; sample response fetched from production 2026-08-31.

When something material happens at a US public company — an acquisition agreement, quarterly results, a CEO departure, a cybersecurity incident — the company must report it to the SEC on Form 8-K, generally within four business days of the triggering event. What happened is encoded as official item codes (2.02 is results, 5.02 is officer and director changes, 1.01 is a material agreement), but EDGAR publishes the filing as documents — the item classification lives in an SGML header you would otherwise parse yourself. FilingPulse polls the EDGAR feed continuously, classifies every 8-K by its official item codes, and serves the result as JSON with HMAC-signed webhooks.

To be precise about what this is: FilingPulse is data infrastructure. We report which events were filed, as they were filed — no scores, no recommendations, no interpretation of what an event means for anyone.

What a served event looks like

This is the exact, complete production response of GET /v1/events?cik=1820953&since=2026-08-27&until=2026-08-27, fetched 2026-08-31 — Affirm's August 2026 earnings 8-K, which carried three items (the since/until window is fixed and in the past, so this query returns the same response forever):

{
  "data": [
    {
      "form_type": "8-K",
      "period": "20260825",
      "filed_date": "20260827",
      "issuer": {
        "name": "Affirm Holdings, Inc.",
        "cik": "0001820953"
      },
      "items": [
        {
          "code": "2.02",
          "caption": "Results of Operations and Financial Condition"
        },
        {
          "code": "5.02",
          "caption": "Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers: Compensatory Arrangements of Certain Officers"
        },
        {
          "code": "9.01",
          "caption": "Financial Statements and Exhibits"
        }
      ],
      "source_url": "https://www.sec.gov/Archives/edgar/data/1820953/000162828026059271/0001628280-26-059271-index-headers.html",
      "normalized_by": "filingpulse-prototype-0.2",
      "accession": "0001628280-26-059271"
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

The properties that make this shape dependable:

Item codes you can filter on

The item= filter takes any official 8-K item code. The ones people watch most:

CodeWhat it reports
1.01Entry into a material definitive agreement
1.05Material cybersecurity incidents
2.01Completion of an acquisition or disposition of assets
2.02Results of operations and financial condition (earnings)
3.01Notice of delisting or failure to satisfy a listing rule
5.02Departure or appointment of directors and officers
7.01Regulation FD disclosure
8.01Other events

Querying it

GET https://api.filingpulse.io/v1/events — filters compose; newest filed first:

Pass your key in the X-API-Key header. limit goes to 200 per page with offset paging; copy-paste versions live on the query patterns page, each one executed by our CI.

8-K webhooks

Polling tells you what already happened; for new events you can register a webhook (1 subscription free) with "events": ["8k"] and get an HTTP POST when an 8-K lands. Subscriptions accept an items filter — {"items": ["5.02"]} delivers only officer-change filings, so your handler never sees the noise. Every delivery is HMAC-signed (X-FilingPulse-Signature, per-subscription secret) with a fixed retry ladder. Working receiver code is on the recipes page; the n8n templates include a no-code daily 8-K digest.

Freshness and coverage — checkable, not claimed

We poll EDGAR's public feed on a 60-second cadence during filing hours, and every night a reconciliation pass re-checks the trailing days against EDGAR's own daily index, so anything the live feed dropped is recovered automatically. Rather than quote adjectives, we publish the numbers: current event counts and the freshest ingest timestamp are at /v1/health, no key needed — check it before assuming anything.

Free tier and pricing

The free tier is 2,500 requests/month at 10/minute, email only, no card — enough to poll every 20 minutes around the clock, or to skip polling entirely with the free webhook. Paid tiers ($19/$49/$99 per month) raise volume and webhook counts; the data and schema are identical on every tier, and no tier carries a personal-use license restriction. Get a key — it takes under a minute.

How it compares

Who is writing this: we build FilingPulse, so we have an obvious interest. To keep this useful anyway, every factual claim about another provider below was read from that provider's own public pages on the date shown, each section links its source, and we say plainly where a competitor is the better choice. If you find something out of date, email keys@filingpulse.io and we will fix it.

ProviderFree tierPush delivery
FilingPulse2,500 requests/month, 10/min, email only — no cardHMAC-signed webhooks on new filings, plus a hosted MCP server for AI agents
sec-api.ioFirst 100 API calls — one-time, not monthlyReal-time WebSocket filing stream on paid plans
SEC EDGAR (official APIs)Free, no key — max 10 requests/second with a declared User-AgentNone — the SEC states it offers no filing notification service; RSS polling is the official option
Financial Modeling Prep250 calls/day, end-of-day dataNo filing webhooks documented
Finnhub60 API calls/minute, personal useWebSocket is for market data; filings are poll-only
edgartools (open source)Free — MIT-licensed Python library you run yourselfNone — a local library, not a hosted service; no webhooks
Massive (formerly Polygon.io)Market-data plans include a free tier; filings endpoints are part of the stocks plansForm 4 data is documented as updated daily on every plan — a daily batch, not real-time

The structural difference for 8-K specifically: the SEC's own APIs give you the raw filing documents free forever, and the item classification lives in SGML headers you parse yourself — that DIY path is covered honestly on our free SEC EDGAR API page. FilingPulse's product is that classification done for you, plus push delivery the minute a filing lands. Full comparison with pricing floors and sources: best SEC EDGAR API in 2026.

Know going in

Honest limits: we serve the event classification, not the 8-K body text — item codes, captions, issuer, dates, and the EDGAR source_url where the full filing and its exhibits live. If you need full-text search inside filings, sec-api.io is the answer today. 8-K headers carry no ticker symbol, so issuer filtering is by CIK (which also survives ticker changes). Multi-filer 8-Ks keep the first filer block — a documented limitation. Amendments arrive as form_type "8-K/A" on the same feed. We launched in July 2026 and would rather say so than pretend otherwise.

Other ways in

Sources

Competitor facts were read from these pages on the dates shown. Pricing and limits change; the linked page always wins over this one.

More comparisons: Best SEC EDGAR API in 2026 · sec-api.io alternatives · FilingPulse vs sec-api.io · Free SEC EDGAR API options · Insider trading API (Form 4 data) · S-1 API (IPO registration lifecycle)