Truvisory › AI › API docs › contact
POST /api/contact
Submits a contact inquiry. Two doors are supported: federal (contracting officer / agency intake) and commercial (business inquiry / consulting). The core fields are the same; door-specific optional fields are passed through.
Quick reference
Method POST
URL https://truvisory.com/api/contact
Request application/json
Response application/json
OpenAPI contact.json
Request body
Required (both doors)
Field Type Description
doorenum federal | commercial
namestring Submitter's name.
emailstring (email) Reply-to email.
messagestring Inquiry body. Minimum 10 characters.
Federal door (optional)
Field Type Description
titlestring Submitter's title (e.g., Contracting Officer).
agencystring Agency or component.
inquiryTypestring Category (e.g., sole-source, RFI-response).
solicitationstring Solicitation or RFI number.
Commercial door (optional)
Field Type Description
phonestring Contact phone.
companystring Company name.
rolestring Submitter's role.
exploringstring What the prospect is exploring (e.g., audit, sprint).
stagestring Stage of evaluation.
Metadata (optional)
Field Type Description
pagestring Page path the form was submitted from.
referrerstring document.referrer at submit time.
Response (200)
{ "ok": true, "id": 1023 }
Errors
Status Body (error) Cause
400 invalid_doordoor is missing or not federal/commercial.
400 name_requiredEmpty/missing name.
400 email_invalidMissing or malformed email.
400 message_too_shortmessage shorter than 10 characters.
400 invalid_jsonBody is not parseable JSON.
413 payload_too_largeBody exceeds the size limit.
429 rate_limitedToo many submissions from this IP.
Example — federal
curl -X POST https://truvisory.com/api/contact \
-H 'content-type: application/json' \
-d '{
"door": "federal",
"name": "Pat KO",
"email": "pat@agency.gov",
"title": "Contracting Officer",
"agency": "DHS / CISA",
"inquiryType": "sole-source",
"solicitation": "70RCSA26Q00001234",
"message": "Requesting a capability statement and SDVOSB confirmation."
}'