# List User Posts

List posts publicly visible on a Reddit user's submitted feed, newest first, with cursor pagination.

- Platform: [Reddit](https://docs.upscrape.com/docs/platforms/reddit)
- Capability ID: `reddit.user.posts.list`
- Cost: 1 credit per request
- Maximum runtime: 30 seconds
- Execute endpoint: `POST https://data.upscrape.com/execute`

## Request

Use the exact public capability ID in the shared execute envelope.

```bash
curl --request POST \
  --url https://data.upscrape.com/execute \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Prefer: wait=30" \
  --data '{
  "input": {
    "limit": 25,
    "username": "reddit"
  },
  "capability": "reddit.user.posts.list"
}'
```

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `after` | `string` | No | Opaque cursor from a previous result's next field. |
| `limit` | `integer` | No | Page size (default 50). |
| `username` | `string` | Yes | Public Reddit username, optionally prefixed with u/. |

### Example input

```json
{
  "limit": 25,
  "username": "reddit"
}
```

## Response

Successful output is returned in `results[0].data`. Raw platform output is intentionally open-ended and may evolve with the upstream source.

### Illustrative sample output

This redacted fixture is an example, not a fixed response schema.

```json
{
  "items": [
    {
      "author": "reddit",
      "body": "Hey Folks! We're here to remind everyone how to keep your accounts safe on reddit. Reddit will never ask you for your password or 2FA codes, nor will we ask you via private messages to change your email address. We will only reach out to you via reddit.com email or reddit platform messaging from this account, u/reddit, if there are issues with your account. We will never do so on any other platfor…",
      "created_utc": 1775250548,
      "id": "t3_1sbpwv9",
      "nsfw": false,
      "num_comments": 0,
      "permalink": "https://www.reddit.com/r/help/comments/1sbpwv9/keeping_your_account_safe_on_reddit/",
      "score": 0,
      "subreddit": "help",
      "title": "Keeping your account safe on reddit",
      "type": "post",
      "url": null
    },
    {
      "author": "reddit",
      "body": "Hello mods of modlimit, hopefully by now you've seen this post . In short, we are removing dormant user accounts from mod lists in an effort for us to increase transparency and security on Reddit. This is only users and bots that have not logged into Reddit in over 1 year. You're receiving this message because we've identified these dormant accounts which will be removed by June 18, 2025: this is …",
      "created_utc": 1749600291,
      "id": "t3_1l8ejw1",
      "nsfw": false,
      "num_comments": 0,
      "permalink": "https://www.reddit.com/r/modlimit/comments/1l8ejw1/action_needed_please_read/",
      "score": 0,
      "subreddit": "modlimit",
      "title": "ACTION NEEDED: PLEASE READ",
      "type": "post",
      "url": null
    },
    {
      "author": "reddit",
      "body": "Hi everybody. Given that this subreddit name once belonged to a long-banned subreddit, we wanted to confirm that we made the decision to reclaim the name, clear old content and subscribers, and allow the community name to be adopted for use as a new subreddit. The new mod team plans to use the space in a way that respects, educates about, and honors Holocaust remembrance. submitted by /u/reddit to…",
      "created_utc": 1745429599,
      "id": "t3_1k65533",
      "nsfw": false,
      "num_comments": 0,
      "permalink": "https://www.reddit.com/r/holocaust/comments/1k65533/rholocaust_is_reopening/",
      "score": 0,
      "subreddit": "holocaust",
      "title": "r/Holocaust is reopening",
      "type": "post",
      "url": null
    }
  ],
  "next": "t3_qzw5a6"
}
```
### Illustrative output fields

Derived from the sample above for orientation only. These fields are not a fixed response schema.

| Path | Observed type | Example |
| --- | --- | --- |
| `items` | `array` | 3 items |
| `items` | `array` | 3 items |
| `next` | `string` | t3_qzw5a6 |

## Execution behavior

A `200` response completed inline. A `202` response was queued; poll `GET /jobs/{id}` until the job reaches `completed` or `failed`. Use an `Idempotency-Key` when retrying must not create a duplicate logical job.

## Related documentation

- [Authentication](https://docs.upscrape.com/docs/api/authentication)
- [Jobs and results](https://docs.upscrape.com/docs/api/jobs)
- [Errors and retries](https://docs.upscrape.com/docs/api/errors)
- [Idempotency](https://docs.upscrape.com/docs/api/idempotency)
