---
title: Posts and threads
description: Read a single post, follow an author's thread, or include the surrounding conversation.
sidebar:
  order: 1
  icon: message-square
---

## Read a post

`GET /{handle}/status/{id}` — the permalink form. Swap `x.com` for `x.pcstyle.dev` and keep the path.

```bash
curl -sS 'https://x.pcstyle.dev/trq212/status/2052809885763747935?thread=off'
```

`GET /api/v1/posts` — the same reader on the [versioned surface](/versioning), for a client that holds a URL rather than a path. Identify the post either with `url`, or with the `handle` and `id` pair.

```bash
# By URL
curl -sS -G 'https://x.pcstyle.dev/api/v1/posts' \
  --data-urlencode 'url=https://x.com/trq212/status/2052809885763747935' \
  --data-urlencode 'thread=off'

# Or by handle and id
curl -sS 'https://x.pcstyle.dev/api/v1/posts?handle=trq212&id=2052809885763747935'
```

Both forms take the same options and return the same body. Without `thread=off`, the default response includes available parents, the author's thread, and top replies. Each returned post links to its X source.

Media permalinks resolve to the same post: `/{handle}/status/{id}/photo/1` and `/video/1` read the post they belong to.

## Control the conversation

```bash
# Author thread, capped at 20 posts
curl -sS 'https://x.pcstyle.dev/trq212/status/2052809885763747935?context=thread&thread=20'

# Expanded details, without unrelated replies
curl -sS 'https://x.pcstyle.dev/trq212/status/2052809885763747935?full=true&replies=off'
```

| Parameter | Default | Values |
| --- | --- | --- |
| `url` | — | A public `x.com` or `twitter.com` status permalink. `/api/v1/posts` only |
| `handle`, `id` | — | Alternative to `url`: a handle of 1–15 word characters and a numeric status id. `/api/v1/posts` only |
| `thread` | `full` | `off`, `full`, `conversation`, or a count from `2` to `100` |
| `context` | `full` | `full` for surrounding context; `thread` for the direct author chain |
| `replies` | `top` | `top`, `recent`, `off` |
| `userinfo` | `off` | `off`, `author`, `all` |
| `full` | `false` | `true` adds dates, stats, and expanded details |
| `format` | `markdown` | `markdown`, `json`, `obsidian` |
| `nocache` | `false` | `true` bypasses application caching |

Post boolean parameters accept `true`, `1`, or `yes`. The thread count is separate from the 20-result limit on search and profile routes.

:::note
`GET /api/convert` is the older name for `/api/v1/posts`. It still works and takes the same parameters, but it is deprecated: its responses carry `Deprecation` and `Sunset` headers and it stops answering on 2027-09-15. See [versioning](/versioning).
:::

## Media and articles

Responses include available image links, video URLs, thumbnails, and media variants. X Articles are included when the source supplies their content. Media is linked, not downloaded; CDN links can expire.

:::warning
Missing or gated context can produce a shorter thread. Inspect JSON `warnings` before assuming a conversation is complete.
:::

## Save to Obsidian

```bash
curl -sS 'https://x.pcstyle.dev/trq212/status/2052809885763747935?format=obsidian' > post.md
```

Obsidian output includes frontmatter and expanded details regardless of `full`.

## Share in chat

Paste an x.md status URL into Discord, Telegram, or Slack for a rich preview. Preview bots receive Open Graph HTML. Ordinary requests receive Markdown; explicit `format` or `Accept` takes precedence.

`GET /oembed?url={original X URL}` returns the oEmbed metadata; `GET /api/v1/oembed` is the same document on the versioned surface.
