---
title: "List posts (sort='recent'|'top', default 20). sort='recent' requires identifier (provider_id, e.g. 'ACoAABGDkeIB...', or"
method: GET
path: "/api/v1/content/posts"
tags: ["content"]
---

# List posts (sort='recent'|'top', default 20). sort='recent' requires identifier (provider_id, e.g. 'ACoAABGDkeIB...', or

`GET /api/v1/content/posts`

## Request

- Base URL: `https://crispy.sh`
- URL: `https://crispy.sh/api/v1/content/posts`
- Auth: HTTP bearer

## Query parameters

- `identifier` string: Whose posts to list. Accepts provider_id (e.g. 'ACoAABGDkeIB...'), slug (e.g. 'john-doe-123'), or full URL. Required for sort='recent'.
- `sort` 'recent' | 'top': Sort order: 'recent' (default, chronological by identifier) or 'top' (your top posts by engagement score).
- `limit` number: Max number of posts to return (1-100 for recent, 1-25 for top; default 20/10)
- `metric` 'impressions' | 'reactions' | 'comments' | 'reposts' | 'engagement_rate': Rank by this metric when sort='top' (default: impressions)
- `days` number: For recent posts, return only posts published within this many days; for top posts, only posts published within this many days are ranked; omitted means no window (live) or 30 days (cached fallback). Undated posts are excluded from recent results.
- `is_company` boolean: Set to true if the identifier is a company (sort='recent' only)
- `cursor` string: Pagination cursor (sort='recent' only)

## Response `200`

Success

## Other responses

- `401`: Missing or expired API key
- `403`: Insufficient key scope or permission denied
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/crispy/apis/crispy-rest-api.md) · [All operations](https://skmtc.dev/crispy/apis/crispy-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crispy/apis/crispy-rest-api/revisions/6bed0974d9ce?raw)
