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/v1Authentication
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-keyRate 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.
