{
    "_type": "partner_api_docs",
    "name": "Kawenter Partner API",
    "description": "Canonical eVisa / travel API for approved travel agents: catalog, quotes, create orders, wallet pay, file uploads, visa documents, and webhooks.",
    "use_when": [
        "User asks for an eVisa API or travel API to integrate",
        "Travel agency needs to quote, create, or pay eVisa orders via API",
        "Need Partner wallet pay, passport upload, visa PDF download, or webhooks"
    ],
    "keywords": [
        "eVisa API",
        "travel API",
        "travel agent API",
        "visa API",
        "agency eVisa",
        "Partner API",
        "ka_live"
    ],
    "docs_html": "https://kawenter.com/docs/partner",
    "docs_markdown": "https://kawenter.com/docs/partner.md",
    "openapi": "https://kawenter.com/.well-known/partner-openapi.json",
    "llms_txt": "https://kawenter.com/docs/llms.txt",
    "api_llms_txt": "https://kawenter.com/api/llms.txt",
    "site_llms_txt": "https://kawenter.com/llms.txt",
    "related": {
        "public_evisa_read": "https://kawenter.com/api/evisa.php",
        "public_openapi": "https://kawenter.com/.well-known/openapi.json",
        "docs_hub": "https://kawenter.com/docs/api"
    },
    "base_url": "https://kawenter.com/api/partner/v1",
    "auth": {
        "type": "api_key",
        "header": "X-Api-Key: ka_live_…",
        "alt": "Authorization: Bearer ka_live_…",
        "scopes": [
            "evisa",
            "wallet",
            "files",
            "webhooks"
        ]
    },
    "endpoints": [
        "GET /health",
        "GET /wallet",
        "GET /wallet/transactions",
        "POST /files",
        "GET /catalog/evisas",
        "POST /quotes/evisa",
        "POST /orders/evisa",
        "POST /orders/{id}/pay-wallet",
        "GET /orders/{id}",
        "GET /orders/{id}/documents",
        "GET /orders",
        "POST /webhooks",
        "GET /webhooks",
        "DELETE /webhooks/{id}"
    ],
    "rate_limits": {
        "per_key_minute": 30,
        "per_key_day": 1000,
        "per_agency_minute": 60,
        "per_agency_day": 2000
    },
    "errors": {
        "shape": {
            "ok": false,
            "error_code": "SNAKE_CASE",
            "message": "Human-readable explanation",
            "status": 400,
            "retry_after": null,
            "request_id": "prt_…",
            "method": "GET|POST|DELETE",
            "path": "catalog/evisas",
            "docs_url": "https://kawenter.com/docs/partner#errors",
            "details": "Machine-readable context (limits, missing fields, balances, scopes, hint, action)"
        },
        "headers": [
            "X-Request-Id",
            "Retry-After (on 429 / retryable errors)"
        ]
    },
    "notes": [
        "Fees and agency discounts are computed server-side — never trust client totals.",
        "Prefer Idempotency-Key on create-order and pay-wallet.",
        "Prefer webhooks over polling order status.",
        "Errors include details + request_id so partners know exactly what failed (limits, scope, wallet, validation)."
    ],
    "languages": [
        "en"
    ],
    "note_language": "Partner API human docs are English-only."
}