---
title: "Resolve a human name, alternate title, local slug, NOC code, SGC code, training program or governed source id to a canonical platform identity and its best follow-up resource. Businesses, employers, job postings, establishments and source observations are NOT enumerated here: they live in the knowledge graph and resolve by name through /api/v1/graph/query?entity=<name>. A zero-match response for one of those types carries guidance naming that endpoint, and is not evidence the record is absent."
method: GET
path: "/api/v1/entities/resolve"
---

# Resolve a human name, alternate title, local slug, NOC code, SGC code, training program or governed source id to a canonical platform identity and its best follow-up resource. Businesses, employers, job postings, establishments and source observations are NOT enumerated here: they live in the knowledge graph and resolve by name through /api/v1/graph/query?entity=<name>. A zero-match response for one of those types carries guidance naming that endpoint, and is not evidence the record is absent.

`GET /api/v1/entities/resolve`

## Request

- Base URL: `https://veilpoint.ca`
- URL: `https://veilpoint.ca/api/v1/entities/resolve`
- Auth: none declared

## Query parameters

- `q` string
- `type` 'occupation' | 'municipality' | 'geography' | 'sector' | 'training-program' | 'noc-unit-group' | 'data-source' | 'data-provider' | 'economic-region' | 'census-division' | 'trade-region' | 'naics-industry' | 'industrial-facility' | 'open-source-signal' | 'organization' | 'project' | 'procurement-notice' | 'product-or-service' | 'job-posting' | 'employer' | 'business-source-observation' | 'establishment' | 'business'
- `limit` integer

## Response `200`

The envelope described above.

- PublicEnvelope
  - `meta` object, required
    - `platform` 'VeilPoint Opportunity Exchange', required
    - `canonical` string, uri, required
    - `retrievedAt` string, date-time, required
    - `dataStatus` string, required
    - `evidence` EvidenceSummary, required
      - `status` 'published' | 'derived' | 'mixed' | 'placeholder', required
      - `truthState` 'preview' | 'snapshot' | 'measured_aggregate' | 'mixed' | 'live' | 'metadata', required
      - `scenarioType` 'preview_scenario' | 'published_snapshot' | 'measured_aggregate' | 'mixed_evidence' | 'actionable_record' | 'observed_hiring_signal' | 'platform_metadata', required
      - `recordType` string, required
      - `isActionable` boolean, required
      - `synthetic` boolean, required
      - `confidence` 'A' | 'B' | 'C' | 'D', nullable, required
      - `sourceKinds` string[], required
      - `asOf` string, date-time, nullable, required
      - `qualification` string, required
      - `assumptions` string[], required
    - `provenance` object
    - `citeAs` string, required
  - `data` object, required

## Other responses

- `304`: Not modified (If-None-Match matched the data ETag).
- `400`: Invalid parameter value, with an error naming the parameter.
- `404`: Unknown id or missing required parameter, with an error hint.
- `429`: Rate limited. Retry-After and the RateLimit-Limit / RateLimit-Remaining / RateLimit-Reset headers state when to resume.

---

[API](https://skmtc.dev/veilpoint/apis/veilpoint-opportunity-exchange-public-api.md) · [All operations](https://skmtc.dev/veilpoint/apis/veilpoint-opportunity-exchange-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/veilpoint/apis/veilpoint-opportunity-exchange-public-api/revisions/fa1381cfa886?raw)
