Documentation

Xactimate ESX

GET /api/v1/reports/orders/:id/esx: the report as an Xactimate .esx, named with the claim number.

API reference

Base URL: https://api.roofquery.com. Authenticate with Authorization: Bearer <your key> — except the four file routes, which take no key.

Copies this whole page as Markdown, so you can paste it into an assistant and have it write the integration. Nothing secret goes on the clipboard — your keys aren't included.

GET /api/v1/reports/orders/:id/esx

The Xactimate-compatible .esx for the order — the sketch, prepared by the annotation team alongside your report, ready to import. Always the current version of the report: after a revision, this gives you the corrected one.

Free. It is another way to download a report you have already paid for, not a second product, and it draws no balance.

The claim number

Give the order a claim on POST /reports/orders and the annotators put it on the .esx. The file downloads as <claim>.esx, so it lands under the number your estimator already knows the job by. This endpoint takes no parameters — the claim is set at ordering or not at all, and without one the file is named from the street line of the ordered address.

curl "https://api.roofquery.com/api/v1/reports/orders/rq_ord_8f3a21c9/esx" \
  -o report.esx
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="CLAIM12345.esx"
Cache-Control: no-store

Filenames are 16 characters, A-Za-z0-9_.- only. A longer claim is truncated and anything outside that set becomes an underscore — the claim on the order is kept exactly as you sent it; only the filename bends. Read Content-Disposition if you need to know what it became.

Working with the file

Open it in Xactimate as you would any other ESX; there is nothing RoofQuery-specific to configure. It is not a format to read yourself — if you want the measurements as data, take the /xml instead.

Served as application/octet-stream. We check the file before sending it, so a bad one comes back as a 502 download_failed rather than as a .esx that fails to open.

The filename, given the claim on the order
Claim on the orderFilenameWhy
CLAIM12345CLAIM12345.esxAlready legal — used untouched
123 Main St/Apt#4123_Main_St_Apt.esxSpace, slash and hash substituted; runs collapsed; trailing separator trimmed
12/34 Main Street Apt #712_34_Main_Stree.esxSame, then cut at 16
none, on 6515 Turnbridge Pl6515_Turnbridge.esxThe street line of the ordered address

The street line rather than the whole address, because 16 characters of "6515 Turnbridge Pl, Prospect, KY 40059, USA" spends most of its budget on the part that is the same for every property on the street. 409 not_ready until the order completes; 502 download_failed if the download failed — safe to retry, nothing was charged.