---
title: "The Economic Studio's evidence baseline for one published business and one published supply category: the business's public category declaration, and the official CanadaBuys notices whose requested categories overlap it."
method: POST
path: "/api/v1/studio/procurement"
---

# The Economic Studio's evidence baseline for one published business and one published supply category: the business's public category declaration, and the official CanadaBuys notices whose requested categories overlap it.

`POST /api/v1/studio/procurement`

## Request

- Base URL: `https://veilpoint.ca`
- URL: `https://veilpoint.ca/api/v1/studio/procurement`
- Auth: none declared

Read-only and no-store. The body carries exactly two identifiers; economic assumptions such as price, cost or volume are refused, because the Studio computes with them in the browser and they never reach the server. The response is the standard envelope: meta.dataStatus and meta.evidence state at the resource level whether a baseline was bound. Inside data, baseline.state, records[].reference.truthState and the limitations carry the detail. Category overlap is compatibility only. It establishes no eligibility, demand, award likelihood or supplier relationship, and an empty overlap is not evidence of absent demand.

## Request body

- object
  - `businessId` string, required
  - `categoryCode` string, required

## Response `200`

The envelope. data is a frozen evidence baseline (state available, missing, withheld, unavailable or unsupported) with its reason, records, compatibility findings and limitations.

- 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

- `400`: Not exactly one canonical business id and one eight-digit UNSPSC code.
- `413`: Body larger than 4 KB.

---

[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)
