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

API keys grant full access to your account. Never commit them to source control. Use environment variables locally and a secrets manager in production (Vercel env, AWS Secrets Manager, Doppler).

Export the key in your shell so the rest of the examples just work:

bash
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:

  1. Skills → + — upload the SEOLadders skill zip. The quickest way to get one is to ask Claude for it: paste Package the skill at https://github.com/Kwesi-dev/seo-ladders-skill.git into a zip I can upload and it hands the file back. Or download the repo ZIP and zip the seoladders folder yourself.
  2. Connectors → Add custom connector — name it SEOLadders, paste the URL below, then Continue:
text
https://www.seoladders.com/api/mcp

On the next screen leave both defaults as Claude detects them — Authentication: Always required and OAuth client: No client ID — register one automatically. Leave the headers section empty, then Add Connect.

Claude sends you to SEOLadders to sign in and approve access, then connects itself. No API key anywhere: if you are signed out you get the usual magic-link email, and approving takes one click. 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:

text
/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

Beyond one keyword, /seoladders runs the full pipeline — audit, find gaps, write, publish, and track where AI recommends you. Setting up both halves, and every command, is in MCP + 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):

bash
curl https://www.seoladders.com/api/v1/batches/$BATCH_ID \
  -H "Authorization: Bearer $SEOLADDERS_API_KEY"

A completed batch returns:

json
{
  "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:

bash
curl https://www.seoladders.com/api/v1/articles/$ARTICLE_ID \
  -H "Authorization: Bearer $SEOLADDERS_API_KEY"

Skip polling in production

Pass webhookUrl in the batch request and we'll POST a signed article.ready event when each article finishes. See the Webhooks guide.

Where next?