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

> Returns campaigns visible to the API key. Brand keys see their own campaigns; agency keys see campaigns of all brands they manage. Results are sorted by creation date, newest first.



## OpenAPI

````yaml GET /campaigns
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:
    get:
      tags:
        - Campaigns
      summary: List campaigns
      description: >-
        Returns campaigns visible to the API key. Brand keys see their own
        campaigns; agency keys see campaigns of all brands they manage. Results
        are sorted by creation date, newest first.
      operationId: listCampaigns
      parameters:
        - name: status
          in: query
          description: >-
            Filter by status. Repeat the parameter to match any of several
            statuses (e.g. `?status=active&status=paused`).
          required: false
          explode: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CampaignStatus'
        - name: brand_id
          in: query
          description: >-
            Narrow results to a single brand. Agency keys only; must be a brand
            the agency manages.
          required: false
          schema:
            type: string
            format: uuid
        - name: created_after
          in: query
          description: Only campaigns created at or after this time (ISO 8601)
          required: false
          schema:
            type: string
            format: date-time
        - name: created_before
          in: query
          description: Only campaigns created 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 campaigns
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    CampaignStatus:
      type: string
      description: >-
        Campaign lifecycle status. `draft` → `pending_approval` (submitted for
        Launchpoint review) → `active` ⇄ `paused` → `completed`. A denied
        publish returns the campaign to `draft` with `status_detail` populated.
      enum:
        - draft
        - pending_approval
        - active
        - paused
        - completed
      example: active
    CampaignList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Campaign'
        has_more:
          type: boolean
          example: true
        next_cursor:
          type:
            - string
            - 'null'
          description: >-
            Pass as `starting_after` to fetch the next page. Null when there are
            no more results.
          example: Y2FtcGFpZ25fMTIz
    Campaign:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 3f8e4567-e89b-12d3-a456-426614174000
        name:
          type: string
          example: Spring UGC Push
        brand_id:
          type: string
          format: uuid
          example: 9a2b4567-e89b-12d3-a456-426614174000
        brand_name:
          type: string
          example: Acme Skincare
        status:
          $ref: '#/components/schemas/CampaignStatus'
        status_detail:
          $ref: '#/components/schemas/CampaignStatusDetail'
        visibility:
          $ref: '#/components/schemas/Visibility'
        invite_code:
          type:
            - string
            - 'null'
          description: >-
            Access code creators use to join an `unlisted` campaign. Null for
            `public` campaigns.
          example: GLOW2026
        description:
          type:
            - string
            - 'null'
          description: What the campaign is about, shown to creators
          example: Short-form UGC for our spring launch.
        instructions:
          type:
            - string
            - 'null'
          description: Campaign-wide instructions for creators
          example: Film in daylight and show the product in the first 3 seconds.
        icon_url:
          type:
            - string
            - 'null'
          format: uri
          description: Campaign icon shown to creators
        brief_url:
          type:
            - string
            - 'null'
          format: uri
          description: Link to an external full brief document
        video_examples:
          type: array
          description: Campaign-level example video URLs
          items:
            type: string
            format: uri
        links:
          type: array
          description: Links given to creators alongside the brief
          items:
            $ref: '#/components/schemas/CampaignLink'
        targeting:
          $ref: '#/components/schemas/Targeting'
        product:
          $ref: '#/components/schemas/ProductInfo'
        spent_cents:
          type: integer
          description: Total paid to creators on this campaign, in cents. Read-only.
          example: 123400
        accepting_submissions:
          type: boolean
          description: >-
            Whether new creators can currently start work. Controlled by
            pause/resume.
          example: true
        content_deadline_date:
          type:
            - string
            - 'null'
          format: date
          description: Date by which creators must submit content for review
          example: '2026-03-01'
        post_deadline_date:
          type:
            - string
            - 'null'
          format: date
          description: Date by which approved content must be posted
          example: '2026-03-15'
        settings:
          $ref: '#/components/schemas/CampaignSettings'
        tasks:
          type: array
          description: >-
            The campaign's tasks. Embedded when fetching a single campaign;
            omitted in list responses (use `tasks_count`).
          items:
            $ref: '#/components/schemas/Task'
        tasks_count:
          type: integer
          example: 2
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    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
    CampaignStatusDetail:
      type:
        - object
        - 'null'
      description: >-
        Why the campaign is in its current status. Null unless the campaign was
        auto-paused or a publish request was denied.
      properties:
        kind:
          type: string
          enum:
            - auto_paused
            - publish_denied
        reason:
          type: string
          description: >-
            For `auto_paused`: one of `billing_issue`, `other`. For
            `publish_denied`: the reviewer's explanation.
          example: billing_issue
        occurred_at:
          type: string
          format: date-time
    Visibility:
      type: string
      description: >-
        `public` campaigns appear in creator discovery; `unlisted` campaigns are
        reachable only via an access code or direct link
      enum:
        - public
        - unlisted
      example: public
    CampaignLink:
      type: object
      description: >-
        A link given to creators alongside the brief (store page, app listing,
        affiliate link, ...)
      required:
        - url
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        url:
          type: string
          format: uri
          example: https://acme.com/products/glow-serum
        service:
          type:
            - string
            - 'null'
          description: What the link points at, e.g. `shopify`, `appstore`, `playstore`
          example: shopify
        description:
          type:
            - string
            - 'null'
          example: Product page to link in bio
        affiliate_code:
          type:
            - string
            - 'null'
          example: CREATOR20
    Targeting:
      type:
        - object
        - 'null'
      description: >-
        Which creators can join the campaign. Groups combine via
        `root_operator`; conditions within a group combine via the group's
        `operator`. Null means no targeting (open to all).
      required:
        - root_operator
        - groups
      properties:
        root_operator:
          type: string
          enum:
            - AND
            - OR
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TargetingGroup'
    ProductInfo:
      type: object
      description: The product this campaign promotes
      required:
        - name
      properties:
        name:
          type: string
          example: Acme Glow Serum
        url:
          type:
            - string
            - 'null'
          format: uri
          example: https://acme.com/products/glow-serum
        image_url:
          type:
            - string
            - 'null'
          format: uri
          example: https://cdn.acme.com/glow-serum.png
    CampaignSettings:
      type: object
      description: Approval workflow and task-completion settings
      properties:
        creator_approval_required:
          type: boolean
          description: Whether creators must be approved before starting work
          example: true
        brand_approval_required:
          type: boolean
          description: >-
            For agency-managed campaigns: whether the brand also signs off on
            content after the agency's review
          example: false
        post_approval_mode:
          type: string
          description: >-
            How strictly submitted content is reviewed before it can be posted.
            `strict`, `moderate`, and `lenient` tune the review bar; `always`
            auto-approves every submission with no manual review.
          enum:
            - strict
            - moderate
            - lenient
            - always
          example: strict
        completion_mode:
          $ref: '#/components/schemas/CompletionMode'
    Task:
      type: object
      description: >-
        A deliverable creators complete for the campaign. Tasks on Canvas
        campaigns are readable but not writable via the API, and some fields
        (e.g. `max_posts_per_creator`) don't apply to them.
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
          example: 15s unboxing video
        instructions:
          type: string
          example: Open the package on camera and show your first reaction.
        platforms:
          type: array
          items:
            $ref: '#/components/schemas/Platform'
          example:
            - tiktok
            - instagram
        formats:
          type: array
          items:
            $ref: '#/components/schemas/Format'
          example:
            - feed_video
        caption:
          type:
            - string
            - 'null'
          description: Caption the creator must use when posting
          example: Obsessed with my new glow ✨ @acmeskincare
        require_ad_disclosure:
          type: boolean
          description: >-
            Whether the post must carry the platform's paid-partnership / ad
            disclosure
          example: true
        tiktok_sound_url:
          type:
            - string
            - 'null'
          format: uri
          description: TikTok sound the content must use
        instagram_sound_url:
          type:
            - string
            - 'null'
          format: uri
          description: Instagram sound the content must use
        video_examples:
          type: array
          description: URLs of example videos showing creators what to make
          items:
            type: string
            format: uri
        image_url:
          type:
            - string
            - 'null'
          format: uri
          description: Cover image shown with the task
        review_mode:
          type: string
          description: >-
            `media_review`: you review each submission. `autoreview`:
            submissions are reviewed automatically — set `autoreview_prompt` to
            have the AI check content against it first.
          enum:
            - media_review
            - autoreview
          example: media_review
        autoreview_prompt:
          type:
            - string
            - 'null'
          description: >-
            What the AI should verify before approving a submission. Only used
            when `review_mode` is `autoreview`. Optional — with no prompt,
            autoreview approves every submission.
          example: The product must be clearly visible and mentioned by name.
        is_required:
          type: boolean
          description: >-
            Whether every creator must complete this task. Only authored
            directly when the campaign's `settings.completion_mode` is
            `some_required`; other modes derive it.
          example: true
        max_posts_per_creator:
          type:
            - integer
            - 'null'
          description: >-
            Null means unlimited. Not applicable to Canvas campaigns, which cap
            videos weekly instead — always null there.
          example: 1
        display_order:
          type: integer
          description: Position of the task in the campaign's brief
          example: 0
        status:
          $ref: '#/components/schemas/TaskStatus'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    TargetingGroup:
      type: object
      required:
        - operator
        - conditions
      properties:
        name:
          type: string
          example: North America
        operator:
          type: string
          description: How conditions within this group combine
          enum:
            - AND
            - OR
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/TargetingCondition'
    CompletionMode:
      type: string
      description: >-
        How creators engage with the campaign's tasks. `all_required`: every
        task must be completed. `pick_one`: the creator commits to exactly one
        task. `all_optional`: any subset. `some_required`: each task's own
        `is_required` flag decides.
      enum:
        - all_required
        - pick_one
        - all_optional
        - some_required
      example: all_optional
    Platform:
      type: string
      enum:
        - tiktok
        - instagram
        - youtube
        - snapchat
      example: tiktok
    Format:
      type: string
      description: The content format for a task
      enum:
        - feed_video
        - feed_images
        - feed_video_ugc
        - feed_video_music
        - feed_images_music
        - story_video
        - story_images
      example: feed_video
    TaskStatus:
      type: string
      description: '`active` tasks accept new work; `archived` tasks accept no new creators'
      enum:
        - active
        - archived
      example: active
    TargetingCondition:
      type: object
      required:
        - property
        - operator
        - values
      properties:
        property:
          type: string
          description: >-
            The creator property to match on: an opaque `id` from [List
            Targeting
            Properties](/api-reference/campaigns/list-targeting-properties). It
            may be a UUID or a short slug (e.g. `followers`); pass it back
            exactly as returned.
          example: 877972f8-af4b-4918-95df-d35377234817
        operator:
          type: string
          enum:
            - IN
            - NOT_IN
        values:
          type: array
          items:
            type: string
          example:
            - 9b1f8c72-3d4e-4a2b-8c1a-2f6e5d4c3b2a
          description: >-
            For `option` properties: opaque `value`s from the property's values
            list, passed verbatim (not the human-readable label). For `number`
            properties: a single `"min-max"` range string, e.g. `"10000-50000"`.
  parameters:
    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
  responses:
    BadRequest:
      description: >-
        The request is malformed — invalid JSON, unknown parameter value, or bad
        cursor (`invalid_request`)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: The API key is missing, unknown, or revoked (`unauthenticated`)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        The API key lacks a required scope (`missing_scope`) or referenced a
        brand it does not manage (`brand_not_managed`)
      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

````