SavvyIQ

Getting started

Understanding API responses

Response structure

{
  "request_id": "req_2ZUKocPbFCPLClZ5XtHlJ",
  "status": "matched",
  "confidence": 95,
  "type": "business",
  "subtype": "incorporated_entity",
  "entity": { /* the resolved record */ },
  "candidate": null,
  "factors": [ /* why we decided that */ ],
  "actions": [ /* how to improve the query */ ],
  "metadata": { /* request context */ }
}
FieldTypeDescription
statusstringOutcome: matched, partial_match, inconclusive, no_match, not_found
confidenceinteger0-100
typestringEntity type, e.g. business or government
subtypestringLegal structure, e.g. incorporated_entity or unincorporated_entity
entityobject|nullThe resolved record
candidateobject|nullBest available hypothesis
factorsarrayDecision reasoning and evidence
actionsarraySuggestions for improving results

Entity or candidate

entity and candidate are never both populated, and both are null when nothing matched. Branch on which one is non-null. Do not branch on confidence.

statusPopulated
matched, confidence 80 or aboveentity
partial_match, resolved to a known business with confidence below 80entity
inconclusive, no record could be committedcandidate, if we formed one
no_match, research finished and found nothingneither
not_found, research did not completeneither

partial_match returns a full entity below 80, so a confidence >= 80 test silently discards valid records. Handle the neither-present case too. That is how “we found nothing” is represented.

no_match and not_found differ. no_match is an answer. not_found means the research did not finish, so it is worth retrying rather than recording as a negative result, and it also returns type and subtype as null. It appears on the streaming endpoint; the async endpoint reports the same condition as a FAILED job on the status route.

An entity has a stable id you can reuse. A candidate has no id at all. See Entities and candidates.

Entity example

{
  "status": "matched",
  "confidence": 95,
  "type": "business",
  "subtype": "incorporated_entity",
  "entity": {
    "id": "siq_2ZUKocPbFCPLClZ5XtHlJ",
    "name": "Apple",
    "status": "active",
    "website": "apple.com",
    "headquarters": {
      "city": "Cupertino",
      "state": "California",
      "country": "United States"
    },
    "primary_legal_entity": {
      "id": "le_2ZoRp6I3EUgebkUBHaDdk",
      "name": "APPLE INC.",
      "jurisdiction": "California"
    }
  },
  "candidate": null
}

Candidate example

{
  "status": "inconclusive",
  "confidence": 40,
  "type": "business",
  "subtype": "trading_name_only",
  "entity": null,
  "candidate": {
    "name": "Local Coffee Shop",
    "legal_name": null,
    "jurisdiction": "US-CA",
    "primary_address": {
      "full_address": "123 Main St, Anytown, CA 94000",
      "state_code": "CA",
      "country_code": "US"
    }
  }
}

Factors

Each factor is a strength (evidence supporting the match) or a limitation (a concern that reduced confidence). Factors for Apple in cupertino, california, usa:

"factors": [
    {
        "type": "strength",
        "code": "name_exact_match",
        "description": "The provided name 'Apple' exactly matches the legal entity name 'Apple'",
        "impact": "Strong identifier for the correct entity."
    },
    {
        "type": "strength",
        "code": "jurisdiction_match",
        "description": "The entity's jurisdiction (California) matches the query's location (Cupertino, California).",
        "impact": "Confirms the entity operates within the specified jurisdiction."
    },
    {
        "type": "strength",
        "code": "headquarters_match",
        "description": "The provided location 'Cupertino, California' matches the entity's registered headquarters.",
        "impact": "Confirms this is the primary legal entity location"
    },
    {
        "type": "strength",
        "code": "legal_entity_confirmed",
        "description": "A valid legal entity was confirmed through official sources.",
        "impact": "Verifies the legal existence and status of the matched entity."
    }
],

Actions

What to change about the query when confidence is lower than you need. Actions for Mircon Consulting, a generic name given with an outdated address:

"actions": [
    {
        "code": "provide_full_legal_name",
        "description": "Use the complete legal name, including any legal suffixes (e.g., Inc., Ltd., Corp.)"
    },
    {
        "code": "verify_address_details",
        "description": "Double-check the accuracy of the address, including street number, street name, city, and postal code."
    },
    {
        "code": "check_entity_status",
        "description": "Confirm whether the entity is currently active. If it is inactive, provide information about when it was active if available."
    }
],

Factor and action codes are listed in Confidence scoring.