WebSocket (Namespace: /sec)Listen for new SEC filings (10-K, 8-K, 4, etc.) as they are ingested.
Listen for new SEC filings (10-K, 8-K, 4, etc.) as they are ingested.
100 tokens/conn-daySince v1.0.0
Why use this
Real-time push stream of newly-accepted SEC filings — connect once via Socket.IO and receive every filing as it lands in our DB (typically within 30-60 seconds of EDGAR acceptance). Drop-in replacement for sec-api.io's WebSocket: same event shape, same field naming, same per-form-type subscription model. The right choice for low-latency trading workflows that need filing-level signals (8-Ks for material events, Form 4s for insider trades, 13D/G for ownership changes) faster than polling the REST endpoints can deliver. Per-form-type rooms (e.g. `join: form_4`) let you filter server-side rather than receiving the firehose. The 100-token cost is a FLAT per-UTC-day connection fee — reconnects on the same UTC day are free, so disconnects (network blips, deploys) don't multiply your costs. For per-message billing semantics, no charge per event — just the daily connection fee.
Common use case
Triggering an analysis pipeline instantly when a specific company files an 8-K.
Socket.IO WebSocket stream for real-time SEC filings. Connect to namespace /sec and subscribe to events: new_filing (any form), or per-form-type rooms (e.g. join: form_4). Messages include the full filing metadata (accession_number, cik, ticker, form_type, filed_date, filing_url) at the moment EDGAR accepts them. The 100-token cost is a flat per-UTC-day connection fee — reconnects on the same UTC day are free. Drop-in replacement for sec-api.io WebSocket — same event shape.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| api_key | auth | required | — | — | API key. Three methods (first match): Socket.IO `auth.api_key` payload (recommended), HTTP header `X-API-Key` or `Authorization: Bearer`, or `?api_key=` query (logs in access logs). 100-token/day fee on first connect of the UTC day. Free-tier OK. `?token=` removed v3.20.2. | tok_test_abc123 |
| namespace | config | required | /sec | — | Socket.IO namespace to connect to. `/sec` is the canonical SEC-filings stream. The connection URL is `<base>/socket.io/?EIO=4&transport=websocket` and the namespace is selected via Socket.IO client API (`io('/sec')`), NOT via URL path. | /sec |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| event | string | no | Always the literal string `"new_filing"` for individual-filing events. For batch events the per-row event field is omitted — the wrapping event name is `new_filings_batch` and each row is a FilingObject. |
| accession_number | string | no | SEC accession number in canonical `XXXXXXXXXX-YY-NNNNNN` format. Use as a deduplication key client-side — same filing will NOT be re-emitted within a session, but reconnects may replay the last few minutes. |
| cik | string | no | Filer CIK in 10-character zero-padded form. Use for client-side per-issuer filtering (e.g. only process filings from your watchlist of CIKs). |
| ticker | string | yes | Resolved ticker from CIK→ticker lookup at filing time (canonical hyphen form). Null when the filer has no public-equity ticker. Useful as the primary filter key for trading-desk consumers. |
| form_type | string | no | Canonical form type (`4`, `8-K`, `10-K`, `13F-HR`, `S-1`, etc.). Subscribe to per-form-type rooms (`join: form_4`) to filter server-side and reduce event volume. |
| filed_date | string | no | ISO `YYYY-MM-DD` filing acceptance date in ET. Distinct from `accepted_at` — `filed_date` is the calendar date for compliance/UI display; `accepted_at` is the precise timestamp. |
| accepted_at | string | no | ISO-8601 UTC timestamp of SEC EDGAR's acceptance moment. Use for intra-day ordering and latency measurement (compare against your client receipt time — should typically be < 60 seconds). |
| filing_url | string | no | Canonical SEC EDGAR URL for the filing's index page. Use as the human-readable link in dashboards; for programmatic content access drill into `/api/v1/sec/filings/{accession_number}/html` or `/scrapping/extractor`. |
Sample response
·
- "event": "new_filing"
- "accession_number": "0001127602-26-001234"
- "cik": "0000320193"
- "ticker": "AAPL"
- "form_type": "4"
- "filed_date": "2026-05-01"
- "accepted_at": "2026-05-01T20:14:32.000Z"
- "filing_url": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193"
Errors
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected server-side failure. Retry with backoff; report if persistent. |
Code samples
curl -X WS "https://api.finradar.aiWebSocket (Namespace: /sec)?api_Token=YOUR_API_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).