API Documentation

RankGuru API

The RankGuru API allows you to programmatically generate SEO-optimized content, analyze URLs, and publish articles to your CMS.

Base URL:

https://api.rankguru.pro/v1

Available on: Pro and Business plans

Authentication

Authenticate using Bearer tokens in the Authorization header.

Getting Your API Key

  1. Go to Dashboard → Settings → API
  2. Click Generate API Key
  3. Copy and store securely (shown only once)

Making Requests

bash
curl https://api.rankguru.pro/v1/articles \
-H "Authorization: Bearer rg_live_xxxxxxxxxx"

API Key Types

  • rg_live_* - Production keys
  • rg_test_* - Test keys (sandbox, no credits used)

Rate Limits

PlanRequests/minRequests/day
Pro601,000
Business1205,000

Headers

Every response includes rate limit headers:

  • X-RateLimit-Limit: Max requests allowed
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Unix timestamp when limit resets

Exceeding Limits: Returns 429 Too Many Requests with Retry-After header.

Error Handling

HTTP Status Codes

CodeDescription
200Success
201Created
400Bad Request - Invalid parameters
401Unauthorized - Invalid API key
403Forbidden - Insufficient permissions
404Not Found
429Rate Limited
500Server Error

Error Response Format

json
{
<span class="text-blue-400">"error"</span>: {
<span class="text-blue-400">"code"</span>: <span class="text-green-400">"invalid_parameter"</span>,
<span class="text-blue-400">"message"</span>: <span class="text-green-400">"The 'topic' parameter is required"</span>,
<span class="text-blue-400">"param"</span>: <span class="text-green-400">"topic"</span>
}
}

Pagination

List endpoints return paginated results with metadata about the current page and total items.

json
{
<span class="text-blue-400">"data"</span>: [...],
<span class="text-blue-400">"pagination"</span>: {
<span class="text-blue-400">"page"</span>: <span class="text-orange-400">1</span>,
<span class="text-blue-400">"limit"</span>: <span class="text-orange-400">10</span>,
<span class="text-blue-400">"total"</span>: <span class="text-orange-400">45</span>,
<span class="text-blue-400">"total_pages"</span>: <span class="text-orange-400">5</span>
}
}

Generate Article

Create an AI-generated SEO-optimized article.

POST/v1/articles/generate

Request Body

ParameterTypeRequiredDescription
topicstringRequiredArticle topic or title
keywordsarrayNoTarget keywords
languagestringNoLanguage code (default: en)
word_countnumberNoTarget words (500-5000, default: 1500)
tonestringNoprofessional, casual, formal
templatestringNoTemplate ID to use
include_imagesbooleanNoGenerate AI images
include_videosbooleanNoSuggest YouTube videos

Example Request

bash
curl -X POST https://api.rankguru.pro/v1/articles/generate \
-H "Authorization: Bearer rg_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"topic": "Best SEO Tools in 2026",
"keywords": ["seo tools", "seo software"],
"language": "en",
"word_count": 2000,
"tone": "professional",
"include_images": true
}'

Response

json
1{
2 <span class="text-blue-400">"id"</span>: <span class="text-green-400">"art_abc123"</span>,
3 <span class="text-blue-400">"status"</span>: <span class="text-green-400">"completed"</span>,
4 <span class="text-blue-400">"title"</span>: <span class="text-green-400">"10 Best SEO Tools in 2026: Complete Guide"</span>,
5 <span class="text-blue-400">"content"</span>: <span class="text-green-400">"<h1>10 Best SEO Tools...</h1>..."</span>,
6 <span class="text-blue-400">"word_count"</span>: <span class="text-orange-400">2156</span>,
7 <span class="text-blue-400">"seo_score"</span>: <span class="text-orange-400">92</span>,
8 <span class="text-blue-400">"keywords_used"</span>: ["seo tools", "seo software"],
9 <span class="text-blue-400">"images"</span>: [
10 {<span class="text-blue-400">"url"</span>: <span class="text-green-400">"https://..."</span>, <span class="text-blue-400">"alt"</span>: <span class="text-green-400">"SEO tools comparison"</span>}
11 ],
12 <span class="text-blue-400">"meta"</span>: {
13 <span class="text-blue-400">"title"</span>: <span class="text-green-400">"10 Best SEO Tools in 2026 | Expert Guide"</span>,
14 <span class="text-blue-400">"description"</span>: <span class="text-green-400">"Discover the top SEO tools..."</span>
15 },
16 <span class="text-blue-400">"created_at"</span>: <span class="text-green-400">"2026-01-09T12:00:00Z"</span>
17}

Credits Used: Standard article = 1 credit | With AI images = +0.5 credits per image

Try it out

POST/v1/articles/generate
Try it out

Parameters

List Articles

