Pagination
Some list endpoints paginate and some return everything. The difference matters, so it is worth knowing which is which before you write a loop.
Paginated endpoints
GET /{workspace}/posts and GET /{workspace}/media are paginated and accept two query parameters:
| Parameter | Default | Notes |
|---|---|---|
limit | 50 | Page size. Values above 100 are silently clamped to 100. |
page | 1 | The page to return. |
curl -L -X GET 'https://example.com/mixpost/api/3bbd0951-5b04-432b-b2a0-688588b0720e/posts?limit=25&page=2' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>'
limit, not per_pageper_page appears in the response metadata, but it is not accepted as an input. Sending
?per_page=20 has no effect — you will silently get the default 50 per page. Use limit.
The response wraps the collection in data and adds links and meta:
{
"data": [],
"links": {
"first": "https://example.com/mixpost/api/{workspace}/posts?page=1",
"last": "https://example.com/mixpost/api/{workspace}/posts?page=4",
"prev": null,
"next": "https://example.com/mixpost/api/{workspace}/posts?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 4,
"path": "https://example.com/mixpost/api/{workspace}/posts",
"per_page": 50,
"to": 50,
"total": 187
}
}
To walk every page, follow links.next until it is null.
Both paginated workspace endpoints sort newest first, and neither accepts a sort parameter.
GET /{workspace}/posts breaks ties on id, so its order is stable across requests.
GET /{workspace}/media orders on created_at alone: files uploaded within the same second have
no further tiebreaker, so a page boundary falling between them can repeat or skip one.
Records created while you are walking shift the pages under you in either case, so a loop over a
busy workspace should de-duplicate — on uuid for posts, on id for media.
Non-paginated endpoints
GET /{workspace}/accounts and GET /{workspace}/tags return the complete set in one response.
They accept no limit or page — both are ignored — and the body has no links or meta:
{
"data": []
}
Don't paginate these; you already have everything.
Enterprise panel endpoints
GET /panel/workspaces, GET /panel/users and GET /panel/receipts are paginated at a fixed 20
per page. They accept page, but the page size is hardcoded and limit is ignored.
Summary
| Endpoint | Paginated | Page size |
|---|---|---|
GET /{workspace}/posts | yes | limit, default 50, max 100 |
GET /{workspace}/media | yes | limit, default 50, max 100 |
GET /{workspace}/accounts | no | returns all |
GET /{workspace}/tags | no | returns all |
GET /panel/workspaces | yes | fixed 20 |
GET /panel/users | yes | fixed 20 |
GET /panel/receipts | yes | fixed 20 |