# Orizn Visa API > REST API for visa requirements. One call returns whether a passport holder needs a visa for a destination, plus documents, fees, processing times, transit rules, health requirements and embassy contacts — for every passport x destination pair in the world, in 15 languages. Base URL: https://visa.orizn.app Auth: `x-api-key` request header (or `?api_key=`). Country codes are ISO 3166-1 alpha-3 (FRA, USA, JPN). Responses are JSON/UTF-8; `/visa` and `/visa/check` also honour `Accept: text/markdown`. ## Coverage - 199 passports, 250 destinations - 49,750 indexed passport x destination pairs, 49,750 detailed visa records - 696,500 translated strings - 15 languages: en, fr, es, pt, de, it, ja, ko, zh, ru, ar, hi, th, vi, tl - Up to 30 fields per pair (`VisaData` schema): requirement, visa_free_days, visa_required, description, documents_required, process, tips, country_info, verified, transit_visa, passport_validity_months, visa_fee, processing_days, photo_specs, vaccinations_required, insurance_required, dual_nationality_warnings, stamp_warnings, minor_rules, overstay_penalty, entry_by_mode, remote_work_visa, extension_rules, reciprocity_history, safety, best_apply_period, health_requirements, embassy - Coverage counts move as policies change. The authoritative live numbers are at https://visa.orizn.app/api/v1/visa/stats (public, no key). ## Endpoints 22 documented paths. The main ones: - `GET /api/v1/visa/check?passport=FRA&destination=THA` — quick answer: requirement, visa-free days, visa_required flag - `GET /api/v1/visa?passport=FRA&destination=THA&lang=en` — the full record (all fields above) - `GET /api/v1/visa/bulk?passport=FRA&destination=JPN,USA,DEU` — up to 25 destinations for one passport in one round-trip; `destination` is required. Hobby plan and above. Each destination counts as one request against quota - `GET /api/v1/visa/changes` — policy changes feed: **currently returns 503**, being rebuilt on verified official sources. Do not present it as available. - `GET /api/v1/visa/stats` — coverage statistics (public) - `GET /api/v1/visa/score` and `GET /api/v1/visa/score/compare` — passport mobility score and side-by-side comparison (public) - `GET /api/v1/visa/live` and `GET /api/v1/visa/live/recent` — SSE stream and recent-activity snapshot (public) - `POST /api/v1/visa/webhooks` — HMAC-signed server-to-server policy-change delivery - `POST /api/v1/visa/devices` — subscribe APNs/FCM tokens to policy-change alerts - `GET|POST|DELETE /api/v1/visa/team-keys` — per-environment subkeys sharing the owner quota - `POST /api/v1/visa/register` — self-serve signup for a key (public) Only `/visa`, `/visa/check` and `/visa/bulk` count against the monthly quota. Everything else is free against quota. Quotas reset on the 1st of each month, UTC. ## Developer resources - [OpenAPI spec](https://visa.orizn.app/.well-known/openapi.json): machine-readable, version 1.1.0 (also at /openapi.json and /openapi.yaml) - [API catalog](https://visa.orizn.app/.well-known/api-catalog): RFC 9727 linkset pointing at the spec, docs and status - [Integration tutorials](https://visa.orizn.app/integrations): runnable quickstarts, one per stack - [MCP server](https://visa.orizn.app/integrations/mcp) — Claude Desktop, Claude Code, Cursor - [REST](https://visa.orizn.app/integrations/rest) — curl, any language - [JavaScript / TypeScript](https://visa.orizn.app/integrations/javascript) - [Python](https://visa.orizn.app/integrations/python) - [Rust](https://visa.orizn.app/integrations/rust) - [LangChain](https://visa.orizn.app/integrations/langchain) - [React](https://visa.orizn.app/integrations/react) - [Next.js](https://visa.orizn.app/integrations/nextjs) - [Keyless MCP server](https://visa.orizn.app/mcp): remote MCP over Streamable HTTP, no key and no account — one pair per call, English, 30 distinct pairs a day per IP. Install with: claude mcp add --transport http orizn-visa https://visa.orizn.app/mcp - [Documentation](https://visa.orizn.app/docs): endpoint reference, error codes, integration guides - [Changelog](https://visa.orizn.app/changelog): versioned API and dataset changes - [Status](https://visa.orizn.app/status): live availability - [Dashboard](https://visa.orizn.app/dashboard): key management, usage, billing — requires a login, so it stays behind Cloudflare's browser check; nothing here is meant to be read by an agent ## SDKs - JavaScript / TypeScript: `npm install orizn` - Python: `pip install orizn` - Rust: `cargo add orizn` - MCP server for AI agents (Claude, Cursor, Codex): `npx orizn-visa-mcp` ## Pricing - Evaluation — $0, 100 requests/month, non-commercial evaluation - Commercial — $49/month, 30,000 requests/month, the right to serve these answers inside a paid product - Production — $199/month, 250,000 requests/month, uptime SLA and a named contact - License — from $600/month, redistribution and dataset snapshot: hello@orizn.app ## Use cases - Booking and OTA flows: tell a traveller at checkout whether their passport needs a visa for the destination - Airline and check-in systems: document and passport-validity requirements before boarding - Travel insurance and fintech onboarding: entry conditions, insurance and health requirements per corridor - Relocation, immigration and nomad tools: remote-work visas, extension rules, overstay penalties - Travel content and comparison sites: passport mobility scores, per-corridor pages, embeddable widgets - AI assistants and agents: the MCP server exposes visa checks as tools, and `Accept: text/markdown` returns LLM-friendly renderings ## Access without an account - Keyless MCP: https://visa.orizn.app/mcp — free, no key, 30 distinct passport/destination pairs a day per IP - Free API key: https://visa.orizn.app/visa-api?source=llms-txt — 100 requests/month, no card. The key works immediately; confirming the email address raises it from 5 to 100 - Pay-per-request (x402): https://visa.orizn.app/api/x402/visa — $0.03 per call in USDC on Base, no account, no key. Full record, 15 languages. Spec: https://github.com/x402-foundation/x402 ## Contact hello@orizn.app