---
title: "Get post"
method: GET
path: "/post/{postId}"
tags: ["Posts"]
---

# Get post

`GET /post/{postId}`

## Request

- Base URL: `https://www.app.ocoya.com/api/_public/v1`
- URL: `https://www.app.ocoya.com/api/_public/v1/post/{postId}`
- Auth: API key in header `X-API-Key`

Returns one post with its variations, channels, schedule and status. Use it after `GET /post` or `GET /campaigns/{campaignId}` hands you a post id.

## Path parameters

- `postId` string, required

## Response `200`

Success

- object
  - `id` string, required: Post ID.
  - `status` 'GENERATING' | 'DRAFT' | 'PENDING_CLIENT_APPROVAL' | 'PENDING_INTERNAL_APPROVAL' | 'SCHEDULED' | 'POSTED' | 'NEEDS_ATTENTION' | 'ERROR', required: Where the post is in its life.
  - `createdAt` string, required: When the post was created.
  - `scheduledAt` string, nullable, required: When the post is scheduled to publish, or `null` for a draft.
  - `campaignId` string, nullable, required: AI campaign the post belongs to.
  - `campaign` object, nullable, required: The campaign, when the post belongs to one.
    - `id` string, required
    - `options` object, nullable, required
  - `workflowId` string, nullable, required: Workflow that created the post.
  - `workflow` object, nullable, required: The workflow, when one created the post.
    - `id` string, required
    - `name` string, nullable, required
  - `posts` object[], required: One variation per network the post goes to.
    - `id` string, required
    - `provider` string, required: Network this variation publishes to.
    - `caption` string, nullable, required: Caption for this network.
    - `title` string, nullable, required: Title, for networks that have one (YouTube, Pinterest, blogs).
    - `options` object, nullable, required: Network settings for this variation, as set by `options` on create or update.
    - `creatives` object[], required: Attached media, in order.
      - `id` string, required
      - `position` integer, required: Order of the media in the post, from 0.
      - `image` string, nullable, required: Image URL, for an image.
      - `video` string, nullable, required: Video URL, for a video.
      - `thumbnail` string, nullable, required: Video thumbnail URL.
    - `boardIds` string[], required: Pinterest boards the post goes to.
  - `channels` object[], required: Channels the post publishes to.
    - `id` string, required
    - `provider` string, required
    - `name` string, nullable, required
    - `image` string, nullable, required

## Other responses

- `401`: Missing or invalid API key.
- `403`: The API key's user does not own the post's brand.
- `404`: Post not found.
- `429`: Rate limit exceeded: 60 requests per minute per API key.
- `500`: Unknown error

## Changes

- **2026-11-04** `ef9bd3530850`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ocoya/apis/ocoya-api/changes/post/:postId/get.md)

---

[API](https://skmtc.dev/ocoya/apis/ocoya-api.md) - [All operations](https://skmtc.dev/ocoya/apis/ocoya-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ocoya/apis/ocoya-api/revisions/ef9bd3530850?raw)
