Skip to content

Quotes

Scopes: quotes:write, quotes:read, files:write.

API-created quotes enter the tenant Open Quote queue (same family as email ingest). Staff complete, adjust, and send from Appraiser Flow unless a future tenant automation explicitly allows auto-send.

Create quote

http
POST /public/v1/quotes
Authorization: Bearer af_test_••••
Idempotency-Key:
Content-Type: application/json
json
{
  "schema_version": 1,
  "external_reference": "WEB-10482",
  "product_code": "1004",
  "subject": {
    "line1": "123 Main St",
    "line2": null,
    "city": "Nashville",
    "state": "TN",
    "postal_code": "37203",
    "county": "Davidson"
  },
  "client": {
    "name": "Acme Mortgage",
    "email": "orders@acme.example",
    "phone": "(615) 555-0100"
  },
  "borrower": {
    "name": "Jane Doe",
    "email": null,
    "phone": null
  },
  "notes": "Gate code 1234",
  "source": "website",
  "metadata": {
    "form_id": "contact-appraisal"
  }
}

Phone fields should use US display form (XXX) XXX-XXXX when provided.

Response (illustrative)

json
{
  "id": "uuid",
  "status": "open",
  "external_reference": "WEB-10482",
  "product_code": "1004",
  "fee": "450.00",
  "turnaround_days": 7,
  "created_at": "2026-08-19T18:00:00Z"
}

No value estimates are returned.

Get quote

http
GET /public/v1/quotes/{id}

Public-safe summary + status for tracking UIs. Unknown or cross-tenant ids → 404.

Lookup by your reference:

http
GET /public/v1/quotes?external_reference=WEB-10482

Attach document

http
POST /public/v1/quotes/{id}/documents
Authorization: Bearer af_test_••••
Content-Type: multipart/form-data
FieldDescription
filePDF or image (PNG/JPEG/WebP) within size limits (max 15 MB)
document_typee.g. letter_of_engagement, other

Uploads are antivirus-scanned. Rejected or quarantined files return an error — do not assume attach succeeded without a 2xx.

Store engagement letters and supporting files here so staff do not re-upload.

Status values (typical)

statusMeaning
openIn office queue
sentQuote sent to client
acceptedConverted / accepted
expiredPast validity
declinedClient declined

Exact enum ships with OpenAPI when implemented.

API base for Try-it: https://staging-api.appraiserflow.ai