Partner API
Server-to-server API for approved travel agents. Authenticate with a ka_live_… key,
quote eVisas and insurance, create orders, and pay from your agency wallet.
Fees are always computed by Kawenter.
Discovery
Machine-readable resources for search engines, LLM tools, and integrators.
- Partner OpenAPI 3.0. Full request/response schemas
- Agent JSON. Structured summary (
?mode=agent) - Markdown docs.
Accept: text/markdownalso works on this page - Changelog · Versioning & deprecation
- Docs llms.txt · API llms.txt
- API catalog (RFC 9727)
- Prefer a branded traveler page? See White-label storefront docs.
Versioning & deprecation
URL major /api/partner/v1. Current release 1.3.0.
Every response includes API-Version and X-Kawenter-API-Release.
- Additive in v1: new endpoints, optional request fields, new response fields. No new major.
- Breaking: removing required fields, changing types/semantics, or renaming paths → new major (
/v2) or announced deprecation. - Deprecation notice: at least 90 days before removal; may send
Deprecation/Sunset(RFC 8594).
Changelog: Markdown
· GET https://kawenter.com/api/partner/v1/changelog
· policy JSON: GET …/version
Your API keys
Generate and manage your API keys securely from your Kawenter Dashboard. Keys are shown once when created.
Getting Started
Integrate in four steps. All create/pay calls are server-to-server.
-
Sign in
Approved
travel_agentaccount - Get API key Dashboard → API
-
Catalog & quote
GET /catalog→POST /quotes -
Create & pay
POST /orders→pay-wallet
export KAWENTER_API_KEY="ka_live_…"
export KAWENTER_API="https://kawenter.com/api/partner/v1"
curl -sS "$KAWENTER_API" \
-H "X-Api-Key: $KAWENTER_API_KEY" | jq .
curl -sS "$KAWENTER_API/wallet" \
-H "X-Api-Key: $KAWENTER_API_KEY" | jq .
Authentication
Generate and manage your API keys securely from your Kawenter Dashboard.
X-Api-Key: ka_live_…
# or
Authorization: Bearer ka_live_…
- Base URL:
https://kawenter.com/api/partner/v1 - JSON only.
Content-Type: application/jsononPOST - All amounts are USD (cents integers)
- Scopes:
evisa,insurance,wallet,files,webhooks
API Reference
Schemas generated from OpenAPI. Interactive request testing is disabled call the API from your server with a dashboard-issued key.
Errors
Consistent JSON with machine-readable details. Include X-Request-Id when contacting support.
{
"ok": false,
"error_code": "INSUFFICIENT_WALLET",
"message": "Insufficient wallet balance.",
"status": 402,
"retry_after": null,
"request_id": "prt_a1b2c3d4e5f60718",
"method": "POST",
"path": "orders/123/pay-wallet",
"docs_url": "https://kawenter.com/docs/partner#errors",
"details": {
"balance_cents": 1200,
"required_cents": 5000,
"shortfall_cents": 3800,
"currency": "USD",
"hint": "Top up the agency wallet, then retry pay-wallet with the same Idempotency-Key.",
"action": "topup_wallet"
}
}
| HTTP | Typical error_code | Meaning |
|---|---|---|
| 401 | AUTH_REQUIRED / INVALID_API_KEY | Missing or bad API key |
| 403 | INSUFFICIENT_SCOPE / API_KEY_REVOKED | Scope missing or key revoked |
| 402 | INSUFFICIENT_WALLET | Wallet too low |
| 404 | ORDER_NOT_FOUND / DOCUMENT_NOT_READY | Missing or not ready |
| 429 | RATE_LIMIT_EXCEEDED | See Retry-After |
| 502/503 | UPSTREAM_ERROR | Retry with backoff |
Idempotency
POST /orders/evisa requires Idempotency-Key. Recommended on pay-wallet, top-ups, cancel, and submit-documents.
API key scopes
Missing scope → 403 INSUFFICIENT_SCOPE. Rotate keys in Dashboard → API integration.
| Scope | Allows |
|---|---|
evisa | eVisa catalog/quote/create; eVisa order documents; product scope for pay/cancel |
insurance | Insurance catalog/quote/create; insurance orders; product scope for pay/cancel |
wallet | Balance, transactions, top-ups; required with product scope for pay/cancel |
files | File upload and management |
webhooks | Register / list / delete webhooks |
Rate limits
Per API key and shared agency windows. Also returned on GET /api/partner/v1.
| Window | Default | Max (on request) | Scope |
|---|---|---|---|
| Per minute (key) | 30 | 120 | Rolling 60s per key |
| Per day (key) | 1,000 | 50,000 | Rolling 24h per key |
| Per minute (agency) | 60 | 180 | All keys for agency |
| Per day (agency) | 2,000 | 6,000 | All keys for agency |
Headers: X-RateLimit-* and Retry-After on 429.
Machine-readable: OpenAPI 3.0 · Markdown · Agent JSON · Changelog