REST API overview
The RankPine REST API — programmatic access to keywords, articles, Search Console data, and generation, built for scripts and autonomous AI agents alike.
RankPine isn't just user-friendly — it's agent-friendly. Everything your dashboard can do with keywords, articles, and Search Console data is available over a plain REST API, and as an MCP server your AI agents can plug straight into.
- Base URL:
https://rankpine.com/api/v1 - Format: JSON in, JSON out (
snake_casefields) - Auth: API key as a bearer token
- MCP endpoint:
https://rankpine.com/api/mcp
Authentication
Create a key in Settings → API keys (any RankPine account). Keys look like
rp_live_… and are shown once at creation — store them like passwords.
Pass the key on every request:
curl https://rankpine.com/api/v1/me \
-H "Authorization: Bearer rp_live_your_key_here"{
"user": { "id": "usr_…", "email": "[email protected]" },
"api_key": { "id": "…", "name": "Claude Code" },
"sites": [
{
"id": "0d3f1c9a-…",
"url": "https://yoursite.com",
"name": "Your Site",
"niche": "developer tools",
"language": "en",
"additional_languages": ["de", "es"],
"geo": "global",
"autopilot": true,
"is_active": true,
"created_at": "2026-05-02T09:12:00.000Z"
}
],
"subscription": { "status": "active", "site_count": 1, "interval": "month" }
}A key can access every site its owner can access — call GET /v1/me or
GET /v1/sites first to get site ids for the per-site endpoints.
Rate limits
| Window | Limit |
|---|---|
| Per minute | 120 requests per key |
| Per day | 10,000 requests per key |
Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and
X-RateLimit-Reset (unix seconds) for the per-minute window. Exceeding a limit
returns 429 with a Retry-After header. Endpoints that run or enqueue AI work
(suggest, generate) have tighter per-hour caps, documented on each endpoint.
Errors
Errors are JSON with a machine-readable code:
{
"error": {
"code": "quota_exceeded",
"message": "This site has used all 30 articles for the current period (resets 2026-08-01T00:00:00.000Z)."
}
}| Status | Meaning |
|---|---|
400 | Malformed request — error.details lists the failing fields |
401 | Missing, invalid, or revoked API key |
403 | Key is valid but the action isn't allowed (quota, inactive site) |
404 | Resource doesn't exist, or belongs to another account |
429 | Rate limited — honor Retry-After |
5xx | Our fault — retry with backoff |
Pagination
List endpoints take ?page= (default 1) and ?per_page= (default 20, max 100)
and respond with the page envelope:
{ "data": ["…"], "page": 1, "per_page": 20, "total": 143 }Async operations
Article and keyword generation is asynchronous — the endpoint returns
202 Accepted immediately and the work runs in RankPine's pipeline (a full
article takes several minutes). Poll the corresponding list/detail endpoint for
progress; the response's message field tells you exactly what to poll.
Endpoints at a glance
| Area | Endpoints |
|---|---|
| Account | GET /me |
| Sites | GET /sites · GET /sites/{site_id} |
| Keywords | GET, POST /sites/{site_id}/keywords · POST …/keywords/generate · POST …/keywords/suggest · POST …/keywords/bulk-delete · DELETE …/keywords/{id} |
| Articles | GET /sites/{site_id}/articles · GET …/articles/{id} · POST …/articles/generate |
| Search Console | GET /sites/{site_id}/gsc · POST …/gsc/sync · GET …/gsc/performance · GET …/gsc/top-queries |
| Billing | GET /subscription |
Building with an AI agent? Skip the HTTP plumbing entirely and point it at the MCP server — the same capabilities as native tools.