Public API

Authenticate with API keys and roast any public URL from your own tooling.

Last updated: May 2026

Get your API key
Create keys in Dashboard โ†’ API Keys. New accounts can sign up free and start with 10 roast calls per day.

Base URL

http
https://growdeck.ai/api/public/v1

Authentication

Every request uses a Bearer token generated from the dashboard. GrowDeck only shows the raw key once, so copy it when you create it.

http
Authorization: Bearer sk-gd-your-api-key

Rate limits

  • FREE10 roast requests per day, up to 5 saved API keys
  • PRO100 roast requests per day, up to 20 saved API keys

Responses include X-RateLimit-Limit and X-RateLimit-Remaining headers so your integration can track remaining daily capacity.

POST /api/public/v1/roast

Send a public URL and GrowDeck returns the same SEO roast payload used by the product's built-in analyzer.

Request body

json
{
  "url": "https://example.com"
}

Response body

json
{
  "overallScore": 42,
  "topIssue": "Your homepage title reads like placeholder text.",
  "estimatedTrafficLoss": 1800,
  "roasts": [
    {
      "severity": "brutal",
      "title": "Missing keyword focus",
      "description": "Your homepage never tells search engines what problem you solve.",
      "impact": "high",
      "quickFix": "Rewrite the title and H1 around your primary search term."
    }
  ]
}

curl

bash
curl -X POST https://growdeck.ai/api/public/v1/roast \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-gd-your-api-key" \
  -d '{"url":"https://example.com"}'

JavaScript

js
const response = await fetch("https://growdeck.ai/api/public/v1/roast", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + process.env.GROWDECK_API_KEY,
  },
  body: JSON.stringify({ url: "https://example.com" }),
});

const roast = await response.json();
console.log(roast.overallScore, roast.topIssue);

Python

python
import os
import requests

response = requests.post(
    "https://growdeck.ai/api/public/v1/roast",
    headers={
        "Authorization": f"Bearer {os.environ['GROWDECK_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={"url": "https://example.com"},
)

roast = response.json()
print(roast["overallScore"], roast["topIssue"])
Tip for production integrations
Store the API key in an environment variable and never ship it in client-side browser code. If a key leaks, delete it from the dashboard and create a fresh one.