Content API reference
The public-article-api endpoint: list published articles with limit and offset, fetch one by id, response fields and errors.
The content API is read-only. It returns the published articles of the project that owns your API key, as JSON, so your site can show them on its own pages.
Endpoint
GET https://odbowhcyfpzsifyibsdu.supabase.co/functions/v1/public-article-apiOne address for both calls. Send your key in the X-Rankfender-Key header (see Your API key). Only articles with the status "published" are returned.
List your articles
Without an id, the API returns a page of articles, newest first.
| Parameter | Default | What it does |
|---|---|---|
| limit | 10 | How many articles to return, from 1 to 100. |
| offset | 0 | How many articles to skip. Use it with has_more to page through. |
curl "https://odbowhcyfpzsifyibsdu.supabase.co/functions/v1/public-article-api?limit=10&offset=0" \
-H "X-Rankfender-Key: rfk_your_key"{
"success": true,
"articles": [
{
"id": "8c1f…",
"title": "…",
"description": "…",
"language": "en",
"published_at": "2026-10-14T09:12:00Z",
"updated_at": "2026-10-14T09:30:00Z"
}
],
"pagination": { "limit": 10, "offset": 0, "count": 1, "total": 1, "has_more": false }
}The list gives each article's id, title, description, language and dates, without the content. Take the id from here to fetch one article.
Get one article
With id, the API returns that article with its full content as HTML.
curl "https://odbowhcyfpzsifyibsdu.supabase.co/functions/v1/public-article-api?id=ARTICLE_ID" \
-H "X-Rankfender-Key: rfk_your_key"{
"success": true,
"article": {
"id": "8c1f…",
"title": "…",
"content": "<h2>…</h2><p>…</p>",
"description": "…",
"language": "en",
"published_at": "2026-10-14T09:12:00Z",
"updated_at": "2026-10-14T09:30:00Z"
}
}Fields
| Field | Meaning |
|---|---|
| id | The article's identifier. |
| title | The article title. |
| content | The article body as HTML (single article only). |
| description | The meta description. |
| language | The project's language code, for example en or fr. |
| published_at | The publication date, or the creation date if none was set. |
| updated_at | The last change. |
| pagination.total / has_more | How many published articles exist, and whether another page follows. |
Errors
| Status | Message | What to do |
|---|---|---|
| 401 | "API key required. Pass via X-Rankfender-Key header." | Add the header. |
| 401 | "Invalid API key" | Check the key; generate a new one if it was replaced. |
| 404 | "Article not found or not published" | The id is wrong, belongs to another project, or the article is not published. |
| 500 | "Internal server error" | Try again; contact support if it persists. |
Example in JavaScript
Call the API from server-side code so the key never reaches visitors' browsers.
// Server-side code (Node 18+, Next.js server component, etc.)
const res = await fetch(
"https://odbowhcyfpzsifyibsdu.supabase.co/functions/v1/public-article-api?limit=10",
{ headers: { "X-Rankfender-Key": process.env.RANKFENDER_KEY } }
);
const { articles, pagination } = await res.json();Note
The card's "Direct API" example is the one to copy. Its Next.js, React, Vue and iframe examples load a script that is not available, so use plain HTTP calls like the ones on this page.