# Inspect

```text
POST /v1/inspect
```

The contract for one capability: input schema, output fields, the providers behind it, exact prices and billing conditions. Free. Always inspect (and surface the price) before a billable run.

## Request

```json
{"capability": "contact.find"}
```

Unknown capabilities return `capability_not_found` (404).

## Response

```json
{
  "capability": "contact.find",
  "title": "Find a work email",
  "category": "contact",
  "status": "live",
  "sandbox": true,
  "description": "...",
  "input_schema": {"...": "..."},
  "output_fields": ["email", "confidence", "..."],
  "billing": {"...": "unmatched lookups are not billed"},
  "providers": ["...", "..."],
  "live_providers": ["..."],
  "platforms": ["..."],
  "offers": [ {"...": "one entry per provider, see below"} ],
  "starting_price": {"amount": "0.05", "currency": "USD"}
}
```

## Offers

Each entry in `offers` is one provider's version of the capability:

| Field | Notes |
| --- | --- |
| `provider` | provider slug |
| `executable` | whether routing will consider it right now (in production: live adapter required) |
| `wired` | a real adapter exists for this provider and capability |
| `verified` | the price is a measured margin over provider cost, not a published-rate estimate |
| `platforms` | platforms this offer covers (for social and ads capabilities) |
| `price` | `{amount, currency, note}`: the note says how the price was set |
| `pricing` | when metered: `base` plus `per_result` (and `default_limit`), or `by_platform` variants |
| `metrics` | measured `success_rate`, `latency_ms_p50` and `sample_size` over the recent window |
| `requires_byok` | this provider only runs through [your own key](/docs/api/connections) |
| `connected` | your organization has an active BYOK connection for it |

## Billing conditions

`billing` states when a call is charged: some capabilities bill per call, some only bill on a match, metered ones bill base plus per-result. The [run](/docs/api/run) endpoint enforces exactly what inspect stated; an unbilled no-match releases the reservation and, on auto routing, falls through to the next provider.
