Risk Intelligence
Business Risk Score
POST
/v1/risk/business$1.50 per entityAI-powered composite risk score (0–1000) for a business entity. Aggregates data from sanctions lists, SAM.gov, OIG LEIE, SEC EDGAR, adverse media, and 35+ risk factors with industry-adjusted weights. Includes entity disambiguation — each match is scored for confidence (HIGH/MEDIUM/LOW) and low-confidence matches are suppressed to reduce false positives.
Send an Idempotency-Key header to retry safely.
Request body
| Field | Type | Description |
|---|---|---|
| namerequired | string | Legal business name max length 500 |
| countryoptional | string | ISO-2 country code (e.g. US, GB). Improves entity disambiguation accuracy. max length 3 |
| einoptional | string | Employer Identification Number. Strong identifier for U.S. businesses. max length 20 |
| dunsoptional | string | D&B DUNS number. Unique 9-digit business identifier. max length 20 |
| ueioptional | string | Unique Entity Identifier from SAM.gov. max length 20 |
| industryoptional | string | Declared industry (e.g. 'Government Contracting'). Activates industry-specific weight profiles. max length 100 |
| industryCodeoptional | string | SIC or NAICS code. max length 20 |
| websiteoptional | string | Company website URL. max length 500 |
| officersoptional | array of string | Known officers/directors — each is individually screened. max 20 items |
| aiModeoptional | string | Send "off" to forbid all LLM processing for this request. An account-level setting can also turn AI off; a request can never turn it back on. one of "on", "off" · default "on" |
| cageCodeoptional | string | CAGE code. With uei, it lets the SAM.gov federal exclusions list be matched exactly instead of by name. max length 10 |
Response fields
| Field | Type | Description |
|---|---|---|
| success | boolean | |
| data | object | |
| data.id | string | Unique assessment ID |
| data.entityType | string | |
| data.entityName | string | |
| data.score | integer | Composite risk score |
| data.band | string | Risk band |
| data.categoryScores | array of object | |
| data.categoryScores[].category | string | |
| data.categoryScores[].score | integer | |
| data.categoryScores[].factorCount | integer | |
| data.factors | array of object | |
| data.factors[].factorCode | string | Unique factor identifier (e.g. BIZ_SAM_DEBARMENT) |
| data.factors[].factorName | string | |
| data.factors[].category | string | |
| data.factors[].points | integer | Points contributed to score (after confidence adjustment) |
| data.factors[].maxPoints | integer | |
| data.factors[].severity | string | |
| data.factors[].description | string | |
| data.factors[].source | string | |
| data.factors[].sourceUrl | string | |
| data.factors[].accusationOnly | boolean | True if this is an allegation, not a confirmed finding |
| data.factors[].matchConfidence | string | Entity disambiguation confidence for this match |
| data.factors[].confidenceScore | integer | Numeric confidence score (0–100) |
| data.factors[].confidenceReasons | array of string | Reasons for the confidence level |
| data.summary | object | |
| data.summary.executiveSummary | string | |
| data.summary.keyFindings | array of string | |
| data.summary.riskNarrative | string | |
| data.summary.mitigatingFactors | array of string | |
| data.summary.recommendedActions | array of string | |
| data.summary.confidence | number | |
| data.summary.model | string | |
| data.entityResolution | object | Entity disambiguation metadata showing how confidently the API resolved the input to real-world entities. |
| data.entityResolution.confidence | string | Overall entity resolution confidence based on identifiers provided |
| data.entityResolution.identifierCount | integer | Number of identifying fields provided |
| data.entityResolution.identifiersProvided | array of string | Which identifiers were supplied (e.g. country, ein, dateOfBirth) |
| data.entityResolution.identifiersMissing | array of string | Which recommended identifiers were not supplied |
| data.entityResolution.warnings | array of string | Warnings when input is too thin for reliable resolution |
| data.meta | object | |
| data.meta.dataSourcesUsed | array of string | |
| data.meta.processingTimeMs | integer | |
| data.meta.scoredAt | string | |
| data.meta.disclaimer | string |
Fields are read from a real response captured 2026-11-04, shortened. Optional fields may be absent in other responses.
Errors
- 400 invalid request
- 401 missing or bad key
- 403 not in your plan
- 429 rate limited, see Retry-After
- 402 payment required
- 5xx retry with backoff
Error bodies and codes are described in Error codes and troubleshooting.