WebSocket (Namespace: /13dg)Stream of parsed Schedule 13D/13G beneficial-ownership filings.
Stream of parsed Schedule 13D/13G beneficial-ownership filings. A single `13dg_filing` event per filing carries the COMPLETE detail object — identical to GET /api/v1/ownership/beneficial-ownership/filings/{accession} — including all filers, positions (sole/shared voting & dispositive power), classified purpose with intent flags, exhibits, structured items, and (for amendments) the amendment delta block (prior/current %, threshold crossings, conversions). Server-side filtering eliminates client-side firehose handling. Catch-up delivery on connect replays recent matching filings; subscriptions persist across reconnects (7-day TTL).
Why use this
Common use case
Socket.IO WebSocket stream for live Schedule 13D/13G beneficial-ownership filings. Connect to namespace /13dg and subscribe to receive a single 13dg_filing event per parsed filing whose body is byte-identical to GET /api/v1/ownership/beneficial-ownership/filings/{accession}. Event-driven (filed throughout the year, unlike quarterly 13F) — the activist-and-ownership-change feed. Flat 100-token-per-UTC-day connection cost.
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. 100-token/day fee on first connect of the UTC day, charged separately per namespace. Free-tier OK. | tok_test_abc123 |
| path | config | required | /socket.io | — | Socket.IO HTTP path. Default `/socket.io` — the same path the `/sec` and `/13f` streams use; the connection multiplexes namespaces onto a single TCP socket. Pass to your client as `io(url, { path: '/socket.io' })`. | /socket.io |
| namespace | config | required | /13dg | — | Socket.IO namespace. Connect via `io('/13dg', {...})`. Carries both Schedule 13D and 13G (and their /A amendments) — filter by `form_types` if you want only one. | /13dg |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| event | string | no | Event name — `13dg_filing` for a parsed filing, `13dg_heartbeat` for keep-alive (every 30 s), `subscribed` / `subscription_restored` / `unsubscribed` for subscription-state events. Use to dispatch handlers. |
| accessionNo | string | no | SEC accession number in canonical `XXXXXXXXXX-YY-NNNNNN` format. Deduplication key. |
| formType | string | no | Normalized form type: SC_13D, SC_13D_A, SC_13G, or SC_13G_A. |
| issuer | object | no | Subject company — { name, cik, ticker, cusip, classOfSecurities }. |
| aggregatePercent | number | yes | Aggregate percent of class beneficially owned across all reporting persons on the cover page. |
| filers | array | no | Reporting persons (one filing may have many — group filings). Each carries identity, reporting-person type, citizenship, group membership, and legal-disclosure flags. |
| positions | array | no | Per-filer ownership positions with sole/shared voting and dispositive power, source of funds, and share breakdowns. |
| purpose | object | yes | Classified Item 4 purpose: primary category + 18 boolean intent flags (seeksBoard, seeksMergerAcquisition, …). |
| amendment | object | yes | Present only when isAmendment=true. Prior/current %, share/percent change, threshold crossings (5/10/15/20% + direction), and conversion flags (13G↔13D). |
Sample response
- "event": "13dg_filing"
- "accessionNo": "0001193125-26-041429"
- "formType": "SC_13D_A"
- "issuer":
- "name": "EXAMPLE CORP"
- "cik": "0000123456"
- "ticker": "EXMP"
- "aggregatePercent": 9.8
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: /13dg)?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).