Skip to content
/api/v1/cusip/batch

Batch 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

NameInRequiredDefaultAllowedDescriptionExample
cusipsbodyrequired——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

FieldTypeNullableDescription
statusstringno—
request_idstringyes—
timestampstringno—
dataobjectnoMatched records keyed by CUSIP; unmatched inputs have no data entry.
metaobjectno—
meta.not_foundarrayno—
meta.not_found[]stringno—
meta.total_requestedintegerno—
meta.total_foundintegerno—

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

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected 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).

Try it

Related endpoints