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

# Look up posts by id

> Get one answer for each of up to 1,000 post ids, in request order. Duplicate ids are answered once.

- A post in a visible program has the `GET /posts` item shape, `payment`, and `exclusion: null`.
- A post that was removed from a visible program has a short shape with `payment.state: "excluded"` and its `exclusion` record, even after the post was deleted.
- Any other id returns `{ "id", "payment": { "state": "unknown" } }`. Unknown means the post is not visible to this API key or does not exist; the two cases are not told apart.

One request uses one rate-limit slot.



## OpenAPI

````yaml /api-reference/openapi.json post /posts/lookup
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
  - name: Onboarding
    description: 'Creator onboarding: status, messages, and proof review'
  - name: Media review
    description: >-
      Review the media creators send before they post: queue, status, approve,
      and reject
paths:
  /posts/lookup:
    post:
      tags:
        - Posts
      summary: Look up posts by id
      description: >-
        Get one answer for each of up to 1,000 post ids, in request order.
        Duplicate ids are answered once.


        - A post in a visible program has the `GET /posts` item shape,
        `payment`, and `exclusion: null`.

        - A post that was removed from a visible program has a short shape with
        `payment.state: "excluded"` and its `exclusion` record, even after the
        post was deleted.

        - Any other id returns `{ "id", "payment": { "state": "unknown" } }`.
        Unknown means the post is not visible to this API key or does not exist;
        the two cases are not told apart.


        One request uses one rate-limit slot.
      parameters:
        - $ref: '#/components/parameters/ScopeParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - postIds
              properties:
                postIds:
                  type: array
                  minItems: 1
                  maxItems: 1000
                  items:
                    type: string
                    format: uuid
      responses:
        '200':
          description: One entry for each distinct id
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - payment
                      properties:
                        id:
                          type: string
                          format: uuid
                        program:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                          description: Removed posts only
                        creatorId:
                          type: string
                        crossPostGroupId:
                          type: string
                          nullable: true
                        platform:
                          type: string
                          nullable: true
                        url:
                          type: string
                        uploadedAt:
                          type: integer
                          format: int64
                        payment:
                          $ref: '#/components/schemas/PostPayment'
                        exclusion:
                          allOf:
                            - $ref: '#/components/schemas/PostExclusion'
                          nullable: true
        '400':
          description: Missing `postIds`, more than 1,000 ids, or an id that is not a UUID
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:
    PostPayment:
      type: object
      description: >-
        Where the post's pay stands. `paid` means the money reached the
        creator's Launchpoint balance, not that the creator withdrew it. Amounts
        are whole cents.
      required:
        - state
      properties:
        state:
          type: string
          enum:
            - paid
            - pending
            - excluded
            - credit_missing
            - clawed_back
            - paid_off_platform
            - unknown
          description: >-
            `paid`: credits cover the pay owed. `pending`: pay is owed (or zero
            so far) and has not reached the creator. `excluded`: the post was
            removed from the program; see `exclusion`. `credit_missing`: brand
            money was spent for the post but the creator credit is missing;
            contact Launchpoint. `clawed_back`: the creator was credited, then
            the credit was taken back. `paid_off_platform`: the brand marked the
            pay as sent outside Launchpoint. `unknown`: the post is not visible
            to this API key or does not exist (lookup only).
        currency:
          type: string
          enum:
            - USD
        earnedCents:
          type: integer
          description: Pay owed now on the post's own pay lines
        billedCents:
          type: integer
          description: Pay billed on an invoice that is not void
        creditedCents:
          type: integer
          description: >-
            Money added to the creator's Launchpoint balance for this post,
            after any clawback
        invoiceIds:
          type: array
          items:
            type: string
            format: uuid
          description: Invoices that bill this post
        lastCreditedAt:
          type: integer
          format: int64
          nullable: true
          description: Time of the latest credit, in Unix milliseconds
    PostExclusion:
      type: object
      description: >-
        The record kept when a post is removed from a program. It stays after
        the post itself is deleted.
      properties:
        id:
          type: string
          format: uuid
        excludedAt:
          type: integer
          format: int64
          description: Unix milliseconds
        disposition:
          type: string
          enum:
            - excluded
            - unlinked
          description: >-
            `excluded`: removed from pay for good. `unlinked`: removed from the
            program; the platform post can be imported again under a new id.
        source:
          type: string
          enum:
            - dashboard
            - api
            - creator_removal
            - trial_reel_variant
            - relink
            - import_cleanup
            - script
            - backfill
          description: >-
            Where the removal was made. `backfill`: recorded later by
            Launchpoint; the original surface is not known.
        actorWorkspaceId:
          type: string
          format: uuid
          nullable: true
          description: The workspace that removed the post; null for Launchpoint jobs
        message:
          type: string
          nullable: true
          description: The text sent to the creator; null when the creator was not told
        pendingCentsRemoved:
          type: integer
          nullable: true
          description: >-
            Pay owed and not credited when the post was removed; null when not
            recorded
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key created in Dashboard → Settings → Developer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.