Most RoofQuery customers never show a RoofQuery report to anyone. They show their own report, with their own name on the cover, generated by RoofQuery underneath. This guide is exactly how that works and where the edges are. The reference version is in the white labeling section of the docs.
What gets branded?
Everything a reader sees as "who made this". Set a company name and the header, footer, cover-page attribution and legal contact block all become yours. Add a logo, a brand color and a text color and the header band takes them, and a license number prints under the contact details. Leave everything blank and the report falls back to full RoofQuery branding. The XML carries no branding in either case; it is the measurement document, byte for byte, for your own pipeline.
How is branding set?
Two ways, and you choose between them when you order: every roof report is branded as one or the other, for good.
| Brand | Where | Use it for | Logo |
|---|---|---|---|
| Your own (account defaults) | Dashboard, Branding, Defaults tab | Every report you order for no one else | Yes |
| Brand profile | API or the Profiles tab | One saved brand per contractor you order for, named as brand when you place the order | Yes |
Account defaults
In the dashboard under Branding, set your company name, contact details, colors and logo once. Every report you order uses them unless a link says otherwise. The logo is uploaded as a file and served by us, never fetched from a URL, so a report rendered next year does not depend on your website still hosting the image.
Brand profiles, for the contractors you order for
A profile is a complete brand for one contractor: their company name, contact block, license
number, colors and logo, plus a contact email and phone that are never printed (they're who we
reach if we need more information about a property). Only the company name is required. Create
it once, store the returned id on your own record for that contractor, and send it as
brand when you place an order for them. That report carries their brand for good.
This is the way to give each roofer on your platform their own logo.
curl -X POST "https://api.roofquery.com/api/v1/branding/profiles" \
-H "Authorization: Bearer rq_live_sk_..." \
-H "Content-Type: application/json" \
-d '{"companyName":"Acme Roofing","licenseNumber":"KY-RC-48213",
"publicPhone":"5025559876","publicEmail":"[email protected]",
"contactEmail":"[email protected]","brandColor":"#0F7A4D"}'
curl -X PUT "https://api.roofquery.com/api/v1/branding/profiles/rq_brand_7f3a21c9d4e07b16/logo" \
-H "Authorization: Bearer rq_live_sk_..." \
-H "Content-Type: image/png" --data-binary @acme-logo.png
curl -X POST "https://api.roofquery.com/api/v1/reports/orders" \
-H "Authorization: Bearer rq_live_sk_..." \
-H "Content-Type: application/json" \
-d '{ ..., "brand": "rq_brand_7f3a21c9d4e07b16" }'
Profiles can also be created by hand in the dashboard, where each one shows its id and a test PDF. Up to 500 per account. The brand profiles reference has every field.
Per-download overrides
A roof report's brand is fixed when it's ordered, so its PDF link can't change it. Branding
on the PDF URL only applies to Storm Reports and to roof reports ordered before 22 October
2026: pass it as query parameters (or name a profile as ?brand=) and that one
download is re-skinned.
curl "https://api.roofquery.com/api/v1/reports/orders/rq_ord_8f3a21c9/pdf\
?companyName=Acme%20Roofing\
&address=900%20Bardstown%20Rd%2C%20Louisville%2C%20KY%2040204\
&publicPhone=5025559876\
&publicEmail=estimates%40acmeroofing.example\
&brandColor=%230F7A4D" \
-o acme-report.pdf
If you rebrand a download this way, send all four contact fields together so the report is not half one company and half another.
Why is a profile complete rather than layered?
Because a half-applied brand prints one company's name over another company's phone number.
A report branded with a profile takes every printed field from the profile, and nothing falls
through to your account defaults. There is no ?logo= parameter and there never will be: a
logo is bytes, a URL is a link, and the API never fetches a link.
When is branding applied?
Which brand a report carries is decided when you order it. What that brand looks like is drawn at download time, every time: nothing is cached. So a change to your defaults or to a contractor's profile shows on the next download of every report that uses it. If a contractor rebrands, edit their profile and their back catalogue rebrands with them. A profile that orders use can't be deleted.
How is the logo handled?
The same way for your logo and for a profile's. The header gives the logo a square slot. Upload whatever shape you have, a wide wordmark or a tall badge, and it is scaled to fit and padded with transparency to a 512 by 512 PNG. Nothing is cropped and proportions are kept. Small icons are scaled up so a favicon does not render as a speck.
What should a reseller know before launch?
A small RoofQuery watermark remains in the PDF footer on branded reports. If your agreement with your own customers needs the document to carry no third-party mark at all, talk to us before you launch.
The PDF route needs no API key, so a branded report link can be handed straight to an estimator, a homeowner or an adjuster, or embedded in your own portal. Treat the link as you would the report: it carries the property address and the full measurements, and it does not expire.
For the business side, pricing models and what "resellable" actually covers, see how to resell roof measurement reports. For how it fits a multi-customer product, see adding roof reports to a roofing CRM.
Frequently asked questions
Can I resell RoofQuery roof reports under my own brand?
Yes. Set your company name, logo, colors and contact details once, and every PDF carries them. To brand a report for a contractor you order for, save a brand profile and name it as brand when you place the order. A small RoofQuery watermark stays in the footer.
Does the customer see RoofQuery anywhere?
Only as a small watermark in the PDF footer. The cover, header, contact block and attribution are yours. The XML has no branding at all.
Can each contractor I order for have their own logo?
Yes. Create a brand profile per contractor, upload their logo to it, and send the profile id as brand when you place their orders. Name, contact details, license number, colors and logo all come from the profile, on that report for good.
What happens to old reports if I change my branding?
They re-skin on their next download, because PDFs are drawn at request time and nothing is cached. Each report keeps the brand it was ordered with: yours, or the contractor's profile.