# Get a post

> Read one post by its ID.

**Source:** https://postprism.app/docs/api/get-post  
**Updated:** 2026-10-10

---

`GET https://studio.postprism.app/api/v1/posts/{id}`

Returns a single post, including its status. Poll this after the scheduled time to see whether a post moved to `published` or `failed`.

## Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` | path | uuid, required | The post ID. |
| `workspace_id` | query | uuid | Act on another workspace you belong to. Defaults to the workspace your API key was created in. |

## Example

```bash
curl "https://studio.postprism.app/api/v1/posts/3f1c2a9e-0000-4000-8000-00000000a001" \
  -H "Authorization: Bearer pp_live_your_api_key"
```

## Response

Status `200`.

`data` is a `Post`: A full post, as returned when you create, read or update one. It has every `PostSummary` field plus the ones below. Ignore any other fields; they are not part of the stable API.

| Field | Type | Description |
| --- | --- | --- |
| `id` | uuid | The post ID. |
| `base_content` | string | The shared draft the per-platform versions start from. |
| `platforms` | string[] | Platform keys the post targets. |
| `platform_content` | object | Per-platform versions, keyed by platform key. |
| `status` | string | Where the post is in its lifecycle. One of: `draft`, `scheduled`, `publishing`, `published`, `failed`. |
| `scheduled_at` | date-time, nullable | When the post publishes, in UTC. `null` for drafts. |
| `published_at` | date-time, nullable | When the post was published, or `null`. |
| `media` | object[] | Attached images and videos. |
| `ai_generated` | boolean | Whether the post was written with Postprism AI. |
| `created_at` | date-time | When the post was created. |
| `workspace_id` | uuid | The workspace the post belongs to. |
| `user_id` | uuid | The member who created the post. |
| `updated_at` | date-time | When the post last changed. |

```json
{
  "data": {
    "id": "3f1c2a9e-0000-4000-8000-00000000a001",
    "workspace_id": "7b2d4e6f-0000-4000-8000-00000000b001",
    "user_id": "9a8b7c6d-0000-4000-8000-00000000c001",
    "base_content": "Our autumn menu is here: maple oat latte, pumpkin cold brew and a new almond croissant.",
    "platforms": ["linkedin", "twitter"],
    "platform_content": {
      "linkedin": {
        "content": "Our autumn menu is here. Three new drinks, one new pastry, all made in-house at Juniper Roasters. Which one are you trying first?"
      },
      "twitter": {
        "content": "Autumn menu, now pouring. Maple oat latte first?",
        "hashtags": ["#autumnmenu", "#coffeeshop"]
      }
    },
    "media": [
      {
        "url": "https://…/launch-photo.webp",
        "type": "image"
      }
    ],
    "status": "scheduled",
    "scheduled_at": "2026-10-16T09:30:00Z",
    "published_at": null,
    "ai_generated": false,
    "created_at": "2026-10-10T14:02:11Z",
    "updated_at": "2026-10-10T14:02:11Z"
  },
  "error": null
}
```

## Errors

| Status | Message | When |
| --- | --- | --- |
| 401 | `Invalid or revoked API key` | The `Authorization` header is missing, malformed, or the key was revoked. |
| 404 | `Post not found` | No post with that ID exists in the workspace. |
| 404 | `Workspace not found, or you are not a member of it.` | The `workspace_id` you passed (or your key’s default workspace) is not one you belong to. |
| 429 | `Too many requests` | You went over the hourly limit. See Rate limits. |
