/api/v1/form-13f/fund/bulkBulk query multiple funds in one request (basket analysis).
Bulk query multiple funds in one request (basket analysis).
Why use this
Common use case
Batches up to 20 fund reports into one request. The default detail is full: paginated holdings, analysis totals, sector_allocation and per-fund _meta.pagination. Analysis item arrays are omitted unless include_analysis_items is true. Summary returns metadata, top ten holdings and holdings_count. Successful reports appear in data.funds; failures appear separately in data.errors with the original cik and an error message. data.total_requested counts input entries and data.total_returned counts successful reports. No per-fund status field or top-level coverage meta block is returned.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| ciks | body | required | — | — | JSON array of 1-20 CIK strings, zero-padded or bare. Empty arrays and more than 20 entries return 400. Send an array, not comma-separated text or JSON encoded inside a string. | ["1067983","1649339"] |
| period | query | optional | — | — | Report period YYYY-MM-DD. Applied to all funds. | 2025Q4 |
| detail | query | optional | full | — | 'summary' or 'full'. Summary returns top 10 holdings only. | — |
| size | query | optional | 50 | — | Holdings per page (only for detail=full). Accepted alias: `limit`. | 50 |
| from | query | optional | 0 | — | Pagination offset (only for detail=full). Accepted alias: `offset`. | 0 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| status | string | no | Request status; success responses contain data with separate successful and failed entries. |
| request_id | string | yes | Request identifier supplied by the request middleware. |
| timestamp | string | no | UTC response timestamp. |
| data.funds | array | no | Successful fund reports containing fund identity, filing metadata and holdings. Summary adds holdings_count; full adds analysis totals, sector_allocation and _meta.pagination. |
| data.errors | array | no | Failed input entries, each containing cik and error. |
| data.errors[].cik | any | yes | Original JSON input value for the failed entry, preserved without conversion. |
| data.errors[].error | string | no | The failure message for this entry. |
| data.total_requested | integer | no | Number of entries in the requested CIK array. |
| data.total_returned | integer | no | Number of successful fund reports in data.funds. |
Sample response
- "status": "success"
- "request_id": null
- "timestamp": "2026-09-27T12:00:00Z"
- "data":
- "funds":
- "errors":
- "total_requested": 2
- "total_returned": 1
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 POST "https://api.finradar.ai/api/v1/form-13f/fund/bulk?period=2025Q4&size=50&from=0" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ciks": "[\"1067983\",\"1649339\"]"
}'Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).