---
title: "List posts"
method: GET
path: "/posts"
tags: ["Posts"]
---

# List posts

`GET /posts`

## Request

- Base URL: `https://www.sociahive.com/api/v1`
- URL: `https://www.sociahive.com/api/v1/posts`
- Auth: one of:
  - API key in header `X-API-Key`
  - OAuth 2 (authorization code, authorization URL `/api/oauth/authorize`, token URL `/api/oauth/token`, scopes: `posts:read`)

## Query parameters

- `status` 'draft' | 'scheduled' | 'publishing' | 'published' | 'partially_published' | 'failed' | 'pending_approval'
- `tags` string: Comma-separated post tag ids. Returns posts that carry any of them.
- `limit` integer
- `offset` integer, nullable

## Response `200`

Posts page

- PaginatedPosts
  - `data` Post[], required
    - `id` string, required: MongoDB ObjectId (24-character hex string)
    - `content` object, required
      - `text` string, required
      - `media` object[]
        - `type` 'image' | 'video' | 'gif', required
        - `url` string, uri, required
    - `text` string
    - `media` object[]
      - `type` 'image' | 'video' | 'gif', required
      - `url` string, uri, required
    - `status` 'draft' | 'scheduled' | 'publishing' | 'published' | 'partially_published' | 'failed' | 'pending_approval' | 'reminder_sent', required
    - `platforms` object[], required
      - `platform` string, required: Platform id. Known values: `instagram`, `messenger`, `whatsapp`, `linkedin`, `twitter`, `tiktok`, `telegram`, `threads`, `youtube`, `bluesky`, `pinterest`, `facebook`, `discord`, `mastodon`, `lemmy`, `devto`, `hashnode`, `wordpress`, `listmonk`, `slack`, `tumblr`, `dribbble`, `twitch`, `kick`. Treat any other value as unknown, never as an error.
      - `account_id` string, required: MongoDB ObjectId (24-character hex string)
      - `platform_post_id` string
      - `status` 'pending' | 'processing' | 'published' | 'failed' | 'reminder_sent'
      - `error` object
        - `code` string, required
        - `message` string, required
      - `published_at` string, date-time
    - `scheduled_at` string, date-time
    - `timezone` string
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `automation` object, nullable
      - `state` string, required: Derived state. Known values: `none`, `building`, `failed`, `off`, `armed`, `live`, `needs_attention`. Treat any other value as unknown, never as an error.
      - `flow_id` string, required
      - `flow_name` string, required
      - `door` string, required: How the automation was built. Known values: `funnel`, `template`, `prompt`. Treat any other value as unknown, never as an error.
      - `account_id` string, required
      - `armed` boolean, required: Turns on when the post goes live. Only a person sets this.
      - `bound` boolean, required: The trigger points at the published media id.
      - `error` object
        - `code` string, required: The fix to offer, e.g. `placeholder_text`, `link_placeholder`, `unbound_media`, `account_disconnected`, `tier_limit`. Open-ended.
        - `message` string, required
      - `allowed_actions` string[], required: What the user can do now. Known values: arm, unarm, turn_on, turn_off, remove, rebind, retry, fill_blanks, open. Ignore unknown values.
      - `flow_live_waiting_for_post` boolean
    - `source` string: Where the post came from (set by the server, never accepted from a client). Known values: `composer`, `rss`. Treat any other value as unknown, never as an error.
  - `pagination` object
    - `limit` number, required
    - `offset` number, required
    - `total` number, required

## Other responses

- `400`: Bad request — invalid parameters
- `401`: Authentication required — provide X-API-Key or Bearer token
- `403`: Insufficient scope for this operation
- `429`: Rate limit exceeded
- `500`: Internal server error

---

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