Base URL: https://api.roofquery.com. Authenticate with Authorization: Bearer <your key> — except the file routes (report and storm report files), 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.
One balance funds every RoofQuery product, which is why this sits outside
/reports. Read live from Stripe, so credit added by hand in the Stripe
dashboard shows up immediately. Spend that hasn't finished settling is already
subtracted — available is what you can order against right now.
Also reachable at /api/v1/reports/balance, with an identical response,
for integrations that found it there first.
curl -H "Authorization: Bearer rq_live_sk_..." \
"https://api.roofquery.com/api/v1/balance"
{
"available": 247,
"currency": "usd",
"setupRequired": false,
"prices": {
"reports": { "residential": 10, "commercial": 30, "storm": 5 },
"addons": { "esx": 5 }
},
"remaining": { "residential": 24, "commercial": 8, "storm": 49 },
"residentialReportsRemaining": 24
}
remaining is how many of each product the balance covers right now, counted at
the report price without the ESX. prices.addons.esx is what the Xactimate ESX
adds to one roof report on this account.
residentialReportsRemaining is the same as remaining.residential, kept
for integrations written before remaining existed.
setupRequired: true means no card and no balance yet — see
BILLING_SETUP_REQUIRED under Errors.