---
title: "Record caller-attested principal interest in one controlled next step"
method: POST
path: "/action-interests"
---

# Record caller-attested principal interest in one controlled next step

`POST /action-interests`

Creates a private, query-free Stage 1 demand receipt bound to an exact returned organic domain. It expires with the source search, no later than 30 days after that search. It does not contact the provider, create an action ticket or charge, affect organic rank or readiness score, or count as commercial proof. The caller attests current principal interest under the exact wording at https://nothumansearch.ai/privacy#action-interest-v1; NHS does not verify identity, agency, or legal authority.

## Request body

- ActionInterestRequest
  - `search_id` string, required — Committed query-free organic search receipt
  - `domain` string, required — Bare domain present in the referenced organic results; schemes
  - `action_type` 'quote' | 'trial' | 'demo' | 'booking' | 'application' | 'signup' | 'purchase', required
  - `caller_attests_principal_interest` true, required — Caller attests current human/company principal interest; this is not authority to contact the provider
  - `confirmation_version` 'nhs-action-interest-v1', required

## Response `200`

Exact idempotent replay of the existing receipt

- ActionInterestResponse
  - `receipt` ActionInterestReceipt, required — Provider-independent Stage 1 demand receipt; not a provider request, action ticket, charge, outcome, or commercial proof
    - `id` string
    - `search_id` string
    - `domain` string
    - `action_type` 'quote' | 'trial' | 'demo' | 'booking' | 'application' | 'signup' | 'purchase'
    - `surface` 'rest' | 'mcp' | 'web' | 'unknown'
    - `caller_attests_principal_interest` true
    - `confirmation_version` 'nhs-action-interest-v1'
    - `created_at` string, date-time
    - `expires_at` string, date-time
    - `idempotent_replay` boolean
  - `created` boolean, required
  - `idempotent_replay` boolean, required
  - `provider_contacted` false, required
  - `row_level_shared_with_provider` false, required
  - `action_ticket_created` false, required
  - `charge_created` false, required
  - `provider_or_principal_charged` false, required
  - `commercial_proof` false, required
  - `organic_rank_affected` false, required
  - `rank_or_score_input` false, required
  - `retention_days` 30, required
  - `evidence_scope` string, required

## Other responses

- `201` — New provider-independent action-interest receipt
- `403` — Cross-origin browser mutation rejected; native agents without browser-origin headers remain supported
- `404` — Missing
- `409` — This search result already recorded a different controlled action
- `429` — Temporary free abuse limit exceeded

---

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