API reference
168 operations across 21 areas. Generated from the OpenAPI document, which is generated from the schemas the API validates with — so a field here cannot disagree with the API.
Base URL https://api.haavisa.com. All requests and responses are JSON. Send your key as Authorization: Bearer or x-api-key.
Requirements
Eligibility and the rules behind it.
Products
The catalogue of purchasable products.
Applications
The draft, submission and decision lifecycle.
/v1/applicationsAPI keyList applications
/v1/applicationsAPI keyCreate an application on behalf of a traveller
/v1/applications/{id}API keyDelete a draft
/v1/applications/{id}API keyFetch one application
/v1/applications/{id}API keyAutosave a draft
/v1/applications/{id}/requirementsAPI keyRead non-file requirement records
/v1/applications/{id}/requirementsAPI keyProvide a host code or insurance reference
/v1/applications/{id}/submitAPI keySubmit to the destination authority
/v1/applications/{id}/timelineAPI keyWhat has happened to this application
/v1/applications/lookupAPI keyLook up an application by reference and email
Health
Unauthenticated liveness and readiness.
JSON:API
The `/v3` surface. The same questions as `/v1` in the envelope another provider’s clients already parse — `{ meta, data: [{ id, type, attributes }] }` and JSON:API error documents. A separate version rather than content negotiation, because those clients send no `Accept` header to negotiate with.
/v3/countriesAPI keyCountries, in JSON:API
/v3/countries/{iso3}API keyOne country, in JSON:API
/v3/proceduresAPI keyWhat a traveller must do to enter a destination
/v3/procedures/{id}API keyOne procedure, by destination-nationality
/v3/tripsAPI keyAn itinerary, answered leg by leg
/v3/trips/llmAPI keyThe same trip, with a quotable answer per leg
/v3/webhooksAPI keyWebhook subscriptions
/v3/webhooksAPI keySubscribe a URL
/v3/webhooks/{id}API keyUnsubscribe
/v3/webhooks/{id}API keyOne webhook
/v3/webhooks/{id}API keyUpdate a webhook
Reference
Captured government reference data — ports, airlines, countries, document requirements. Read-only, and each response carries the capture it came from.
/v1/airlinesAPI keyAirline roster for a destination
/v1/airportsAPI keySearch airports
/v1/airports/{iata}API keyFetch one airport by IATA code
/v1/citiesAPI keySearch cities, one entry per place
/v1/countriesAPI keyCountries, with the adjective for each nationality
/v1/documentsAPI keySupporting documents an application will ask for
/v1/entry-pointsAPI keyPorts of entry, joined to the airports behind them
/v1/form-fieldsAPI keyThe questions a destination’s application form asks
/v1/geo/locationAPI keyCoarse location from the request
/v1/portsAPI keyPoints of entry for a destination
Partner
Partner self-service. Scoped to the calling key’s own tenant.
/v2/keysAPI keyList this tenant’s API keys
/v2/keysAPI keyIssue an API key
/v2/keys/{prefix}API keyRevoke an API key
/v2/meAPI keyIdentify the calling tenant and key
/v2/reports/applicationsAPI keyApplication volumes for a month
/v2/reports/usageAPI keyMetered usage for a month
/v2/teamAPI keyList this tenant’s portal users
/v2/teamAPI keyInvite a colleague
Billing
Statements of charges, computed from the ledger.
Partner auth
Sign-in for the partner portal. Public by necessity — a browser has no API key.
Webhooks
Partner-facing event delivery. Signed, retried, and logged.
/v2/webhook-endpointsAPI keyList this tenant’s webhook endpoints
/v2/webhook-endpointsAPI keyRegister a webhook endpoint
/v2/webhook-endpoints/{id}API keyDelete an endpoint
/v2/webhook-endpoints/{id}API keyFetch one endpoint
/v2/webhook-endpoints/{id}API keyUpdate an endpoint
/v2/webhook-endpoints/{id}/deliveriesAPI keyDelivery log
/v2/webhook-endpoints/{id}/rotate-secretAPI keyRotate the signing secret
/v2/webhook-eventsAPI keyThe event vocabulary
Documents
Presigned upload, async validation, and short-lived retrieval.
/v1/applications/{id}/documentsAPI keyList an application’s documents
/v1/applications/{id}/documentsAPI keyAsk for somewhere to put a file
/v1/documents/{id}API keyRemove a document before submission
/v1/documents/{id}/completeAPI keyReport that an upload finished, and get the verdict
/v1/documents/{id}/urlAPI keyA short-lived link to a stored document
/v1/documents/mrzAPI keyRead a passport page's machine-readable zone
/v1/documents/photoAPI keyRender a correctly sized passport photograph
/v1/storage/localNone — publicRead one object (local storage driver)
/v1/storage/localNone — publicUpload one object (local storage driver)
Payments
Provider selection, authorisation and provider callbacks.
Consent
Storage and access technologies. Public by necessity — the answer is given before anybody signs in, and a browser has no API key.
Admin
Internal. Requires `projects:write`, which no partner key is ever issued.
/v1/admin/activityAPI keySearch the audit log
/v1/admin/applicant-usersAPI keySearch the applicant directory
/v1/admin/applicantsAPI keyCreate an applicant account by hand
/v1/admin/applicationsAPI keyThe operations queue
/v1/admin/applications/{id}API keyOne application in full
/v1/admin/applications/{id}/decision-documentAPI keyAttach an authority decision PDF
/v1/admin/applications/{id}/documents-requestAPI keyAsk the applicant for more documents
/v1/admin/applications/{id}/documents-request/{requestId}/reviewAPI keyAccept, reject or cancel a requested replacement
/v1/admin/applications/{id}/documents/{documentId}API keyFetch one uploaded application document
/v1/admin/applications/{id}/emailAPI keyEmail the applicant about their application
/v1/admin/applications/{id}/evidence/{filename}API keyFetch one submission evidence screenshot
/v1/admin/applications/{id}/government-paymentAPI keyHand the government its fee
/v1/admin/applications/{id}/government-payment/recordAPI keyRecord a portal quote, uncertain payment, receipt or reconciliation
/v1/admin/applications/{id}/requirements/reviewAPI keyVerify a requirement or record an evidenced exemption
/v1/admin/applications/{id}/status-checkAPI keyAsk the portal about this application now
/v1/admin/applications/{id}/submissionAPI keyRecord a government submission
/v1/admin/applications/{id}/submission/enqueueAPI keyQueue a browser submission
/v1/admin/applications/{id}/timelineAPI keyEverything that happened to one application
/v1/admin/automationAPI keyRead submission and status-check queues
/v1/admin/customersAPI keySearch applicant customers
/v1/admin/customers/{id}API keyOne applicant account, with the applications it owns
/v1/admin/customers/{id}/verification-emailAPI keyRe-send the address-verification email
/v1/admin/documentsAPI keyList applicant documents
/v1/admin/government-paymentsAPI keyList government fee handoffs
/v1/admin/mailboxAPI keyList messages from a Postern inbox
/v1/admin/mailbox/{source}/{messageId}API keyRead a matched Postern message
/v1/admin/notificationsAPI keyMessages that did not land
/v1/admin/notifications/{id}/requeueAPI keyPut one message back in the worker’s path
/v1/admin/operatorsAPI keyList operations team access
/v1/admin/operatorsAPI keyAdd an operations user
/v1/admin/operators/{email}API keyChange an operations role or access state
/v1/admin/operators/{email}/invitationAPI keyRe-send an operator’s invitation
/v1/admin/operators/authorization/{email}API keyResolve an operations user
/v1/admin/payment-recoveryAPI keyList abandoned payment attempts
/v1/admin/payment-recovery/{id}/remindAPI keySend a checkout reminder
/v1/admin/paymentsAPI keyRecent payments
/v1/admin/products/{code}/availabilityAPI keyShow or hide one product
/v1/admin/products/{code}/pricingAPI keyUpdate a product government fee
/v1/admin/service-tiers/{id}/pricingAPI keyUpdate a service tier fee
/v1/admin/statsAPI keyQueue and revenue totals
/v1/admin/stripe/catalog/syncAPI keyPush the catalogue and service tiers to Stripe
/v1/admin/system/submission-workerAPI keyRead the submission worker control
/v1/admin/system/submission-workerAPI keyEnable or pause government submission processing
/v1/admin/visa-dataAPI keyRead visa data and price catalogue
/v1/admin/visa-data/{destination}/availabilityAPI keyShow or hide every product for one destination
/v1/admin/visa-data/{destination}/requirementsAPI keyPublish a new version of a destination’s document requirements
/v1/admin/visa-data/{destination}/sourcesAPI keyAdd a visa data source
/v1/admin/visa-data/sources/{id}API keyRemove a visa data source
/v1/admin/visa-data/sources/{id}API keyUpdate a visa data source
/v1/checkout-returnAPI keyResolve a Stripe checkout return
/v1/rules/freshnessAPI keyWhich eligibility answers are past their re-verification cadence
/v2/projectsAPI keyList tenants
/v2/projectsAPI keyCreate a tenant
/v2/projects/{id}API keyFetch a tenant and its keys
/v2/projects/{id}API keyReconfigure a tenant
/v2/projects/{id}/keys/{prefix}API keyRevoke any tenant’s key
/v2/projects/{id}/usersAPI keyList a tenant’s portal users
/v2/projects/{id}/usersAPI keyInvite a partner user
Support
/v1/admin/support/ticketsAPI keyManage support tickets
/v1/admin/support/tickets/{id}API keyManage support tickets
/v1/admin/support/tickets/{id}API keyManage support tickets
/v1/admin/support/tickets/{id}/messagesAPI keyManage support tickets
/v1/contactAPI keySend a message from the contact form
/v1/support/ticketsAPI keyRead or write your own support tickets
/v1/support/ticketsAPI keyRead or write your own support tickets
/v1/support/tickets/{id}API keyRead or write your own support tickets
/v1/support/tickets/{id}/messagesAPI keyRead or write your own support tickets
Account
Rules
Accounts
/v1/tokenNone — publicIssue or refresh a session
/v1/token/introspectNone — publicCheck whether the caller holds a valid session
/v1/token/mfaNone — publicComplete the second factor
/v1/token/revokeNone — publicRevoke a session
/v2/accountsNone — publicRegister an applicant account
/v2/accounts/meNone — publicThe signed-in applicant
/v2/accounts/meNone — publicUpdate the signed-in applicant
/v2/accounts/me/messaging-consentNone — publicMay we message this number?
/v2/accounts/me/messaging-consentNone — publicRecord a messaging opt-in or opt-out
/v2/accounts/mfa/activateNone — publicConfirm and enable two-factor authentication
/v2/accounts/mfa/disableNone — publicDisable two-factor authentication
/v2/accounts/mfa/enrollNone — publicBegin two-factor enrolment
/v2/accounts/password-resetNone — publicAsk for a password-reset link
/v2/accounts/password-reset/confirmNone — publicSet a password from a mailed link
/v2/accounts/sign-inNone — publicSign in to the applicant wizard
/v2/accounts/sign-outNone — publicSign out of the applicant wizard
/v2/accounts/verify-emailNone — publicConfirm an email address
/v2/accounts/verify-email/resendNone — publicSend the confirmation link again