Documentation

PDF

GET /api/v1/reports/orders/:id/pdf: the white-labeled report, rendered per request. Branding params, ?brand= profiles, no key required.

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/pdf

The white-labeled report, rendered at the moment you request it. Nothing is stored and nothing is cached, so changing your branding re-skins every report you've already ordered on its next download. No API key required — see Sharing a report.

QueryEffectMax
?download=1Forces a save dialog. Omit it and the PDF is served inline, so you can iframe it
?brand=A brand profile id. The report renders in that customer's brand, logo included
?companyName=Name on the header band, footer and cover attribution80
?address=First line of the contact block, under the name160
?publicPhone=Contact block. A 10-digit number is formatted (502) 555-0100; anything else prints as sent32
?publicEmail=Contact block160
?brandColor=Hex — URL-encode the # as %23
?brandTextColor=Text on the header band

Three layers, most specific wins. Your account defaults are set in the portal under Branding. A ?brand= profile replaces them wholesale for that download. The text and colour params below override either, field by field, for that one file. Anything you don't pass falls through to the next layer down.

Override the contact block as a unit. The header renders the company name with the address, phone and email stacked underneath it, so passing companyName alone puts a different company's name above your phone number — a report that tells the reader to call someone other than who it claims to be from. If you're rebranding a download, send all four.

A colour that isn't a hex string returns 400 validation rather than rendering something strange — #RGB through #RRGGBBAA are all accepted. Text over the length in the table is refused the same way rather than silently cut, because these render in a fixed-height header. There is no logo param: a logo is bytes, not something that fits in a URL. To put a customer's logo on a download, upload it once to a brand profile and name the profile with ?brand=.

curl "https://api.roofquery.com/api/v1/reports/orders/rq_ord_8f3a21c9/pdf?download=1" \
  -o report.pdf

Returns the PDF bytes:

HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="RoofQuery_6515_Turnbridge_Pl_Prospect_KY_40059_USA_rq_ord_8f3a21c9.pdf"
Content-Length: 1370151
Cache-Control: no-store

Before the report is delivered:

HTTP/1.1 409 Conflict

{
  "error": "not_ready",
  "error_description": "Report has not completed yet — no PDF available.",
  "status": "in-progress"
}

A profile is the durable way to brand a customer's reports; the query params are for a one-off. Both exist so you never touch your account settings to brand someone else's download. See White labeling.