> ## 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.

# Browse posts

> Get social media posts with detailed filters.

Filter posts by program, platform, creator, date range, and more. Each row includes direct links, thumbnails, stable creator IDs, cross-post group IDs, current metrics, metric availability, and the current UTC day's view change.

Platform copies of one source video remain separate rows because their links and metrics differ. Copies share `crossPostGroupId` so callers can group or de-duplicate them.

Agency accounts can pass `scope=agency` to return posts from the parent agency and every subaccount in one request.




## OpenAPI

````yaml /api-reference/openapi.json get /posts
openapi: 3.0.4
info:
  title: Launchpoint Public API
  version: 1.0.0
  description: >-
    **Private preview.** The Launchpoint Public API is in private preview and
    available only to trusted partners we work with directly. Access is not
    self-serve. Email hi@launchpointhq.com to ask about access.


    REST API for Launchpoint brands and agencies. Use an API key in the
    `x-api-key` header to authenticate.


    ## Requirements

    - Public API access must be enabled for the company. During private preview,
    access is limited to trusted partners.

    - Create and manage API keys in Dashboard → Settings → Developer.


    ## Creator privacy

    - Responses never include creator email addresses. Creator phone numbers are
    null when no number is stored or the workspace does not have access to
    creator contact details.


    ## Rate limits

    - Default: **100 requests per minute** per API key.

    - Approved partner accounts: **400 requests per minute**.

    - Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and
    `X-RateLimit-Reset`. Requests over the limit return `429`.


    ## Errors

    - Errors use `{ "error": "<message>" }` with the matching HTTP status. Some
    endpoints also include a `code`.


    ## Timestamps

    - Timestamps are Unix timestamps in milliseconds unless a field says
    otherwise.


    ## Pagination

    - Most list endpoints accept `page` and `limit` and return `{ data, page,
    total }`. Some also return `totalPages`.

    - `scope=company` is the default. A parent agency key can pass
    `scope=agency` on supported routes to include its own data and linked
    brands.
servers:
  - url: https://dashboard.launchpointhq.com/api/v1
    description: Live API server
security:
  - apiKeyAuth: []
tags:
  - name: Deals
    description: Public creator opportunities across Launchpoint
  - name: Programs
    description: Programs and campaign management
  - name: Posts
    description: Posts and social content
  - name: Analytics
    description: KPIs and performance metrics
  - name: Payouts
    description: Payouts, balances, and pending creator funds
  - name: Contracts
    description: Contracts and creator agreements
  - name: Creators
    description: Creator profiles and metrics
  - name: Applications
    description: Creator applications to Canvas programs
  - name: Messages
    description: Read and send creator messages
paths:
  /posts:
    get:
      tags:
        - Posts
      summary: Browse posts
      description: >
        Get social media posts with detailed filters.


        Filter posts by program, platform, creator, date range, and more. Each
        row includes direct links, thumbnails, stable creator IDs, cross-post
        group IDs, current metrics, metric availability, and the current UTC
        day's view change.


        Platform copies of one source video remain separate rows because their
        links and metrics differ. Copies share `crossPostGroupId` so callers can
        group or de-duplicate them.


        Agency accounts can pass `scope=agency` to return posts from the parent
        agency and every subaccount in one request.
      parameters:
        - $ref: '#/components/parameters/ScopeParam'
        - in: query
          name: page
          schema:
            type: integer
            default: 1
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            default: 25
            maximum: 500
        - in: query
          name: program
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
          description: Narrow results by program IDs (multiple allowed)
        - in: query
          name: platform
          style: form
          explode: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PostPlatform'
          description: Narrow results by platforms (multiple allowed)
        - in: query
          name: creator
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
          description: Narrow results by creator IDs (multiple allowed)
        - in: query
          name: fromDate
          schema:
            type: string
            format: date
          description: Include posts from this date (YYYY-MM-DD)
        - in: query
          name: toDate
          schema:
            type: string
            format: date
          description: Include posts through this date (YYYY-MM-DD)
      responses:
        '200':
          description: Posts returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        creatorId:
                          type: string
                          description: Client-stable encrypted creator ID
                        crossPostGroupId:
                          type: string
                          description: Shared by platform copies of the same source video
                        title:
                          type: string
                        platform:
                          $ref: '#/components/schemas/PostPlatform'
                        url:
                          type: string
                          description: >-
                            Direct URL for this platform post; an empty string
                            means no URL is stored
                        thumbnail:
                          type: string
                          description: >-
                            Thumbnail URL; an empty string means no thumbnail is
                            stored
                        metricsAvailable:
                          type: boolean
                          description: >-
                            False when the post has no stored metric snapshot;
                            use this to distinguish missing data from a stored
                            zero
                        metricsRecordedAt:
                          type: integer
                          format: int64
                          nullable: true
                          description: >-
                            Unix timestamp in milliseconds for the latest metric
                            snapshot, or null when metrics are unavailable
                        views:
                          type: integer
                        likes:
                          type: integer
                        comments:
                          type: integer
                        shares:
                          type: integer
                        earnings:
                          type: number
                        paid:
                          type: boolean
                        contractorName:
                          type: string
                        uploadedAt:
                          type: integer
                          format: int64
                          description: Unix timestamp in milliseconds
                        deltaFromPrevDay:
                          type: object
                          description: >-
                            Signed change from the last snapshot before the
                            current UTC day. A lower latest count produces a
                            negative value. This is zero when no new snapshot
                            was recorded today or when no earlier snapshot
                            exists; the first stored total is a baseline, not
                            views proven to have arrived today.
                          properties:
                            views:
                              type: integer
                  page:
                    type: integer
                  total:
                    type: integer
                  totalPages:
                    type: integer
components:
  parameters:
    ScopeParam:
      in: query
      name: scope
      required: false
      schema:
        type: string
        enum:
          - company
          - agency
        default: company
      description: >-
        Choose the data scope. `company` (default) limits results to the API key
        company's data. `agency` includes the parent agency and its linked
        brands. `scope=agency` requires a parent agency key; other keys receive
        `403`.
  schemas:
    PostPlatform:
      type: string
      enum:
        - tiktok
        - instagram
        - youtube
        - facebook
        - snapchat
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key created in Dashboard → Settings → Developer

````