null rather than being omitted. The one exception is matchSelection, which is omitted entirely unless match selection ran for the search.
Top-level shape
meta
Metadata about the search itself. Your original query is nested under submitted.
completed-with-errors means at least one data source succeeded. Check the
errors object to see which sources failed.businesses
An array of business registry matches, sorted by match confidence.
regulatory
Flat arrays of regulatory registry matches. Empty arrays when no matches are found.
Each item includes
legalName ({name, matchScore}), match (the aggregate identity score, same shape as businesses[].match), alternateNames, registrationNumber, status, addresses, and a details object of registry-specific fields. See Regulatory registry for per-registry examples.
sanctions
Always present in the response. null when sanctionsScreening is false. When enabled, an object with query, totalMatches, and matches. See Sanctions screening for full documentation.
This describes the
sanctions field within a search response. For the standalone POST /sanctions endpoint, which has its own meta, results, and errors structure, see Standalone screening.website
Always present in the response. null when websiteAnalysis is false and no website URL was provided.
See Website analysis for full field documentation.
errors
Always present in the response. null when all sources succeeded. The search can still succeed (completed-with-errors) even if some sources fail.
errors is null when every source succeeded. Otherwise all five keys are present and the sources that succeeded are null — so branch on each key’s value, not on whether the key exists. general carries a search-wide failure not tied to one source (a timeout, or an unexpected error); when it is set, meta.status is error.
See Error handling for the full list of error codes.
matchSelection
Which entry in businesses the search resolved to. Present only when match selection ran — set matchSelection: true on the request, or enable it in your account’s search settings. Omitted entirely otherwise.
statusUrl and selectionUrl are paths, not absolute URLs. Resolve them
against the API host — https://api.getcurrent.ca accepts them as-is.needs_review when a plausible result exists but none clears your account’s auto-select confidence, when the top result’s registry status isn’t one you allow, or when the top two results tie — Current won’t guess between equals. It lands in no_match_found when no result clears the no-match floor (or the search returned nothing).
Resolving a search
Pick the right entry frombusinesses and POST its matchId:
matchId that isn’t part of this search returns 400 MATCH_NOT_FOUND.
Or mark the search as not proceeding — when none of the results is the entity, or the only hit is one you won’t use (say, an inactive entity you’ll go back to the customer about). POST a status instead of a matchId:
matchId later (for example after the customer sends updated information and you re-run the search) to pick a result.