Quickstart
Two ways to your first article — pick how you build. The agentic path (MCP + skill) is recommended and needs no code; the raw REST API is right below. Either way, start by getting an API key.
1. Get an API key
Sign in to your dashboard and visit the Developers page. Click Create API key and copy the secret — it starts with sk_live_ and is shown only once.
Store it safely
Export the key in your shell so the rest of the examples just work:
export SEOLADDERS_API_KEY=sk_live_••••••••••••••••Option A — Agentic (recommended)
Best for Claude, Claude Code, Cursor, ChatGPT, or any agent. Add the MCP (the tools that run the work) + the skill (the SEO playbook + guided /seoladders commands) once, then drive the whole platform in plain language — no code.
Connect — pick your app:
In the Claude app (web + desktop), both live under Customize:
- Skills → + — upload the SEOLadders skill zip. Download the repo ZIP, zip the
seoladdersfolder, and upload it. - Connectors → Add custom connector — name it "SEO Ladders". The app has no header field, so put your key in the URL:
https://www.seoladders.com/api/mcp?key=sk_live_...Leave the OAuth fields blank → Add. The Skill gives Claude the process; the connector gives it execution — you want both.
Run your first action — ask for keyword ideas. It's instant and needs almost nothing from you:
/keyword-research best crm for startups…or just say "find keywords for a CRM for startups." You get ideas with real search volume, difficulty, and DR-match. From there, /write-article turns any of them into a full article, and /seoladders runs the whole pipeline.
The whole loop, hands-off
/seoladders runs the full pipeline — audit, find gaps, write, publish, and track where AI recommends you. Full per-client config + every command are in MCP Setup and the SEOLadders skill.Option B — REST API
Prefer raw HTTP? The same result in three calls — generate, poll, fetch. Generation is async: even a single article uses the batch endpoint with a one-item array.
Generate — returns a batchId immediately; the article runs in the background:
curl -X POST https://www.seoladders.com/api/v1/articles/batch \
-H "Authorization: Bearer $SEOLADDERS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "keyword": "best crm for startups" }
]
}'Poll until status === "completed" (usually 2–3 minutes):
curl https://www.seoladders.com/api/v1/batches/$BATCH_ID \
-H "Authorization: Bearer $SEOLADDERS_API_KEY"A completed batch returns:
{
"batchId": "btc_01HXY...",
"status": "completed",
"totalCount": 1,
"completedCount": 1,
"failedCount": 0,
"items": [
{
"articleId": "art_01HZ...",
"keyword": "best crm for startups",
"status": "ready",
"title": "Best CRM for Startups in 2026",
"wordCount": 3450,
"url": "https://www.seoladders.com/api/v1/articles/art_01HZ..."
}
]
}Fetch the finished article — title, body in Markdown and HTML, keyword, word count, JSON-LD schema, FAQ, and citation sources:
curl https://www.seoladders.com/api/v1/articles/$ARTICLE_ID \
-H "Authorization: Bearer $SEOLADDERS_API_KEY"Skip polling in production
webhookUrl in the batch request and we'll POST a signed article.ready event when each article finishes. See the Webhooks guide.Where next?
- Set up the agentic path in full — see MCP Setup
- Richer auth and key rotation — see Authentication
- Event callbacks for production — see Webhooks
- Every endpoint — see the API Reference