Entity resolution
Get status of deep research request
/v2/entity-resolution/status/{request_id} Retrieve the status and result of an async deep research request. Poll every 5-10 seconds. Polls are free.
Returns 202 while PENDING, and 200 once the job is terminal — COMPLETED or
FAILED. A failure is reported in the body with HTTP 200, not as an error status.
COMPLETED does not mean a match was found. Branch on whether data.entity or
data.candidate is populated — they are never both set, and on no_match / not_found
neither is.
See also: Handling responses · Confidence and explainability · Batch processing
Path parameters
request_idstring requiredID of the resolution request
Responses
200 The job is terminal. `status` is `COMPLETED` or `FAILED` — both return 200.
request_idstring requiredstatusstring (enum) requiredPENDINGCOMPLETEDFAILEDJob lifecycle state.
PENDING— still researching; HTTP 202,dataisnullCOMPLETED— finished; readdata.statusfor the outcomeFAILED— did not complete;dataisnulland the request is refunded
dataobjectThe resolution result.nullwhilePENDINGand onFAILED.Show 10 nested fieldsHide nested fields
request_idstringThe request ID for this API callstatusstring (enum)matchedpartial_matchinconclusiveno_matchnot_foundOutcome of the resolution. Distinct from the job lifecycle
statuson the polling envelope — aCOMPLETEDjob carryingno_matchis still a successful call.matched- confidence 80 or above;entityis populatedpartial_match- resolved to a known business, confidence below 80;entityis populatedinconclusive- multiple possible matches, or an entity type not fully supported;candidatemay hold a best guessno_match- no matches found; bothentityandcandidatearenullnot_found- the query did not correspond to a resolvable business; bothentityandcandidatearenull
entityandcandidateare never both populated, but they can both benull— that is how "we found nothing" is represented. Always handle the neither-present case.typestring (enum)businessnonprofitgovernmentpersonotherunknownThe entity type. Currently the system only fully supports "business" types. Other types may be identified but will be returned as candidates only.subtypestring (enum)Show 9 possible valuesHide possible values
incorporated_entityunincorporated_entitynonprofit_entitygovernment_entitynatural_personcomplex_business_structuretrading_name_onlyother_entityunknownThe entity subtype. Currently the system only fully supports "incorporated_entity" subtypes. Other subtypes (like "unincorporated_entity", "government", "fund") will be returned as candidates only.confidenceintegerThe confidence score of the match (0-100). Higher scores generally correspond to entity records, while lower scores correspond to candidates.entityobjectThe matched entity details. This field is populated only for high-confidence matches of supported entity types. Will be null when the candidate field is populated. Currently only entities of type "business" and subtype "incorporated_entity" will have this field populated.Show 8 nested fieldsHide nested fields
idstringnamestringstatusstring (enum)activeinactivewebsitestringdescriptionstringheadquartersobjectShow 6 nested fieldsHide nested fields
citystringstatestringaddressstringcountrystringstate_codestringcountry_codestring
matching_branchobjectShow 5 nested fieldsHide nested fields
notesstringaddressstringstate_codestringcountry_codestringjurisdictionstring
primary_legal_entityobjectShow 5 nested fieldsHide nested fields
idstringnamestringstate_codestringcountry_codestringjurisdictionstring
candidateobjectBest matching candidate when no high-confidence match exists, or when the entity type is not fully supported yet. This field is populated when the entity field is null. This happens when:
- The confidence is too low to create a definitive record
- The entity type or subtype is not fully supported yet (e.g., unincorporated entities, governments, funds)
Show 6 nested fieldsHide nested fields
namestringlegal_namestringjurisdictionstringstatusstring (enum)activeinactivedescriptionstringprimary_addressobjectShow 3 nested fieldsHide nested fields
full_addressstringstate_codestringcountry_codestring
factorsarray<object>Factors contributing to the match decisionShow 4 nested fieldsHide nested fields
codestringtypestring (enum)strengthlimitationimpactstringdescriptionstring
actionsarray<object>Suggested actions for the userShow 2 nested fieldsHide nested fields
codestringdescriptionstring
metadataobjectAdditional information about the requestShow 5 nested fieldsHide nested fields
queryobjectShow 5 nested fieldsHide nested fields
modestringnamestringcontextstringlocationstringclassificationstring
from_cachebooleanWhether the resolution engine answered from its query cache instead of running fresh research. Specific to the research layer, not a general "response was cached" flag.updated_atstring <date-time>resolved_atstring <date-time>cache_hit_typestring (enum)exactsimilardomain_cacheHow the cache was hit when
from_cacheis true;nullotherwise.exact- the same query was resolved beforesimilar- a semantically equivalent query was reuseddomain_cache- answered from a previous domain lookup
202 Still processing. `status` is `PENDING`, `data` is `null`. Keep polling.
request_idstring requiredstatusstring (enum) requiredPENDINGCOMPLETEDFAILEDJob lifecycle state.
PENDING— still researching; HTTP 202,dataisnullCOMPLETED— finished; readdata.statusfor the outcomeFAILED— did not complete;dataisnulland the request is refunded
dataobjectThe resolution result.nullwhilePENDINGand onFAILED.Show 10 nested fieldsHide nested fields
request_idstringThe request ID for this API callstatusstring (enum)matchedpartial_matchinconclusiveno_matchnot_foundOutcome of the resolution. Distinct from the job lifecycle
statuson the polling envelope — aCOMPLETEDjob carryingno_matchis still a successful call.matched- confidence 80 or above;entityis populatedpartial_match- resolved to a known business, confidence below 80;entityis populatedinconclusive- multiple possible matches, or an entity type not fully supported;candidatemay hold a best guessno_match- no matches found; bothentityandcandidatearenullnot_found- the query did not correspond to a resolvable business; bothentityandcandidatearenull
entityandcandidateare never both populated, but they can both benull— that is how "we found nothing" is represented. Always handle the neither-present case.typestring (enum)businessnonprofitgovernmentpersonotherunknownThe entity type. Currently the system only fully supports "business" types. Other types may be identified but will be returned as candidates only.subtypestring (enum)Show 9 possible valuesHide possible values
incorporated_entityunincorporated_entitynonprofit_entitygovernment_entitynatural_personcomplex_business_structuretrading_name_onlyother_entityunknownThe entity subtype. Currently the system only fully supports "incorporated_entity" subtypes. Other subtypes (like "unincorporated_entity", "government", "fund") will be returned as candidates only.confidenceintegerThe confidence score of the match (0-100). Higher scores generally correspond to entity records, while lower scores correspond to candidates.entityobjectThe matched entity details. This field is populated only for high-confidence matches of supported entity types. Will be null when the candidate field is populated. Currently only entities of type "business" and subtype "incorporated_entity" will have this field populated.Show 8 nested fieldsHide nested fields
idstringnamestringstatusstring (enum)activeinactivewebsitestringdescriptionstringheadquartersobjectShow 6 nested fieldsHide nested fields
citystringstatestringaddressstringcountrystringstate_codestringcountry_codestring
matching_branchobjectShow 5 nested fieldsHide nested fields
notesstringaddressstringstate_codestringcountry_codestringjurisdictionstring
primary_legal_entityobjectShow 5 nested fieldsHide nested fields
idstringnamestringstate_codestringcountry_codestringjurisdictionstring
candidateobjectBest matching candidate when no high-confidence match exists, or when the entity type is not fully supported yet. This field is populated when the entity field is null. This happens when:
- The confidence is too low to create a definitive record
- The entity type or subtype is not fully supported yet (e.g., unincorporated entities, governments, funds)
Show 6 nested fieldsHide nested fields
namestringlegal_namestringjurisdictionstringstatusstring (enum)activeinactivedescriptionstringprimary_addressobjectShow 3 nested fieldsHide nested fields
full_addressstringstate_codestringcountry_codestring
factorsarray<object>Factors contributing to the match decisionShow 4 nested fieldsHide nested fields
codestringtypestring (enum)strengthlimitationimpactstringdescriptionstring
actionsarray<object>Suggested actions for the userShow 2 nested fieldsHide nested fields
codestringdescriptionstring
metadataobjectAdditional information about the requestShow 5 nested fieldsHide nested fields
queryobjectShow 5 nested fieldsHide nested fields
modestringnamestringcontextstringlocationstringclassificationstring
from_cachebooleanWhether the resolution engine answered from its query cache instead of running fresh research. Specific to the research layer, not a general "response was cached" flag.updated_atstring <date-time>resolved_atstring <date-time>cache_hit_typestring (enum)exactsimilardomain_cacheHow the cache was hit when
from_cacheis true;nullotherwise.exact- the same query was resolved beforesimilar- a semantically equivalent query was reuseddomain_cache- answered from a previous domain lookup
400 Bad Request
errorobjectAn error object.Show 2 nested fieldsHide nested fields
messagestringThe error messagetypestringThe error code
401 Unauthorized
messagestringThe error object.request_idstringThe request ID for the error.
404 No such `request_id` for this account. IDs are account-scoped, so another account's `request_id` returns 404 rather than revealing that it exists. A malformed `request_id` returns 500, not 404.
errorobjectAn error object.Show 2 nested fieldsHide nested fields
messagestringThe error messagetypestringThe error code
429 Rate limit exceeded — 600 requests/minute per account on this endpoint. See [rate limits](/docs/rate-limits).
messagestringThe error message
500 Internal Server Error
errorobjectAn error object.Show 2 nested fieldsHide nested fields
messagestringThe error messagetypestringThe error code
504 Gateway Timeout — retry the poll with backoff.
errorobjectAn error object.Show 2 nested fieldsHide nested fields
messagestringThe error messagetypestringThe error code
Example request
curl --request GET \
--url 'https://api.savvyiq.ai/v2/entity-resolution/status/reqa_2ZUKmavJxCx4GHMnpJsc9' \
--header 'apikey: YOUR_API_KEY' Example response
{
"request_id": "reqa_2ZUKmavJxCx4GHMnpJsc9",
"status": "COMPLETED",
"data": {
"status": "matched",
"confidence": 98,
"type": "business",
"subtype": "incorporated_entity",
"entity": {
"id": "siq_2ZUKocPbFCPLClZ5XtHlJ",
"name": "Apple",
"status": "active",
"website": "apple.com",
"description": "Designs, develops, and sells consumer electronics, computer software, and online services.",
"headquarters": {
"city": "Cupertino",
"state": "California",
"address": "ONE APPLE PARK WAY",
"country": "United States",
"state_code": "CA",
"country_code": "US"
},
"primary_legal_entity": {
"id": "le_2ZoRp6I3EUgebkUBHaDdk",
"name": "APPLE INC.",
"state_code": null,
"country_code": "US",
"jurisdiction": "California"
},
"matching_branch": {
"notes": "Headquarters is located in California",
"address": "ONE APPLE PARK WAY, CUPERTINO, CA, 95014, United States",
"state_code": "CA",
"country_code": "US",
"jurisdiction": "California"
}
},
"candidate": null,
"factors": [
{
"code": "name_close_match",
"type": "strength",
"impact": "High confidence that this is the correct entity due to brand recognition.",
"description": "The provided name 'Apple Inc.' closely matches the legal entity name 'Apple'. While not an exact match, the common usage of 'Apple' for 'Apple Inc.' makes this a strong indicator."
},
{
"code": "jurisdiction_match",
"type": "strength",
"impact": "Confirms this is the primary legal entity location.",
"description": "The provided location 'California, US' matches the entity's registered jurisdiction."
},
{
"code": "multiple_sources_corroboration",
"type": "strength",
"impact": "Very high confidence due to broad confirmation across sources.",
"description": "Multiple authoritative sources confirm this entity's details, increasing the confidence in the match."
},
{
"code": "legal_entity_confirmed",
"type": "strength",
"impact": "This ensures that the result is a properly registered business",
"description": "A valid legal entity was confirmed through official sources"
}
],
"actions": [],
"metadata": {
"query": {
"mode": "standard",
"name": "Apple Inc.",
"context": null,
"location": "California, US",
"classification": "specific"
},
"from_cache": false,
"updated_at": "2025-05-14T22:02:02.819Z",
"resolved_at": "2025-05-14T22:02:05.343Z",
"cache_hit_type": null
}
}
}