# List published posts

> Public, unauthenticated listing used by the live blog UI for pagination and tag filters.

HTML version: https://blogizi.com/docs/api-site-posts
Markdown version: https://blogizi.com/docs/api-site-posts.md

## Request

```http
GET /api/sites/{projectSlug}/posts?page=1&limit=10&tag=optional
```

- `page` — 1-based, default `1`
- `limit` — max `50`, default `10`
- `tag` — optional tag filter

## Response

```json
{
  "posts": [],
  "total": 42,
  "hasMore": true
}
```

No API key required. CORS is enabled for public blog clients.
