---
title: "Plan and execute a bounded economic investigation over existing governed OEX evidence. No hosted model is invoked and no prose conclusion is generated."
method: POST
path: "/api/v1/investigate"
---

# Plan and execute a bounded economic investigation over existing governed OEX evidence. No hosted model is invoked and no prose conclusion is generated.

`POST /api/v1/investigate`

## Request

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

The response exposes deterministic intent classification, exact entity resolution, every selected graph/data call, nested evidence envelopes, citations, limitations, and the synthesis contract. Questions are request-scoped, no-store, and should not contain personal or confidential information. retrievalStatus describes resource retrieval, not answerability. An exact registered catalogue question is evidence_ready only when its governed resolution is answered and retrieval is complete; unknown decisive evidence gives awaiting_evidence, a conditional or disputed answer is partial, and successful free-form retrieval is evidence_available (answerability not established). activeInquiries identifies exact catalogue matches. evidenceAssessment.whatWouldChangeAssessment includes public evidence requirements.

## Request body

- object
  - `question` string, required
  - `entities` object[]
    - `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', required
    - `id` string, required
  - `minimumConfidence` 'A' | 'B' | 'C' | 'D'
  - `depth` integer
  - `maxEvidenceCalls` integer

## Response `200`

A no-store deterministic plan and citation-ready evidence bundle.

- 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`: Invalid question, entity hint, confidence, depth, or call budget.
- `405`: Use POST so the question is not placed in the URL.

---

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