Valara

Quickstart

Submit your first appraisal review and retrieve the scored result in three steps.

Valara turns an appraisal PDF into a scored, citation-grounded review: USPAP and GSE compliance checks, quality scoring, and page-level citations for every finding. The API is built for machines and AI agents, so the contract is asynchronous: you submit a review, track its progress (stream or poll), then fetch the result.

This page walks the whole flow with curl. It uses one API key.

Once you have an account, you create your own key in Settings → API Keys (the secret is shown once). See Authentication for keys and scopes.

1. Submit an appraisal

POST /api/v1/reviews starts an asynchronous review. The simplest transport is a raw application/pdf body with parameters in the query string. This path also avoids multipart size limits for large reports.

curl -X POST "https://getvalara.com/api/v1/reviews?review_type=residential&filename=123-main-st.pdf" \
  -H "Authorization: Bearer vlr_live_..." \
  -H "Content-Type: application/pdf" \
  --data-binary @123-main-st.pdf

You get back a 202 Accepted with a review resource whose status is processing:

{
  "id": "9f2c…",
  "review_type": "residential",
  "status": "processing",
  "created_at": "2026-06-29T17:00:00.000Z"
}

The id is the appraisal's content hash, so re-submitting the same PDF is idempotent. If that appraisal was already reviewed, you get 200 OK with a completed review instead of 202. (See Review lifecycle.)

Prefer to upload out-of-band? Send a JSON body instead: {"blob_url": "https://…", "filename": "123-main-st.pdf", "review_type": "residential"}.

2. Track until it completes

Reviews run for minutes. The preferred way to track one is the event stream: GET /api/v1/reviews/{id}/events is a Server-Sent Events stream of progress events that stays open while the review is processing and closes the moment it reaches a terminal state, so you react on completion instead of waiting for a poll.

curl -N "https://getvalara.com/api/v1/reviews/9f2c…/events" \
  -H "Authorization: Bearer vlr_live_..."

The stream exists only while the review is processing; once it is completed or failed, the endpoint returns 404 and you fetch the result directly. See Review lifecycle for the event shape and start_index resume.

No long-lived connection? Poll instead: GET /api/v1/reviews/{id} every few seconds until status is completed or failed. It reads the same durable run, so a poll never restarts the work.

3. Fetch the result

Once completed, GET /api/v1/reviews/{id}/result returns the scored, citation-grounded result. Its shape is a discriminated union on review_type (residential or commercial).

curl "https://getvalara.com/api/v1/reviews/9f2c…/result" \
  -H "Authorization: Bearer vlr_live_..."

The result carries the overall score, findings (each with page-level citations), and a narrative summary. See the result schema for the full shape.

Next steps

  • Authentication — keys, scopes, and the Authorization header.
  • Review lifecycle — statuses, idempotency, and the stream/poll model.
  • Errors — the error envelope and how to handle each type.
  • API reference — every endpoint, generated from the live contract.

On this page