# List and rank posts from watched accounts

Returns rank posts from watched accounts, one page at a time. Works with Instagram and YouTube accounts.

```http
GET https://api.pozy.ai/v1/watchlist/posts
```

- Area: Analytics / Watchlist
- Auth: Authorization: Bearer pz_live_...

## Query parameters

- `range` (string): one of 7d, 30d, 90d, all
- `since` (string)
- `until` (string)
- `platform` (string): one of instagram, youtube
- `watchedAccountId` (string)
- `list` (string)
- `format` (string)
- `minViews` (string)
- `minLikes` (string)
- `minComments` (string)
- `q` (string)
- `outlierMin` (number)
- `saved` (boolean)
- `notReplicated` (boolean)
- `sort` (string): one of views, engagement, engagementRate, outlier, newest
- `limit` (integer)
- `cursor` (string)

## Example request

```bash
curl -X GET "https://api.pozy.ai/v1/watchlist/posts?limit=30" \
  -H "Authorization: Bearer $POZY_API_KEY"
```

```ts
const res = await fetch("https://api.pozy.ai/v1/watchlist/posts?limit=30", {
  headers: { Authorization: `Bearer ${process.env.POZY_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data?.error ?? `Request failed with status ${res.status}`);
console.log(data);
```

```python
import os
import requests

resp = requests.get(
    "https://api.pozy.ai/v1/watchlist/posts",
    headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
    params={
        "limit": 30,
    },
    timeout=30,
)
resp.raise_for_status()
print(resp.json())
```

## Response 200

- `posts`, array of object
  - `id`, string, required
  - `platform`, string, required: One of `instagram`, `youtube`
  - `externalId`, string
  - `account`, object
    - `id`, string
    - `handle`, string
    - `displayName`, string: Can be null
    - `followers`, integer: Can be null
    - `list`, object: Can be null
      - `id`, string
      - `name`, string
  - `permalink`, string: Can be null
  - `format`, string, required: One of `reel`, `carousel`, `image`, `video`, `short`
  - `hook`, string: Can be null
  - `caption`, string: Can be null
  - `thumbnailUrl`, string: Can be null
  - `mediaUrl`, string: Can be null
  - `durationSec`, integer: Can be null
  - `postedAt`, string (date-time), required
  - `views`, integer: Can be null
  - `likes`, integer: Can be null
  - `comments`, integer: Can be null
  - `engagement`, integer
  - `engagementRate`, number: Can be null
  - `outlierScore`, number: Can be null
  - `outlierBasis`, string: One of `views`, `engagement`. Can be null
  - `statsUpdatedAt`, string (date-time)
  - `saved`, boolean
  - `replicated`, object: Can be null
    - `pozyPostId`, string: Can be null
    - `ruleId`, string: Can be null
    - `at`, string (date-time)
- `nextCursor`, string: Can be null

```json
{
  "posts": [
    {
      "id": "6bfebd43ddc270f6d2c56fc5",
      "platform": "instagram",
      "externalId": "62c9d6bdf3fa891362623a67",
      "account": {
        "id": "6bfebd43ddc270f6d2c56fc5",
        "handle": "acme",
        "displayName": "Acme",
        "followers": 1,
        "list": {
          "id": "6bfebd43ddc270f6d2c56fc5",
          "name": "Acme"
        }
      },
      "permalink": "string",
      "format": "reel",
      "hook": "string",
      "caption": "Hello from Pozy",
      "thumbnailUrl": "https://pozy.ai/media/example-1.jpg",
      "mediaUrl": "https://pozy.ai/media/example-1.jpg",
      "durationSec": 1,
      "postedAt": "2026-10-02T09:00:00.000Z",
      "views": 1,
      "likes": 1,
      "comments": 1,
      "engagement": 1,
      "engagementRate": 12.5,
      "outlierScore": 12.5,
      "outlierBasis": "views",
      "statsUpdatedAt": "2026-10-02T09:00:00.000Z",
      "saved": true,
      "replicated": {
        "pozyPostId": "65c07fe18b8de4a270f358ad",
        "ruleId": "6cd4059483de62b474d02fe7",
        "at": "2026-10-02T09:00:00.000Z"
      }
    }
  ],
  "nextCursor": "string"
}
```
