Api Reference
Recommendations
Fetch personalized article recommendations based on context signals.
Get Recommendations
GET
/v1/recommendationsReturns a list of recommended articles based on an article, tag, or general trending content. Public endpoint — no API key required — rate-limited per IP.
At least one of article_id or tag is recommended. Omitting both returns trending articles.
Query parameters
article_idstringqueryUUID of an article to find similar content for.
tagstringqueryTag slug to scope recommendations.
limitintegerquerydefault: 6Number of recommendations to return (max 20).
Response fields
(array)Array<Article>Array of recommended article objects. Each includes id, slug, title, excerpt, featured_image_url, published_at, read_time_seconds, tags, view_count, author, and url.
[
{
"id": "uuid",
"slug": "building-ai-apps-with-next-js",
"title": "Building AI Apps with Next.js",
"excerpt": "A practical guide to integrating AI into your Next.js applications.",
"featured_image_url": "https://supabase-blog.misar.io/storage/v1/object/public/covers/abc.jpg",
"published_at": "2026-04-15T09:00:00Z",
"read_time_seconds": 480,
"tags": ["nextjs", "ai", "tutorial"],
"view_count": 4210,
"author": {
"username": "johndoe",
"display_name": "John Doe",
"avatar_url": "https://supabase-blog.misar.io/storage/v1/object/public/avatars/johndoe.jpg"
},
"url": "https://www.misar.blog/@johndoe/articles/building-ai-apps-with-next-js"
}
]# Recommendations similar to a specific article
curl "https://api.misar.io/blog/v1/recommendations?article_id=550e8400-e29b-41d4-a716-446655440000&limit=6"
# Recommendations by tag
curl "https://api.misar.io/blog/v1/recommendations?tag=nextjs&limit=6"
# Trending (no context)
curl "https://api.misar.io/blog/v1/recommendations"// Similar articles
const res = await fetch(
"https://api.misar.io/blog/v1/recommendations?" +
new URLSearchParams({ article_id: "550e8400-e29b-41d4-a716-446655440000", limit: "6" })
);
const articles = await res.json();
for (const article of articles) {
console.log(article.title, article.url);
}Errors
400— Invalidarticle_idformat (must be a valid UUID)404—article_idnot found or article is not published429— Rate limit exceeded