/api/v1/cusip/batchBatch CUSIP resolution.
Batch CUSIP resolution.
5 tokensSince v1.0.0
Why use this
Resolve up to 100 supplied CUSIPs in one request. Returns matched mapping records keyed by CUSIP, including ticker, security_name, security_type and CUSIP6, with unmatched valid inputs and counts in meta.
Common use case
Resolving all holdings in a large portfolio in a single request.
Returns matched cusip_mappings records keyed by CUSIP in data. Each record uses security_name and security_type; this route does not return issuer_name or security_group. Valid but unmatched inputs appear in meta.not_found. Invalid inputs are filtered before lookup. total_requested counts the original input list; total_found counts unique matched mappings. Results are not an input-aligned array, and duplicate matched CUSIPs share one dictionary entry.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| cusips | body | required | — | — | JSON array of up to 100 CUSIP strings; an empty array is accepted. Null, false, zero and empty entries are filtered out. More than 100 entries returns 400. Lookup candidates must contain 6, 8 or 9 characters and must not start with 000; other strings are filtered out. Values are used exactly as supplied: no whitespace trimming, case conversion or check-digit padding. For larger universes, send batches of at most 100. Send an array, not JSON encoded inside a string. | ["037833100","594918104"] |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| status | string | no | — |
| request_id | string | yes | — |
| timestamp | string | no | — |
| data | object | no | Matched records keyed by CUSIP; unmatched inputs have no data entry. |
| meta | object | no | — |
| meta.not_found | array | no | — |
| meta.not_found[] | string | no | — |
| meta.total_requested | integer | no | — |
| meta.total_found | integer | no | — |
Sample response
·
- "status": "success"
- "request_id": null
- "timestamp": "2026-09-27T12:00:00Z"
- "data":
- "037833100":
- "meta":
- "not_found":
- "total_requested": 2
- "total_found": 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/cusip/batch" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cusips": "[\"037833100\",\"594918104\"]"
}'Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).