> ## Documentation Index
> Fetch the complete documentation index at: https://docs.launchpointhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Posts

> Returns published posts with their latest engagement metrics, newest first. Posts taken down after going live remain in the list with `status: "deleted"` — filter with `status` to include or exclude them. Metrics are refreshed periodically; `metrics_updated_at` tells you how fresh they are.



## OpenAPI

````yaml GET /campaigns/{campaign_id}/posts
openapi: 3.1.0
info:
  title: Launchpoint Buyer API
  description: The API Launchpoint brands and agencies can use to manage their campaigns
  license:
    name: MIT
    identifier: MIT
  version: 2026-07
servers:
  - url: https://api.launchpoint.sh/2026-07
security:
  - bearerAuth: []
tags:
  - name: Campaigns
    description: >-
      Create and manage campaigns, review creators and content, and read
      performance data
paths:
  /campaigns/{campaign_id}/posts:
    get:
      tags:
        - Campaigns
      summary: List posts
      description: >-
        Returns published posts with their latest engagement metrics, newest
        first. Posts taken down after going live remain in the list with
        `status: "deleted"` — filter with `status` to include or exclude them.
        Metrics are refreshed periodically; `metrics_updated_at` tells you how
        fresh they are.
      operationId: listPosts
      parameters:
        - $ref: '#/components/parameters/CampaignId'
        - name: status
          in: query
          description: >-
            Filter by post status. Defaults to returning all posts, including
            `deleted` ones.
          required: false
          schema:
            type: string
            enum:
              - live
              - deleted
        - name: creator_id
          in: query
          description: Only posts from this creator
          required: false
          schema:
            type: string
        - name: task_id
          in: query
          description: Only posts for this task
          required: false
          schema:
            type: string
            format: uuid
        - name: platform
          in: query
          description: Only posts on this platform
          required: false
          schema:
            $ref: '#/components/schemas/Platform'
        - name: posted_after
          in: query
          description: Only posts published at or after this time (ISO 8601)
          required: false
          schema:
            type: string
            format: date-time
        - name: posted_before
          in: query
          description: Only posts published before this time (ISO 8601)
          required: false
          schema:
            type: string
            format: date-time
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/StartingAfter'
      responses:
        '200':
          description: A page of posts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  parameters:
    CampaignId:
      name: campaign_id
      in: path
      description: The campaign ID
      required: true
      schema:
        type: string
        format: uuid
    Limit:
      name: limit
      in: query
      description: Number of items to return per page
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    StartingAfter:
      name: starting_after
      in: query
      description: Opaque pagination cursor from a previous response's `next_cursor`
      required: false
      schema:
        type: string
  schemas:
    Platform:
      type: string
      enum:
        - tiktok
        - instagram
        - youtube
        - snapchat
      example: tiktok
    PostList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Post'
        has_more:
          type: boolean
        next_cursor:
          type:
            - string
            - 'null'
    Post:
      type: object
      description: A live published post with its latest engagement metrics
      properties:
        id:
          type: string
          format: uuid
        creator_id:
          type: string
          example: cr_8f14e45fceea
        creator_username:
          type: string
          example: somecreator
        task_id:
          type:
            - string
            - 'null'
          format: uuid
        submission_id:
          type:
            - string
            - 'null'
          format: uuid
          description: The approved submission this post was published from
        platform:
          $ref: '#/components/schemas/Platform'
        url:
          type: string
          format: uri
          example: https://www.tiktok.com/@somecreator/video/7301234567890
        is_story:
          type: boolean
          example: false
        status:
          type: string
          description: >-
            `live`: the post is up and its metrics keep refreshing. `deleted`:
            it was taken down after going live — metrics stop refreshing and
            hold their last values.
          enum:
            - live
            - deleted
          example: live
        posted_at:
          type:
            - string
            - 'null'
          format: date-time
        metrics:
          $ref: '#/components/schemas/EngagementMetrics'
        metrics_updated_at:
          type:
            - string
            - 'null'
          format: date-time
          description: When the metrics were last refreshed
    Error:
      required:
        - error
        - message
      type: object
      properties:
        error:
          type: integer
          format: int32
          description: The HTTP status code
        message:
          type: string
          description: >-
            Human-readable explanation, naming the offending field where
            applicable
        code:
          type: string
          description: >-
            Machine-readable error code, e.g. `invalid_state_transition`,
            `missing_scope`, `already_reviewed`
          example: invalid_state_transition
    EngagementMetrics:
      type: object
      description: Engagement totals across posts
      properties:
        views:
          type: integer
          example: 32000
        likes:
          type: integer
          example: 2100
        comments:
          type: integer
          example: 90
        shares:
          type: integer
          example: 25
        saves:
          type: integer
          example: 40
  responses:
    Unauthorized:
      description: The API key is missing, unknown, or revoked (`unauthenticated`)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: >-
        The resource does not exist or is not visible to this API key
        (`not_found`)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: >-
        The rate limit was exceeded (`rate_limited`). Wait for the number of
        seconds in the `Retry-After` header before retrying.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
        X-RateLimit-Limit:
          description: Requests allowed per minute for this key.
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests remaining in the current window.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````