# List posts

URL: https://clippie.ai/developers/docs/list-posts

Lists posts made or scheduled from Clippie, newest scheduled time first: status (SCHEDULED, PUBLISHING, PUBLISHED, FAILED, CANCELLED), when, the channel and, once published, the link.

## At a glance

| Property | Value |
| --- | --- |
| REST | `GET https://api.clippie.ai/v1/social/posts` |
| MCP tool | `list_posts` |
| Scope | `read` |
| Cost | Free. Works with a read-only key. |

## Parameters

| Name | In | Type | Required | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `status` | query | string | No |  | Only posts with this status, e.g. SCHEDULED for what is still to go out. One of `SCHEDULED`, `PUBLISHING`, `PUBLISHED`, `FAILED`, `CANCELLED`. |
| `from` | query | string | No |  | Only posts scheduled at or after this time (ISO 8601). |
| `to` | query | string | No |  | Only posts scheduled at or before this time (ISO 8601). |
| `limit` | query | integer | No |  | At most this many (default 50). 1-200. |

## Example

curl:

```bash
curl "https://api.clippie.ai/v1/social/posts" \
  -H "Authorization: Bearer $CLIPPIE_API_KEY"
```

list-posts.mjs:

```js
const auth = { Authorization: `Bearer ${process.env.CLIPPIE_API_KEY}` };

const res = await fetch('https://api.clippie.ai/v1/social/posts', { headers: auth });
if (!res.ok) throw new Error((await res.json()).error.message);
console.log(await res.json());
```

## Response

`200` with JSON. The full response schema is in the [OpenAPI spec](https://api.clippie.ai/v1/openapi.json).

## From an MCP client

Your AI calls `list_posts` with the same fields as JSON arguments. See [MCP server](https://clippie.ai/developers/docs.md#mcp) to connect one.

tools/call:

```json
{
  "name": "list_posts",
  "arguments": {}
}
```
