---
title: "Full visa record, paid per request over x402 (no account, no API key)"
method: GET
path: "/api/x402/visa"
tags: ["Visa data"]
---

# Full visa record, paid per request over x402 (no account, no API key)

`GET /api/x402/visa`

Same record as `GET /api/v1/visa` on a Pro plan, but paid per call over the
x402 protocol instead of an API key: 0.03 USD in USDC on Base.

Call it once without payment and it answers **402** with a
`PAYMENT-REQUIRED` header describing the offer; an x402 client signs a
`TransferWithAuthorization` (EIP-3009) and repeats the call. The payer needs
USDC but no ETH — the facilitator submits the transaction and pays the gas.

Settlement happens only after the handler returns a response below 400, so a
404 on an uncovered pair is never charged.

Free alternatives, if paying per call is not what you want:
`POST /api/v1/visa/register` for a free key, or the keyless MCP server at
<https://visa.orizn.app/mcp>.

## Query parameters

- `passport` string, required — ISO 3166-1 alpha-3 country code.
- `destination` string, required — ISO 3166-1 alpha-3 country code.
- `lang` 'en' | 'fr' | 'es' | 'pt' | 'de' | 'it' | 'ja' | 'ko' | 'zh' | 'ru' | 'ar' | 'hi' | 'th' | 'vi' | 'tl'

## Response `200`

Payment settled — the full visa record.

- object

## Other responses

- `400` — passport or destination is not an ISO 3166-1 alpha-3 code.
- `402` — Payment required. The `PAYMENT-REQUIRED` header carries the base64 offer: amount, asset, network and payTo.
- `404` — No data for this pair. Not charged.
- `503` — Pay-per-request is disabled on this deployment, or the facilitator is unreachable.

---

[API](https://skmtc.net/orizn/apis/orizn-visa-api.md) · [All operations](https://skmtc.net/orizn/apis/orizn-visa-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/orizn/orizn-visa-api/revisions/024933fc5445/schema)
