---
title: "Read one purchase as its buyer: never the seller's run"
method: GET
path: "/v1/purchases/{id}"
tags: ["runs", "paid-invocations"]
---

# Read one purchase as its buyer: never the seller's run

`GET /v1/purchases/{id}`

## Request

- Base URL: `https://api.runx.ai`
- URL: `https://api.runx.ai/v1/purchases/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Runx-Purchaser-Key`

Read by the account that bought it, or by a request the purchaser key that owns it signed. A purchase lists what it holds; a held value never appears.

## Path parameters

- `id` string, required

## Headers

- `X-Runx-Purchaser-Signature` string
- `X-Runx-Purchaser-Issued-At` string

## Response `200`

Purchase.

- RunxPurchase
  - `balance_micro` integer
  - `failure` object
    - `code` string, required
    - `message` string, required
  - `holds` object[]
    - `connector` string, required
    - `credential` string, required
    - `expires_at` string, required
    - `target` string, required
    - `value_digest` string, required
  - `invocation` object, required
    - `accepted_settlement_families` string[], required
    - `amount_minor` integer, required
    - `canonicalizer_version` 'runx.receipt.c14n.v1', required
    - `counterparty` object, required
      - `label` string
      - `locator` string
      - `observed_at` string
      - `proof_kind` 'effect_evidence' | 'effect_finality' | 'credential_resolution'
      - `provider` string
      - `type` 'thread' | 'comment' | 'event' | 'tracking_item' | 'change_request' | 'repository' | 'signal' | 'run' | 'act' | 'receipt' | 'artifact' | 'verification' | 'harness' | 'host' | 'surface' | 'target' | 'skill_binding' | 'principal' | 'scope_admission' | 'grant' | 'mandate' | 'credential' | 'webhook_delivery' | 'redaction_policy' | 'external_url' | 'connector_instance' | 'connector_operation', required
      - `uri` string, required
    - `created_at` string, required
    - `currency` string, required
    - `execution_ref` object
      - `label` string
      - `locator` string
      - `observed_at` string
      - `proof_kind` 'effect_evidence' | 'effect_finality' | 'credential_resolution'
      - `provider` string
      - `type` 'thread' | 'comment' | 'event' | 'tracking_item' | 'change_request' | 'repository' | 'signal' | 'run' | 'act' | 'receipt' | 'artifact' | 'verification' | 'harness' | 'host' | 'surface' | 'target' | 'skill_binding' | 'principal' | 'scope_admission' | 'grant' | 'mandate' | 'credential' | 'webhook_delivery' | 'redaction_policy' | 'external_url' | 'connector_instance' | 'connector_operation', required
      - `uri` string, required
    - `execution_state` 'unstarted' | 'queued' | 'running' | 'waiting_external' | 'cancelling' | 'succeeded' | 'failed' | 'cancelled', required
    - `expires_at` string, required
    - `external_job_ref` object
      - `label` string
      - `locator` string
      - `observed_at` string
      - `proof_kind` 'effect_evidence' | 'effect_finality' | 'credential_resolution'
      - `provider` string
      - `type` 'thread' | 'comment' | 'event' | 'tracking_item' | 'change_request' | 'repository' | 'signal' | 'run' | 'act' | 'receipt' | 'artifact' | 'verification' | 'harness' | 'host' | 'surface' | 'target' | 'skill_binding' | 'principal' | 'scope_admission' | 'grant' | 'mandate' | 'credential' | 'webhook_delivery' | 'redaction_policy' | 'external_url' | 'connector_instance' | 'connector_operation', required
      - `uri` string, required
    - `idempotency` object, required
      - `binding_digest` string, required
      - `key` string, required
    - `input_digest` string, required
    - `invocation_id` string, required
    - `offer_revision` object, required
      - `input_schema_digest` string, required
      - `offer_id` string, required
      - `output_schema_digest` string, required
      - `revision` string, required
      - `revision_digest` string, required
    - `outcome_gate` 'open' | 'fulfilment_won' | 'refund_won', required
    - `package_digest` string, required
    - `payment_ref` object
      - `label` string
      - `locator` string
      - `observed_at` string
      - `proof_kind` 'effect_evidence' | 'effect_finality' | 'credential_resolution'
      - `provider` string
      - `type` 'thread' | 'comment' | 'event' | 'tracking_item' | 'change_request' | 'repository' | 'signal' | 'run' | 'act' | 'receipt' | 'artifact' | 'verification' | 'harness' | 'host' | 'surface' | 'target' | 'skill_binding' | 'principal' | 'scope_admission' | 'grant' | 'mandate' | 'credential' | 'webhook_delivery' | 'redaction_policy' | 'external_url' | 'connector_instance' | 'connector_operation', required
      - `uri` string, required
    - `payment_state` 'unpaid' | 'settling' | 'settled' | 'refunded', required
    - `principal` object, required
      - `label` string
      - `locator` string
      - `observed_at` string
      - `proof_kind` 'effect_evidence' | 'effect_finality' | 'credential_resolution'
      - `provider` string
      - `type` 'principal', required
      - `uri` string, required
    - `purchaser_key` string
    - `settlement_family` string
    - `updated_at` string, required
    - `vendor_ref` object, required
      - `label` string
      - `locator` string
      - `observed_at` string
      - `proof_kind` 'effect_evidence' | 'effect_finality' | 'credential_resolution'
      - `provider` string
      - `type` 'principal', required
      - `uri` string, required
  - `receipt` object
  - `result` unknown

## Other responses

- `401`: Unauthorized, or a signature that is not the key's, here and now.
- `404`: Purchase not found.

---

[API](https://skmtc.dev/runx/apis/runx-hosted-api.md) · [All operations](https://skmtc.dev/runx/apis/runx-hosted-api/llms.txt) · [OpenAPI document](https://skmtc.dev/runx/apis/runx-hosted-api/revisions/6c940d8edacc?raw)
