---
title: "Look Up Posts by ID"
description: "Batch look up up to 100 Reddit posts by fullname (`t3_`), bare ID, or URL in requested order. Any missing IDs are recorded under `missing_ids`.\n"
---

> Documentation Index
> Fetch the complete documentation index at: https://staging.threadapi.dev/llms.txt
> Use this file to discover all available pages before exploring further.

Path: ThreadAPI API › Reddit

`GET /v1/reddit/things`

Batch look up up to 100 Reddit posts by fullname (`t3_`), bare ID, or URL in requested order. Any missing IDs are recorded under `missing_ids`.

## Authentication

Requires one of the following:

- `bearerAuth`, http, header `Authorization`
- `apiKeyAuth`, apiKey, in header, header `x-api-key`

## Query parameters

- `ids` (`getThings.query.ids`; string, required) — Comma-separated list of up to 100 Reddit post IDs or URLs.

## Code samples

### cURL

```bash
curl --request GET \
  --url 'https://api.threadapi.dev/v1/reddit/things?ids=t3_1x1ai6v%2Ct3_1xagllz' \
  --header 'Authorization: Bearer <token>'
```

### TypeScript

```typescript
const url = 'https://api.threadapi.dev/v1/reddit/things?ids=t3_1x1ai6v%2Ct3_1xagllz';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.threadapi.dev/v1/reddit/things?ids=t3_1x1ai6v%2Ct3_1xagllz"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

The requested items.

#### Example

```json
{
  "items": [
    {
      "kind": "post",
      "post": {
        "id": "string",
        "name": "string",
        "domain": "string",
        "is_self": true,
        "flair": "string",
        "spoiler": true,
        "stickied": true,
        "locked": true,
        "removed": true,
        "subreddit": "string",
        "title": "string",
        "author": "string",
        "score": 0,
        "upvote_ratio": 0,
        "num_comments": 0,
        "url": "string",
        "permalink": "string",
        "selftext": "string",
        "created_at": "2019-08-24T14:15:22Z",
        "is_video": true,
        "over_18": true,
        "media": [
          {
            "type": "image",
            "url": "string",
            "width": 0,
            "height": 0,
            "caption": "string"
          }
        ],
        "poll": {
          "total_votes": 0,
          "is_closed": true,
          "options": [
            {
              "id": "string",
              "text": "string",
              "vote_count": 0
            }
          ]
        },
        "crosspost_of": {
          "id": "string",
          "subreddit": "string",
          "title": "string",
          "author": "string",
          "permalink": "string"
        },
        "comments": [
          {
            "id": "string",
            "parent_id": "string",
            "author": "string",
            "score": 0,
            "body": "string",
            "created_at": "2019-08-24T14:15:22Z",
            "depth": 0,
            "is_submitter": true,
            "controversy": 0,
            "replies": [
              {
                "replies": []
              }
            ]
          }
        ]
      },
      "comment": {
        "id": "string",
        "name": "string",
        "post_id": "string",
        "post_title": "string",
        "subreddit": "string",
        "author": "string",
        "score": 0,
        "body": "string",
        "created_at": "2019-08-24T14:15:22Z",
        "permalink": "string",
        "parent_id": "string",
        "is_submitter": true,
        "controversiality": 0
      }
    }
  ],
  "missing": [
    "string"
  ]
}
```

- `items` (`getThings.response.200.items`; array<object>, required)
  - `kind` (`getThings.response.200.items.kind`; string, required)
    - one of `"post"`, `"comment"`
  - `post` (`getThings.response.200.items.post`; object, optional)
    - `id` (`getThings.response.200.items.post.id`; string, optional)
    - `name` (`getThings.response.200.items.post.name`; string, optional)
    - `domain` (`getThings.response.200.items.post.domain`; string, optional)
    - `is_self` (`getThings.response.200.items.post.is_self`; boolean, optional)
    - `flair` (`getThings.response.200.items.post.flair`; string, optional)
    - `spoiler` (`getThings.response.200.items.post.spoiler`; boolean, optional)
    - `stickied` (`getThings.response.200.items.post.stickied`; boolean, optional)
    - `locked` (`getThings.response.200.items.post.locked`; boolean, optional)
    - `removed` (`getThings.response.200.items.post.removed`; boolean, optional)
    - `subreddit` (`getThings.response.200.items.post.subreddit`; string, optional)
    - `title` (`getThings.response.200.items.post.title`; string, optional)
    - `author` (`getThings.response.200.items.post.author`; string, optional)
    - `score` (`getThings.response.200.items.post.score`; integer, optional)
    - `upvote_ratio` (`getThings.response.200.items.post.upvote_ratio`; number, optional)
    - `num_comments` (`getThings.response.200.items.post.num_comments`; integer, optional)
    - `url` (`getThings.response.200.items.post.url`; string, optional)
    - `permalink` (`getThings.response.200.items.post.permalink`; string, optional)
    - `selftext` (`getThings.response.200.items.post.selftext`; string, optional)
    - `created_at` (`getThings.response.200.items.post.created_at`; string, optional)
      - format `date-time`
    - `is_video` (`getThings.response.200.items.post.is_video`; boolean, optional)
    - `over_18` (`getThings.response.200.items.post.over_18`; boolean, optional)
    - `media` (`getThings.response.200.items.post.media`; array<object>, optional)
      - `type` (`getThings.response.200.items.post.media.type`; string, optional)
        - one of `"image"`, `"video"`, `"gallery"`
      - `url` (`getThings.response.200.items.post.media.url`; string, optional)
      - `width` (`getThings.response.200.items.post.media.width`; integer, optional)
      - `height` (`getThings.response.200.items.post.media.height`; integer, optional)
      - `caption` (`getThings.response.200.items.post.media.caption`; string, optional)
    - `poll` (`getThings.response.200.items.post.poll`; object, optional)
      - `total_votes` (`getThings.response.200.items.post.poll.total_votes`; integer, optional)
      - `is_closed` (`getThings.response.200.items.post.poll.is_closed`; boolean, optional)
      - `options` (`getThings.response.200.items.post.poll.options`; array<object>, optional)
        - `id` (`getThings.response.200.items.post.poll.options.id`; string, optional)
        - `text` (`getThings.response.200.items.post.poll.options.text`; string, optional)
        - `vote_count` (`getThings.response.200.items.post.poll.options.vote_count`; integer, optional)
    - `crosspost_of` (`getThings.response.200.items.post.crosspost_of`; object, optional)
      - `id` (`getThings.response.200.items.post.crosspost_of.id`; string, optional)
      - `subreddit` (`getThings.response.200.items.post.crosspost_of.subreddit`; string, optional)
      - `title` (`getThings.response.200.items.post.crosspost_of.title`; string, optional)
      - `author` (`getThings.response.200.items.post.crosspost_of.author`; string, optional)
      - `permalink` (`getThings.response.200.items.post.crosspost_of.permalink`; string, optional)
    - `comments` (`getThings.response.200.items.post.comments`; array<object>, optional)
      - `id` (`getThings.response.200.items.post.comments.id`; string, optional)
      - `parent_id` (`getThings.response.200.items.post.comments.parent_id`; string, optional) — t3_<post id> for a top-level comment, t1_<comment id> for a reply.
      - `author` (`getThings.response.200.items.post.comments.author`; string, optional)
      - `score` (`getThings.response.200.items.post.comments.score`; integer, optional)
      - `body` (`getThings.response.200.items.post.comments.body`; string, optional)
      - `created_at` (`getThings.response.200.items.post.comments.created_at`; string, optional)
        - format `date-time`
      - `depth` (`getThings.response.200.items.post.comments.depth`; integer, optional)
      - `is_submitter` (`getThings.response.200.items.post.comments.is_submitter`; boolean, optional) — Written by the original poster.
      - `controversy` (`getThings.response.200.items.post.comments.controversy`; integer, optional)
      - `replies` (`getThings.response.200.items.post.comments.replies`; array<object>, optional)
        - `id` (`getThings.response.200.items.post.comments.replies.id`; string, optional)
        - `parent_id` (`getThings.response.200.items.post.comments.replies.parent_id`; string, optional) — t3_<post id> for a top-level comment, t1_<comment id> for a reply.
        - `author` (`getThings.response.200.items.post.comments.replies.author`; string, optional)
        - `score` (`getThings.response.200.items.post.comments.replies.score`; integer, optional)
        - `body` (`getThings.response.200.items.post.comments.replies.body`; string, optional)
        - `created_at` (`getThings.response.200.items.post.comments.replies.created_at`; string, optional)
          - format `date-time`
        - `depth` (`getThings.response.200.items.post.comments.replies.depth`; integer, optional)
        - `is_submitter` (`getThings.response.200.items.post.comments.replies.is_submitter`; boolean, optional) — Written by the original poster.
        - `controversy` (`getThings.response.200.items.post.comments.replies.controversy`; integer, optional)
        - `replies` (`getThings.response.200.items.post.comments.replies.replies`; array<object>, optional)
  - `comment` (`getThings.response.200.items.comment`; object, optional)
    - `id` (`getThings.response.200.items.comment.id`; string, optional)
    - `name` (`getThings.response.200.items.comment.name`; string, optional)
    - `post_id` (`getThings.response.200.items.comment.post_id`; string, optional)
    - `post_title` (`getThings.response.200.items.comment.post_title`; string, optional)
    - `subreddit` (`getThings.response.200.items.comment.subreddit`; string, optional)
    - `author` (`getThings.response.200.items.comment.author`; string, optional)
    - `score` (`getThings.response.200.items.comment.score`; integer, optional)
    - `body` (`getThings.response.200.items.comment.body`; string, optional)
    - `created_at` (`getThings.response.200.items.comment.created_at`; string, optional)
      - format `date-time`
    - `permalink` (`getThings.response.200.items.comment.permalink`; string, optional)
    - `parent_id` (`getThings.response.200.items.comment.parent_id`; string, optional)
    - `is_submitter` (`getThings.response.200.items.comment.is_submitter`; boolean, optional)
    - `controversiality` (`getThings.response.200.items.comment.controversiality`; integer, optional)
- `missing` (`getThings.response.200.missing`; array<string>, required)

### 400

Bad request (invalid parameter or unknown action)

#### Example

```json
{
  "error": "unauthorized: missing or invalid credentials",
  "error_code": "insufficient_credits"
}
```

One of:

- `ErrorResponse`
- `Error`

### 401

Missing or invalid API key or OAuth access token

#### Example

```json
{
  "error": "unauthorized: missing or invalid credentials",
  "error_code": "insufficient_credits"
}
```

One of:

- `ErrorResponse`
- `Error`

### 402

The account has no credits left (`insufficient_credits`).

#### Example

```json
{
  "error": {
    "code": "not_found",
    "message": "string",
    "retryable": true,
    "retry_after": 0
  }
}
```

- `error` (`getThings.response.402.error`; object, required)
  - `code` (`getThings.response.402.error.code`; string, required)
    - example `"not_found"`
  - `message` (`getThings.response.402.error.message`; string, required)
  - `retryable` (`getThings.response.402.error.retryable`; boolean, required)
  - `retry_after` (`getThings.response.402.error.retry_after`; integer, optional) — Seconds to wait before retrying.

### 429

Rate limit or daily request quota exceeded

#### Example

```json
{
  "error": "unauthorized: missing or invalid credentials",
  "error_code": "insufficient_credits"
}
```

One of:

- `ErrorResponse`
- `Error`

### 503

A temporary problem reaching Reddit (`upstream_busy`, `upstream_timeout`, `upstream_error`). Retry shortly; nothing was billed.

#### Example

```json
{
  "error": {
    "code": "not_found",
    "message": "string",
    "retryable": true,
    "retry_after": 0
  }
}
```

- `error` (`getThings.response.503.error`; object, required)
  - `code` (`getThings.response.503.error.code`; string, required)
    - example `"not_found"`
  - `message` (`getThings.response.503.error.message`; string, required)
  - `retryable` (`getThings.response.503.error.retryable`; boolean, required)
  - `retry_after` (`getThings.response.503.error.retry_after`; integer, optional) — Seconds to wait before retrying.


Source: https://staging.threadapi.dev/api/Reddit/getThings/index.md
