Skip to main content

Developers

Your workspace, readable from your stack.

Bearer-authenticated REST reads over the same live data the app shows. Mint a key in Settings → API access; it’s shown once and stored only as a hash.

Authentication

curl https://growthberry.ai/api/v1/guides \
  -H "Authorization: Bearer gbk_live_your_key_here"

Every key is scoped to one workspace — it can never read another workspace’s data. Keys carry an expiry you choose at creation (90 days recommended), and revoking one in Settings takes effect immediately.

Endpoints

No key needed — the audit badge

GET/api/badge/audit.svg?score=92&grade=A

The embeddable “Audited by GrowthBerry” SVG — public, cache-friendly, no auth. Run the free audit and the results page hands you a copy-paste snippet that links the badge back to your live re-checkable score.

Publish webhook — connect any CMS

WordPress and GitHub have native adapters; everything else connects here. Add a webhook on Your Site and every publish POSTs the full structured guide to your endpoint — a few lines in a serverless function or middleware turn it into a page via Webflow, Shopify, Ghost, Wix, or your own stack’s API.

POSTyour endpoint URL

Headers: x-growthberry-event: guide.published and x-growthberry-signature — an HMAC-SHA256 hex digest of the raw body, keyed with the secret you set when connecting. One signed delivery per publish, 10-second timeout, and every attempt (success or failure) lands in the Your Site delivery log.

// Payload
{
  "event": "guide.published",
  "tenant": "your-workspace",
  "slug": "california-lease-costs",
  "state_code": "CA",
  "template": "cost",
  "published_at": "2026-07-31T23:51:27Z",
  "guide": { "title": "…", "tldr": "…", "sections": [ … ],
             "faq": [ … ], "internal_links": [ … ], "citations": [ … ] }
}

// Verify the signature (Node)
import { createHmac, timingSafeEqual } from "node:crypto";
const expected = createHmac("sha256", process.env.GB_WEBHOOK_SECRET)
  .update(rawBody).digest("hex");
const ok = timingSafeEqual(Buffer.from(expected),
  Buffer.from(req.headers["x-growthberry-signature"]));

Example response — live validation

{
  "object": "guide",
  "id": 41,
  "slug": "new-york-pet-trust-checklist",
  "status": "generated",
  "guide": { "title": "…", "tldr": "…", "sections": [ … ] },
  "validation": {
    "score": 100,
    "checks": [ { "label": "Grounded in verified facts", "pass": true }, … ],
    "note": "computed live for this request"
  }
}

Fair use, honestly stated

Reads are free within reason for every workspace. There’s no hard rate limit yet — when one lands it will be documented here first, not discovered in your error logs. Write endpoints ship with scoped key permissions, not before.

Prefer tools over REST? Our MCP server exposes the audit engines directly inside Claude.