RankScore API
Pull RankScore-generated articles into Lovable, Replit, Bolt, or any custom CMS. WordPress and Shopify use dashboard push integrations; this API is for everything else.
Get your API key
- Open your project in RankScore.
- Go to Integrations → API → Manage.
- Click Generate API key and copy it immediately (shown once).
Authentication
All requests use API key authentication:
X-API-Key: <your-api-key>Content-Type: application/json
Base URL: https://dashboard.rankscore.co/api/integrations/v1 (replace with your RankScore deployment origin).
List recent articles
curl -X GET "https://dashboard.rankscore.co/api/integrations/v1/articles?limit=5&offset=0" \ -H "X-API-Key: your_api_key_here" \ -H "Content-Type: application/json"
Returns an array of article summaries (no content_html or content_markdown ). Use GET /articles/:id for full content.
Query parameters: limit (default 100, max 500), offset (default 0). Articles are sorted newest first. Only completed articles with content are included.
Fetch one article
curl -X GET "https://dashboard.rankscore.co/api/integrations/v1/articles/YOUR_ARTICLE_UUID" \ -H "X-API-Key: your_api_key_here" \ -H "Content-Type: application/json"
Returns content_html , content_markdown , meta_description , hero_image_url , slug , keyword , keywords , and more.
Publish to your CMS
- Fetch an article from RankScore.
- Map fields:
title,content_html(orcontent_markdown),meta_description,slug,hero_image_url. - Create or upsert the post in your CMS API.
Node.js example
const BASE = process.env.RANKSCORE_API_BASE;
const KEY = process.env.RANKSCORE_API_KEY;
async function syncArticle(articleId) {
const res = await fetch(`${BASE}/articles/${articleId}`, {
headers: { "X-API-Key": KEY },
});
if (!res.ok) throw new Error(`API error: ${res.status}`);
const article = await res.json();
await fetch("https://your-cms.example.com/posts", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
slug: article.slug,
title: article.title,
html: article.content_html,
description: article.meta_description,
image: article.hero_image_url,
}),
});
}
Pagination (Node.js)
async function fetchAllArticles() {
const all = [];
let offset = 0;
const limit = 50;
while (true) {
const res = await fetch(
`${BASE}/articles?limit=${limit}&offset=${offset}`,
{ headers: { "X-API-Key": KEY } }
);
if (!res.ok) throw new Error(`API error: ${res.status}`);
const batch = await res.json();
if (batch.length === 0) break;
all.push(...batch);
if (batch.length < limit) break;
offset += limit;
}
return all;
}
Troubleshooting
- 401 Unauthorized — Check the
X-API-Keyheader and that the key was not revoked. - 404 Not found — Article may still be generating, or the ID does not belong to this project's key.
- 429 Rate limit — Back off and retry; limit is 60 requests per minute per API key.
HTML vs Markdown
Use content_html for most CMS platforms. Use content_markdown if your stack prefers Markdown. Styling on the live site is controlled by your theme/CSS; RankScore delivers semantic content.