DocsREST API
REST API quickstart.
Plain HTTP. JSON in, JSON out. Pass a Bearer token, get things back. Works from any language.
1. Get an API key
Sign in and open /dashboard/developers. Click Create key. Copy the secret right away. You will not see it again.
2. Make a call
The simplest call: who am I?
curl https://api.seoable.dev/v1/me \ -H "Authorization: Bearer sk_live_...your_key..."
You get back JSON with your user id, the key id you called with, and your current credit balance.
3. Order a fresh report
Pick a project id from GET /v1/projects, then post to /v1/reports:
curl -X POST https://api.seoable.dev/v1/reports \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"project_id":"prj_abc123","type":"full","blog_post_count":100}'Response includes a report_id. The work runs in the background. Poll it with GET /v1/reports/<id>.
Auth: API key OR Clerk OAuth
Every endpoint accepts either:
- A Seoable API key:
Authorization: Bearer sk_live_.... Best for headless code, Cron jobs, anything that runs without a browser. - A Clerk OAuth access token:
Authorization: Bearer eyJ.... Best for tools that already sign users in with Clerk and want to call Seoable on their behalf. See the MCP guide for the discovery flow.
Errors
Errors come back with the same shape every time:
{
"error": {
"code": "insufficient_credits",
"message": "This call costs 9000 credits. Your balance is 0."
}
}Full reference
The full OpenAPI 3.1 spec, every endpoint, every payload:
Want it in your AI assistant instead?
See MCP setup for Claude, Cursor, ChatGPT, and Copilot.