Retrieve all articles for your account.

GET/v1/articles

Query Parameters

ParameterTypeDescription
pagenumberPage number (default: 1)
limitnumberItems per page (max: 100)
statusstringFilter: draft, published, all
sortstringcreated_at, updated_at, seo_score
orderstringasc or desc

Example Request

bash
curl https://api.rankguru.pro/v1/articles?limit=10&status=published \
-H "Authorization: Bearer rg_live_xxx"

Response

json
1{
2 <span class="text-blue-400">"data"</span>: [
3 {
4 <span class="text-blue-400">"id"</span>: <span class="text-green-400">"art_abc123"</span>,
5 <span class="text-blue-400">"title"</span>: <span class="text-green-400">"Best SEO Tools 2026"</span>,
6 <span class="text-blue-400">"status"</span>: <span class="text-green-400">"published"</span>,
7 <span class="text-blue-400">"seo_score"</span>: <span class="text-orange-400">92</span>,
8 <span class="text-blue-400">"word_count"</span>: <span class="text-orange-400">2156</span>,
9 <span class="text-blue-400">"created_at"</span>: <span class="text-green-400">"2026-01-09T12:00:00Z"</span>
10 }
11 ],
12 <span class="text-blue-400">"pagination"</span>: {
13 <span class="text-blue-400">"page"</span>: <span class="text-orange-400">1</span>,
14 <span class="text-blue-400">"limit"</span>: <span class="text-orange-400">10</span>,
15 <span class="text-blue-400">"total"</span>: <span class="text-orange-400">45</span>,
16 <span class="text-blue-400">"total_pages"</span>: <span class="text-orange-400">5</span>
17 }
18}

Get Article

Retrieve a single article by ID.

GET/v1/articles/:id

Path Parameters

id - Article ID (e.g., art_abc123)

Query Parameters

format - html (default), markdown, json

Example Request

bash
curl https://api.rankguru.pro/v1/articles/art_abc123 \
-H "Authorization: Bearer rg_live_xxx"

Update Article

Update an existing article.

PATCH/v1/articles/:id

Request Body

ParameterTypeDescription
titlestringNew title
contentstringNew content (HTML)
statusstringdraft or published

Example Request

bash
curl -X PATCH https://api.rankguru.pro/v1/articles/art_abc123 \
-H "Authorization: Bearer rg_live_xxx" \
-d '{"status": "published"}'

Delete Article

Permanently delete an article.

DELETE/v1/articles/:id

Example Request

bash
curl -X DELETE https://api.rankguru.pro/v1/articles/art_abc123 \
-H "Authorization: Bearer rg_live_xxx"

Response

json
{
<span class="text-blue-400">"deleted"</span>: <span class="text-purple-400">true</span>,
<span class="text-blue-400">"id"</span>: <span class="text-green-400">"art_abc123"</span>
}

Export Article

Export article in various formats.

GET/v1/articles/:id/export

Query Parameters

format - pdf, docx, markdown, txt

Example Request

bash
curl https://api.rankguru.pro/v1/articles/art_abc123/export?format=pdf \
-H "Authorization: Bearer rg_live_xxx"

Analyze URL

Get SEO analysis for any URL.

POST/v1/seo/analyze

Request Body

ParameterTypeRequiredDescription
urlstringRequiredURL to analyze
keywordstringNoTarget keyword to check

Response

json
1{
2 <span class="text-blue-400">"url"</span>: <span class="text-green-400">"https://example.com/blog/post"</span>,
3 <span class="text-blue-400">"seo_score"</span>: <span class="text-orange-400">78</span>,
4 <span class="text-blue-400">"issues"</span>: [
5 {<span class="text-blue-400">"type"</span>: <span class="text-green-400">"warning"</span>, <span class="text-blue-400">"message"</span>: <span class="text-green-400">"Meta description too short"</span>},
6 {<span class="text-blue-400">"type"</span>: <span class="text-green-400">"error"</span>, <span class="text-blue-400">"message"</span>: <span class="text-green-400">"Missing H1 tag"</span>}
7 ],
8 <span class="text-blue-400">"recommendations"</span>: [
9 "Add keyword to title",
10 "Increase content length"
11 ],
12 <span class="text-blue-400">"metrics"</span>: {
13 <span class="text-blue-400">"word_count"</span>: <span class="text-orange-400">850</span>,
14 <span class="text-blue-400">"headings"</span>: {<span class="text-blue-400">"h1"</span>: <span class="text-orange-400">0</span>, <span class="text-blue-400">"h2"</span>: <span class="text-orange-400">3</span>, <span class="text-blue-400">"h3"</span>: <span class="text-orange-400">5</span>},
15 <span class="text-blue-400">"images"</span>: <span class="text-orange-400">2</span>,
16 <span class="text-blue-400">"links"</span>: {<span class="text-blue-400">"internal"</span>: <span class="text-orange-400">5</span>, <span class="text-blue-400">"external"</span>: <span class="text-orange-400">3</span>}
17 }
18}

