---
title: "Get approval review"
method: GET
path: "/posts/{id}/approval"
tags: ["Posts"]
---

# Get approval review

`GET /posts/{id}/approval`

## Request

- Base URL: `https://api.omnisocials.com/v1`
- URL: `https://api.omnisocials.com/v1/posts/{id}/approval`
- Auth: HTTP bearer

Returns the review of a post that went through an approval workflow: every step with its approvers and their decisions, the rejection with its reason, and the comment thread. Use it after `approval_status` is `rejected` to learn who rejected the post and why, or while it is `pending` to see who the post waits for and what the reviewers wrote. A post without an approval workflow returns `status: none` with empty `steps` and `comments`.

## Path parameters

- `id` string, required

## Response `200`

The approval review

- object
  - `data` object
    - `post_id` string
    - `status` 'none' | 'pending' | 'approved' | 'rejected': `none` = the post has no approval workflow.
    - `workflow` object, nullable
      - `id` string, nullable: Null for a one-off approval that was not made from a saved workflow
      - `name` string
    - `requested_by` object, nullable
      - `id` string
      - `name` string, nullable
    - `requested_at` string, date-time, nullable
    - `current_step` integer, nullable: Order of the step the post waits on. Null when the review is finished.
    - `steps` object[]
      - `order` integer
      - `name` string
      - `require_mode` 'all' | 'any': `all` = every approver of the step must approve. `any` = one approval is enough.
      - `status` 'pending' | 'approved' | 'rejected'
      - `approvers` object[]
        - `id` string
        - `name` string, nullable
        - `email` string, nullable
        - `status` 'pending' | 'approved' | 'rejected'
        - `decided_at` string, date-time, nullable
        - `comment` string, nullable: The reason this approver gave with a rejection
    - `rejection` object, nullable: Present when an approver rejected the post
      - `by` object
        - `id` string
        - `name` string, nullable
      - `reason` string, nullable
      - `at` string, date-time, nullable
      - `step` integer, nullable
    - `comments` object[]: The review thread, oldest first. Includes the entries OmniSocials writes when a reviewer edits the post.
      - `id` string
      - `author` object, nullable
        - `id` string
        - `name` string, nullable
      - `message` string
      - `account` string, nullable: The channel the comment is about (`instagram`, `linkedin_page`, ...). Null = the whole post.
      - `created_at` string, date-time

## Other responses

- `404`: Post not found

## Changes

- **2026-10-02** `d28eab4dda4e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/omnisocials/apis/omnisocials-api/changes/posts/:id/approval/get.md)

---

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