---
title: "Resolve separately consented controlled intent after an observed handoff"
method: POST
path: "/provider/action-tickets/resolve"
---

# Resolve separately consented controlled intent after an observed handoff

`POST /provider/action-tickets/resolve`

Read-only claim-scoped provider resolution. The body accepts only the exact signed attribution bearer. Resolution is available only after an NHS-observed handoff that included the separate nhs-provider-controlled-intent-disclosure-consent-v1 attestation. It returns only the controlled topic, optional region code, USD budget band, urgency, allowlisted requirement flags, and opaque binding metadata. It returns no query, search receipt, identity, contact, network, action URL, price, accounting data, charge, outcome, or commercial proof. Resolver access is free and does not change organic rank or readiness.

## Request body

- ProviderControlledIntentResolveRequest — Exact attribution bearer only. Ticket IDs, queries, contact fields, notes, and arbitrary context are not accepted.
  - `attribution_token` string, required — Exact signed bearer returned during ticket preparation and presented during the observed handoff

## Response `200`

Exact separately consented controlled-intent bundle; no charge or proof created

- ProviderControlledIntentResolution — Free read-only provider view authorized separately after an observed handoff. No query, search receipt, identity, contact, network, action URL, pricing, accounting, outcome, or proof fields are returned.
  - `resolver_contract_version` 'nhs-provider-controlled-intent-resolver-v1', required
  - `ticket_id` string, uuid, required
  - `offer_id` string, uuid, required
  - `offer_version` integer, required
  - `action_type` 'lead' | 'demo' | 'trial' | 'signup' | 'purchase' | 'quote' | 'application' | 'booking', required
  - `controlled_intent` ProviderControlledIntent, required
    - `demand_topic` 'payments' | 'commerce' | 'jobs' | 'data' | 'search' | 'weather' | 'maps' | 'email' | 'messaging' | 'image' | 'video' | 'audio' | 'documents' | 'security' | 'finance' | 'health' | 'education' | 'news' | 'analytics' | 'automation' | 'productivity' | 'identity' | 'storage' | 'ai-tools' | 'developer-tools' | 'other', required
    - `region_code` string
    - `budget_band` 'unspecified' | 'under_100' | '100_499' | '500_1999' | '2000_plus', required
    - `urgency` 'unspecified' | 'now' | '7_days' | '30_days' | 'researching', required
    - `requirement_flags` string[], required
  - `observed_at` string, date-time, required
  - `intent_available_until` string, date-time, required
  - `consent_version` 'nhs-provider-controlled-intent-disclosure-consent-v1', required

## Other responses

- `400` — Malformed
- `401` — Valid active claim-scoped provider key required
- `404` — Consented controlled intent unavailable; wrong claim
- `410` — Correctly signed attribution bearer expired
- `429` — Temporary provider resolver safety limit exceeded
- `503` — Provider exchange

---

[API](https://skmtc.net/nothumansearch/apis/not-human-search-api.md) · [All operations](https://skmtc.net/nothumansearch/apis/not-human-search-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nothumansearch/not-human-search-api/revisions/129e69d16c7f/schema)
