POST/v1/verify

Verify a business

Confirm whether a business entity exists, is currently active, and is registered with the issuing authority. Name matching is fuzzy: punctuation, casing, and entity suffixes (LLC, Inc, Corp, Co, LP) are normalized automatically before comparison.

Request

POST /v1/verify
POST /api/v1/verify HTTP/1.1
Host: trustregistryapi.com
Authorization: Bearer tr_live_...
Content-Type: application/json

Body schema

FieldTypeRequiredDescription
business_namestring (1–255)yesLegal business name. Suffixes are normalized.
statestring (2-letter)yesUSPS state code, uppercased. See coverage.
registration_numberstring (max 64)noWhen supplied and matched, confidence is pinned to 0.99.
request body
{
  "business_name": "H-E-B LP",
  "state": "TX"
}

Response — 200 OK

matched response
{
  "verified": true,
  "status": "active",
  "business_name": "<canonical name from registry>",
  "entity_type": "<from registry, may be null>",
  "state": "TX",
  "registration_number": "<from registry, may be null>",
  "formation_date": "<ISO date, may be null>",
  "confidence_score": 0.97,
  "source": "Texas Comptroller — Active Franchise Tax Permit Holders",
  "data_source": "live_registry_ingestion",
  "trustregistry_id": "be_..."
}

Response fields

FieldTypeDescription
verifiedbooleantrue if a matching record exists and status is 'active'.
statusstringactive · inactive · dissolved · forfeited · pending · unknown · not_found · unsupported_state
business_namestringCanonical name as filed with the registry.
entity_typestringReported entity type (LLC, Corp, LP, etc.).
statestringUSPS 2-letter code.
registration_numberstringFiling / charter number assigned by the registry.
formation_datestring (ISO date)Date of formation / filing, when available.
confidence_scorenumber [0,1]Match confidence. See scoring rules below.
sourcestringAuthoritative source name.
trustregistry_idstringStable TrustRegistry ID — pass to /business/{id}.

Match resolution & confidence

confidence_score is a tiered match-quality indicator in [0, 1] — not a calibrated statistical probability. Read it as “how strong was the name/registration match”, not “the probability this business exists”.

  1. If registration_number is supplied and matches, returned with confidence_score = 0.99.
  2. Otherwise an exact normalized-name match returns with confidence_score ≈ 0.96.
  3. Otherwise a fuzzy candidate sweep runs; the best match above the similarity floor returns with a derived score in [0.5, 0.94].
  4. If nothing crosses the floor, the response has verified: false and status: "not_found".

Not-found response

200 OK · no match
{
  "verified": false,
  "status": "not_found",
  "business_name": "Nonexistent Corp",
  "state": "TX",
  "confidence_score": 0,
  "source": "Texas Comptroller — Active Franchise Tax Permit Holders",
  "data_source": "live_registry_ingestion",
  "message": "No matching entity found in the live Texas Comptroller registry ingestion."
}

Unsupported state

Requests for states that are not yet live return a structured response with status: "unsupported_state" and are not billed.

200 OK · unsupported
{
  "verified": false,
  "status": "unsupported_state",
  "state": "DE",
  "message": "Coverage for DE is not live yet. Texas (TX) is currently supported."
}

Errors

See Errors for the full envelope and code list.