Verification Status

GET /v1/account/verification-status

Verification state for the request's active account: whether a valid payment method is on file, and the account's identity-verification (KYC) status. The platform's verification gates (UDP tunnels, dedicated IPs, custom domains, dedicated ports) read these flags to decide whether to allow an action.

Verification is account-scoped — we bill accounts and gate account-scoped resources, so both payment method and KYC live on the account, not the individual user. Use this on app load to know which gates the account has cleared and surface "add a payment method" or "verify your identity" prompts before hitting a 403 from a gated endpoint.

Response (200 OK)

has_valid_payment_method boolean
true if at least one un-expired card or other payment instrument is on file for the account's Stripe customer. Required for paid-tier upgrades and certain feature gates.
kyc_status string
Account identity-verification state. Values: none (default — no KYC submitted), pending (submitted / under review), verified, rejected. KYC is required only for high-trust gates (e.g. dedicated IPs in restricted regions).
kyc_verified_at datetime
RFC 3339 UTC timestamp of when the account was verified. Present only when kyc_status is verified.

KYC documents

GET /v1/account/kyc-documents

Identity verification is document-driven: an admin defines which documents the account must submit, and the account uploads each. This lists the account's documents — { documents: [{ uuid, doc_type, label, status, file_name, submitted_at, reviewed_at, review_notes }] }. doc_type is one of government_id, proof_of_address, business_registration, other; status is requestedsubmittedapproved/rejected. The file bytes are never returned. Uploading a document is done from the dashboard verification page (multipart), not via the public API.

Errors

401 Unauthorized
Missing auth.
403 Forbidden
On the request endpoint — the caller lacks billing:update on the active account.
404 Not Found
No billing account resolved for the caller.
500
Database error reading the account record.
Request
curl "https://api.ngris.com/v1/account/verification-status" \ -H "X-API-KEY: <your_api_key>"
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") v = client._get_raw("/account/verification-status") if not v["has_valid_payment_method"]: print("Add a payment method to unlock paid features.") if v["kyc_status"] == "rejected": print("Identity verification was rejected — re-upload the requested documents.") elif v["kyc_status"] != "verified": print("Identity status:", v["kyc_status"])
Response — 200 OK
{ "has_valid_payment_method": true, "kyc_status": "verified", "kyc_verified_at": "2026-04-29T08:15:00Z" }
On this page
Verification Status
Iris