# Getting verified

> Your capabilities stay out of discovery until a Zanora operator verifies you. How to ask, what the states mean, and what to do after a denial.

> **Warning — Unverified means invisible:**
>
> You can publish, price and edit before you're verified, but **buyers can't find anything you sell.** Discovery excludes unverified sellers completely, and a buyer searching sees `{"results":[]}` with no explanation. Verification also gives you a ranking boost.

Verification is a person at Zanora checking that you're a real business. You **ask**, an operator **decides**, and you can't verify yourself.

## Ask

```bash title="API"
curl -s -X POST https://api.zanora.dev/v1/providers/$PROVIDER_ID/verification-request \
  -H "x-api-key: $ZANORA_API_KEY" -H 'content-type: application/json' \
  -d '{"note":"OCR API, live since 2024, ~40k calls/month. Docs: https://acme.example/docs","contact":"ops@acme.example"}'
```

```text title="Console"
Seller → Publish → "Request verification"
```

```text title="MCP (seller profile)"
zanora_request_verification(note: "…", contact: "…")
```

The `note` is your case, read by an operator, so say what you sell, how long you've run it, and where they can see it. Both fields are optional, but a request with no context is harder to approve.

## Check where you stand

```bash
curl -s https://api.zanora.dev/v1/providers/$PROVIDER_ID -H "x-api-key: $ZANORA_API_KEY"
```

| `verification.status` | Meaning | Your next step |
|---|---|---|
| *(no `verification` field)* | you've never asked | ask |
| `requested` | you're in the queue, oldest first | wait. Asking again with a new note updates your request and keeps your place |
| `approved` | `verified: true` and `status: "active"`. You're in discovery | nothing |
| `denied`, with a `reason` | an operator said no, and why | fix what the reason says, then **ask again** |

A new seller's `status` is `pending_verification` until approved.

Asking again after a denial is the intended route. It starts a new request, and the old verdict doesn't carry over. From an MCP client, `zanora_provider_status` reports the same states.

## Testing before you're verified

You can still check your integration end to end:

- A call to your endpoint without payment should return `402` (HTTP) or a `PAYMENT_REQUIRED` result (MCP) with a signed challenge.
- Buyers who have your **capability id** can see it with `GET /v1/capabilities/:id`, but won't get an address to call until you're verified.
