Misar Docs
MisarMailMisar.BlogMisarReachMisarPostMisar.DevMisar PlatformMisar IdentityMisar Posts API
Api Reference

Recommendations

Fetch personalized article recommendations based on context signals.

Get Recommendations

GET/v1/recommendations

Returns 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_idstringquery

UUID of an article to find similar content for.

tagstringquery

Tag slug to scope recommendations.

limitintegerquerydefault: 6

Number 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 — Invalid article_id format (must be a valid UUID)
  • 404article_id not found or article is not published
  • 429 — Rate limit exceeded