API reference / Support
post
/v1/contactSend a message from the contact form
- Operation
sendContactMessage- Authentication
- API key
Delivers to the support address. Answers `{ok: true}` for a message that was sent **and** for one discarded by the honeypot, deliberately: telling the two apart is how a bot learns which field to skip.
Request
Body
namestringrequiredemailstringrequiredorder_refstringmessagestringrequiredcompanystringResponses
200Accepted or discarded — indistinguishable, by design.
okbooleanrequiredone of:
400The request body or query failed validation.
errorobjectrequired401No key, an unknown key, a revoked key, or a key whose tenant is not active. All four return an identical body on purpose: distinguishing them would let a caller discover which partners we have.
errorobjectrequired403The key is valid but does not hold the scope this route requires.
errorobjectrequired404Not found, or not yours. A resource belonging to another tenant answers 404 rather than 403, because 403 would confirm the record exists.
errorobjectrequired502The message could not be delivered. The visitor is told so plainly.
Example
curl -X POST https://api.haavisa.com/v1/contact \
-H "Authorization: Bearer $HAAVISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "<name>",
"email": "<email>",
"message": "<message>"
}'More in Support
Something unclear? The eligibility guide explains the model behind the answers; the errors guide covers the envelope.