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

# List logical posts

`GET /api/v1/posts`

## Request

- Base URL: `https://blendduck.com`
- URL: `https://blendduck.com/api/v1/posts`
- Auth: HTTP bearer

List logical posts.

## Query parameters

- `startDate` string, date-time, required
- `endDate` string, date-time, required
- `limit` integer
- `cursor` string

## Headers

- `X-Request-ID` string

## Response `200`

Post collection

- PostsResponse
  - `data` object[], required
    - `id` string, uuid, required
    - `status` 'draft' | 'scheduled' | 'publishing' | 'published' | 'partial' | 'failed' | 'cancelled', required
    - `content` string, required
    - `media` object[], required
      - `id` string
      - `createdAt` string
      - `url` string, required
      - `type` 'image' | 'video', required
      - `name` string
      - `size` integer
      - `width` integer
      - `height` integer
      - `animationFrameCount` integer, nullable
      - `durationSec` number, nullable
      - `frameRate` number, nullable
      - `videoCodec` 'av1' | 'h264' | 'h265' | 'vp8' | 'vp9', nullable
      - `contentType` string
      - `altText` string
      - `thumbnailUrl` string
      - `thumbnailFrameTimeSec` number
      - `peopleTags` object[]
        - `username` unknown, required
        - `x` number, required
        - `y` number, required
    - `settings` object, required
    - `thread` object[], required
      - `content` string, required
      - `media` object[], required
        - `id` string
        - `createdAt` string
        - `url` string, required
        - `type` 'image' | 'video', required
        - `name` string
        - `size` integer
        - `width` integer
        - `height` integer
        - `animationFrameCount` integer, nullable
        - `durationSec` number, nullable
        - `frameRate` number, nullable
        - `videoCodec` 'av1' | 'h264' | 'h265' | 'vp8' | 'vp9', nullable
        - `contentType` string
        - `altText` string
        - `thumbnailUrl` string
        - `thumbnailFrameTimeSec` number
        - `peopleTags` object[]
          - `username` unknown, required
          - `x` number, required
          - `y` number, required
    - `tags` object[], required
      - `value` string, required
      - `label` string, required
    - `topicId` string, uuid, nullable, required
    - `targets` object[], required
      - `id` string, uuid, required
      - `channel` object, required
        - `id` string, uuid, required
        - `provider` string, required
        - `displayName` string, required
      - `status` 'DRAFT' | 'QUEUE' | 'PUBLISHING' | 'PROCESSING' | 'PUBLISHED' | 'ERROR' | 'CANCELLED', required
      - `scheduleMode` 'draft' | 'schedule' | 'next_available' | 'prioritize' | 'publish_now', required
      - `publishAt` string, date-time, required
      - `content` string, required
      - `media` object[], required
        - `id` string
        - `createdAt` string
        - `url` string, required
        - `type` 'image' | 'video', required
        - `name` string
        - `size` integer
        - `width` integer
        - `height` integer
        - `animationFrameCount` integer, nullable
        - `durationSec` number, nullable
        - `frameRate` number, nullable
        - `videoCodec` 'av1' | 'h264' | 'h265' | 'vp8' | 'vp9', nullable
        - `contentType` string
        - `altText` string
        - `thumbnailUrl` string
        - `thumbnailFrameTimeSec` number
        - `peopleTags` object[]
          - `username` unknown, required
          - `x` number, required
          - `y` number, required
      - `settings` object, required
      - `thread` object[], required
        - `content` string, required
        - `media` object[], required
          - `id` string
          - `createdAt` string
          - `url` string, required
          - `type` 'image' | 'video', required
          - `name` string
          - `size` integer
          - `width` integer
          - `height` integer
          - `animationFrameCount` integer, nullable
          - `durationSec` number, nullable
          - `frameRate` number, nullable
          - `videoCodec` 'av1' | 'h264' | 'h265' | 'vp8' | 'vp9', nullable
          - `contentType` string
          - `altText` string
          - `thumbnailUrl` string
          - `thumbnailFrameTimeSec` number
          - `peopleTags` object[]
            - `username` unknown, required
            - `x` number, required
            - `y` number, required
      - `providerPostId` string, nullable, required
      - `publicUrl` string, nullable, required
      - `failure` object, nullable, required
        - `kind` 'permanent' | 'reconnect' | 'transient', required
        - `code` string, required
        - `retryable` boolean, required
        - `message` string, nullable, required
      - `publishing` object, required
        - `attemptCount` integer, required
        - `lastAttemptAt` string, date-time, nullable, required
        - `attempts` object[], required
          - `id` string, required
          - `attemptNumber` integer, required
          - `provider` string, required
          - `phase` 'submit' | 'status', required
          - `outcome` 'running' | 'processing' | 'succeeded' | 'failed', required
          - `latencyMs` integer, nullable, required
          - `providerResponseId` string, nullable, required
          - `publicUrl` string, nullable, required
          - `publicUrlStatus` 'available' | 'pending' | 'unavailable', required
          - `failure` object, nullable, required
            - `kind` 'permanent' | 'reconnect' | 'transient', required
            - `code` string, required
          - `error` string, nullable, required
          - `startedAt` string, required
          - `completedAt` string, nullable, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `meta` object, required
    - `requestId` string, required
    - `pagination` object, required
      - `limit` integer, required
      - `hasMore` boolean, required
      - `nextCursor` string, nullable, required

## Other responses

- `400`: Invalid query, request body, JSON, or request identity.
- `401`: Missing or invalid authentication.
- `403`: Authentication lacks the required role or API-key scope.
- `404`: Resource or tenant path is hidden or absent.
- `409`: Lifecycle, idempotency, or concurrent-state conflict.
- `429`: The API-key operation exhausted its fixed-window quota.
- `500`: Internal or upstream failure.

---

[API](https://skmtc.dev/blendduck/apis/blendduck-public-api.md) · [All operations](https://skmtc.dev/blendduck/apis/blendduck-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blendduck/apis/blendduck-public-api/revisions/3b49354699da?raw)