Keyword Research

Discover related keywords for your topic.

POST/v1/seo/keywords

Request Body

ParameterTypeRequiredDescription
keywordstringRequiredSeed keyword
countrystringNoCountry code (default: US)
limitnumberNoMax results (default: 50)

Example Request

bash
curl -X POST https://api.rankguru.pro/v1/seo/keywords \
-H "Authorization: Bearer rg_live_xxx" \
-d '{"keyword": "seo tools", "country": "US", "limit": 20}'

Response

json
1{
2 <span class="text-blue-400">"keywords"</span>: [
3 {
4 <span class="text-blue-400">"keyword"</span>: <span class="text-green-400">"best seo tools"</span>,
5 <span class="text-blue-400">"search_volume"</span>: <span class="text-orange-400">12000</span>,
6 <span class="text-blue-400">"difficulty"</span>: <span class="text-orange-400">65</span>,
7 <span class="text-blue-400">"cpc"</span>: <span class="text-orange-400">4</span>.25
8 },
9 {
10 <span class="text-blue-400">"keyword"</span>: <span class="text-green-400">"free seo tools"</span>,
11 <span class="text-blue-400">"search_volume"</span>: <span class="text-orange-400">8500</span>,
12 <span class="text-blue-400">"difficulty"</span>: <span class="text-orange-400">45</span>,
13 <span class="text-blue-400">"cpc"</span>: <span class="text-orange-400">2</span>.50
14 }
15 ]
16}

SERP Check

Check search engine rankings for a URL.

POST/v1/seo/serp

Request Body

ParameterTypeRequiredDescription
urlstringRequiredURL to check
keywordstringRequiredKeyword to check ranking for
countrystringNoCountry code (default: US)

AI Detection Check

Check if content appears AI-generated.

POST/v1/seo/ai-detection

Request Body

ParameterTypeRequiredDescription
contentstringRequiredText content to analyze

Response

json
{
<span class="text-blue-400">"ai_score"</span>: <span class="text-orange-400">15</span>,
<span class="text-blue-400">"classification"</span>: <span class="text-green-400">"human"</span>,
<span class="text-blue-400">"confidence"</span>: <span class="text-orange-400">0</span>.92
}

WordPress Publish

Publish article directly to WordPress.

POST/v1/integrations/wordpress/publish

Request Body

ParameterTypeRequiredDescription
article_idstringRequiredRankGuru article ID
site_idstringRequiredConnected WordPress site ID
statusstringNopublish or draft (default: publish)
categoriesarrayNoWordPress category IDs

Webflow Publish

Publish article directly to Webflow CMS.

POST/v1/integrations/webflow/publish

Request Body

ParameterTypeRequiredDescription
article_idstringRequiredRankGuru article ID
site_idstringRequiredConnected Webflow site ID
collection_idstringRequiredWebflow collection ID

Webhook Events

Configure webhooks to receive real-time notifications about events in your RankGuru account.

Available Events

EventDescription
article.createdNew article generated
article.publishedArticle published to CMS
credits.lowCredits below threshold

Webhook Payload

json
{
<span class="text-blue-400">"event"</span>: <span class="text-green-400">"article.created"</span>,
<span class="text-blue-400">"timestamp"</span>: <span class="text-green-400">"2026-01-09T12:00:00Z"</span>,
<span class="text-blue-400">"data"</span>: {
<span class="text-blue-400">"id"</span>: <span class="text-green-400">"art_abc123"</span>,
<span class="text-blue-400">"title"</span>: <span class="text-green-400">"Best SEO Tools 2026"</span>,
<span class="text-blue-400">"status"</span>: <span class="text-green-400">"completed"</span>
}
}

Article Object

The article object represents a generated article.

Attributes

AttributeTypeDescription
idstringUnique article identifier
titlestringArticle title
contentstringHTML content
statusstringdraft or published
seo_scorenumberSEO score (0-100)
word_countnumberTotal word count
created_atstringISO 8601 timestamp

Keyword Object

The keyword object contains SEO metrics for a keyword.

Attributes

AttributeTypeDescription
keywordstringThe keyword phrase
search_volumenumberMonthly search volume
difficultynumberSEO difficulty (0-100)
cpcnumberCost per click (USD)

Analysis Object

The analysis object contains SEO analysis results for a URL.

Attributes

AttributeTypeDescription
urlstringAnalyzed URL
seo_scorenumberOverall SEO score (0-100)
issuesarrayList of issues found
recommendationsarrayImprovement suggestions
metricsobjectDetailed metrics