DoneHat API reference
DoneHat has two API surfaces: public audit endpoints for free reports and a Pro/Enterprise brand-account API for programmatic access to brand accounts, visibility scans, answer checks, issues, and analysis outputs.
https://api.donehat.com/apiAuthenticated base: https://api.donehat.com/api/v1Content-Type: application/jsonSpreadsheets and BI tools
Paste a CSV endpoint URL with ?key=… into Google Sheets (IMPORTDATA) or your BI tool's URL connector, then build Looker Studio reports from that sheet. Treat the key like a password: anyone who can open the sheet can read it, and you can revoke it under API keys. Two trailing columns, window_days and window_n, are filled on daily and twice-daily plans (a 7-day pooled window) and empty on weekly plans.
Authentication
Public audit endpoints are rate-limited and do not require an API key. Brand-account endpoints requireAuthorization: Bearer dk_live_...and API access is limited to Pro and Enterprise plans. Create keys inside the app from Developer API Keys.
curl https://api.donehat.com/api/v1/workspaces \
-H "Authorization: Bearer dk_live_your_key"Public audit endpoints
Used by the free audit, share links, badges, generated content, and public benchmark data.
/api/auditApp sessionRun a public AI visibility audit
Starts an audit for a signed-in user with verified email and a completed business profile. Free access also requires a business email and an unused one-time trial. Paid entitlements govern ongoing AI work; existing report links remain public.
Parameters
url(string, required)- Website or domain to audit.brandContext.tagline(string, optional)- Optional positioning line.brandContext.pricingModel(string, optional)- Optional pricing model context.brandContext.targetMarket(string, optional)- Optional target customer context.
/api/audit/:refPublicFetch a public audit report
Resolves a cached audit by id or slug and returns the same report object shown in the public audit UI.
/api/audit/s/:slugPublicFetch a public audit by share slug
Returns a public audit report by its share-friendly slug.
/api/audit/:ref/pdfPublicDownload audit PDF
Returns a PDF version of a public audit. A brand-account query parameter can apply configured agency branding.
/api/audit/:ref/sharePublicEmail a public audit
Sends an audit share email to one or more recipients.
Parameters
emails(string[], required)- One to twenty recipient email addresses.senderNote(string, optional)- Optional note included in the email.
/api/audit/:ref/badge.svgPublicEmbed score badge
Returns an SVG badge with the audit score and grade for use on a website or report.
/api/audit/:ref/generate/comparisonPublicGenerate a comparison outline
Returns an evidence-backed comparison page outline for the audited brand and a named competitor.
Parameters
competitor(string, required)- Competitor brand name.
/api/audit/:ref/generate/faqPublicGenerate FAQ content
Returns FAQ copy and FAQPage JSON-LD based on missed buyer questions in the audit.
/api/audit/:ref/generate/schemaPublicGenerate schema markup
Returns Organization and SoftwareApplication-oriented JSON-LD when the audit has enough brand context.
/api/audit/:ref/generate/llms-txtPublicGenerate llms.txt
Returns a tailored llms.txt response. Add ?download=1 to download the text file.
/api/indexPublicList visibility index categories
Returns public AI Visibility Index category summaries.
/api/index/:verticalIdPublicFetch a vertical leaderboard
Returns ranked brands for one vertical. Supports ?limit=50, capped at 100.
/api/index/:verticalId/rank?brand=NamePublicLook up a brand rank
Returns rank, total, and percentile for a brand in a vertical.
/api/benchmarks/:categoryPublicFetch benchmark score
Matches a category string to the benchmark library and returns the current benchmark score when available.
Authenticated brand-account API
Available to Pro and Enterprise users with API keys.
/api/v1/workspacesBearer API keyList accessible brand accounts
Returns brand-account summaries for the API key owner.
/api/v1/workspaces/:idBearer API keyFetch brand-account payload
Returns the full brand-account payload used by the app dashboard.
/api/v1/workspaces/:id/baselinesBearer API keyQueue a visibility scan
Queues a visibility scan. The API key owner must have owner or editor access to the brand account.
/api/v1/workspaces/:id/issuesBearer API keyList brand-account issues
Returns issue type, priority, status, summary, buyer-question group, and recommendation fields.
/api/v1/workspaces/:id/observationsBearer API keyList observations
Returns answer checks for a brand account. Add ?baselineId=... to filter to one scan.
/api/v1/workspaces/:id/share-of-voiceBearer API keyCompute share of voice
Computes brand share of voice against configured competitors using the latest visibility scan.
/api/v1/workspaces/:id/observations.csvBearer API keyExport observations as CSV
The observations list as RFC 4180 CSV for spreadsheets and BI tools. Also accepts ?key=dk_live_… for importers that cannot set headers; ?baselineId=... filters to one scan.
/api/v1/workspaces/:id/share-of-voice.csvBearer API keyExport share of voice as CSV
Competitor rankings from the latest usable scan, one row per brand, with the 95% range and the measurement status repeated on every row. Two trailing columns, window_days and window_n, are filled on daily and twice-daily plans (a 7-day pooled window) and empty on weekly plans.
/api/v1/workspaces/:id/citeabilityBearer API keyRun citeability analysis
Analyzes the brand-account website for answer-friendly content, schema, proof density, freshness, and llms.txt signals.
/api/v1/workspaces/:id/fact-checkBearer API keyCheck claims against brand facts
Compares latest observations against configured brand facts and returns accuracy metrics.
/api/v1/keysApp sessionCreate API key
Session-authenticated app endpoint. API key creation is available on Pro and Enterprise.
/api/v1/keysApp sessionList API keys
Session-authenticated app endpoint that returns key metadata, not secret values.
/api/v1/keys/:idApp sessionDelete API key
Session-authenticated app endpoint that deletes one key owned by the current user.
Limits and errors
API key requests are limited to 100 requests per minute per key. Public audit endpoints use stricter anti-abuse limits by IP and user agent. Error responses use JSON with an error field. For higher-volume use, contact us.