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

# Get a campaign

> Returns one campaign from Discover, open or closed, with this creator's application to it. An archived or ended campaign comes back as `closed`, and only to a creator who applied to it.



## OpenAPI

````yaml /openapi/creator.yaml get /discover/campaigns/{campaignId}
openapi: 3.1.0
info:
  title: Passionfroot Creator API
  version: 1.0.0-alpha
  description: >
    Access a creator's own partners, collaborations, placements, catalog,
    proposals, and conversations, and the open campaigns in Discover.

    The API is in alpha. Every operation is restricted to the creator account
    that owns the API key.
servers:
  - url: https://workspace.passionfroot.me/api/creators/v1
security:
  - bearerAuth: []
tags:
  - name: Placements
  - name: Partners
  - name: Collaborations
  - name: Conversations
  - name: Catalog
  - name: Requests
  - name: Proposals
  - name: Discover
paths:
  /discover/campaigns/{campaignId}:
    get:
      tags:
        - Discover
      summary: Get a campaign
      description: >-
        Returns one campaign from Discover, open or closed, with this creator's
        application to it. An archived or ended campaign comes back as `closed`,
        and only to a creator who applied to it.
      operationId: getCreatorDiscoverCampaign
      parameters:
        - $ref: '#/components/parameters/CampaignId'
      responses:
        '200':
          $ref: '#/components/responses/DiscoverCampaign'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  parameters:
    CampaignId:
      name: campaignId
      in: path
      required: true
      schema:
        type: string
  responses:
    DiscoverCampaign:
      description: The campaign.
      content:
        application/json:
          schema:
            type: object
            required:
              - data
            properties:
              data:
                $ref: '#/components/schemas/DiscoverCampaignDetail'
    Unauthorized:
      description: >-
        Missing, invalid, expired, or revoked API key, or a creator account that
        is not approved.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        The key lacks the required scope, the creator has no payouts set up for
        Discover (`DISCOVER_UNAVAILABLE`), or the creator doesn't match the
        campaign they apply to (`NOT_ELIGIBLE`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found or not owned by this creator.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limit exceeded.
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RATE_LIMITED
              message: >-
                This API key is over its rate limit. Wait for Retry-After before
                sending more.
              details:
                limit: 2
                windowSeconds: 1
    ServerError:
      description: Unexpected server failure. Re-read state before retrying a write.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: >-
        Temporary key-verification or write-lock infrastructure failure. Retry
        after the indicated delay.
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    DiscoverCampaignDetail:
      allOf:
        - $ref: '#/components/schemas/DiscoverCampaign'
        - type: object
          required:
            - application
          properties:
            application:
              anyOf:
                - $ref: '#/components/schemas/CampaignApplication'
                - type: 'null'
              description: This creator's application, or null if they haven't applied.
    Error:
      type: object
      additionalProperties: false
      required:
        - error
      description: >-
        The body of every error response. Branch on `code`; messages can be
        reworded.
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: >-
                Stable, machine-readable reason. New codes may be added;
                existing ones never change meaning.
              enum:
                - INVALID_REQUEST
                - INVALID_QUERY_PARAMETER
                - INVALID_BODY
                - INVALID_ID
                - INVALID_CURSOR
                - INVALID_IDEMPOTENCY_KEY
                - UNAUTHENTICATED
                - MISSING_SCOPE
                - DISCOVER_UNAVAILABLE
                - NOT_ELIGIBLE
                - NOT_FOUND
                - METHOD_NOT_ALLOWED
                - CONFLICT
                - CAMPAIGN_CLOSED
                - IDEMPOTENCY_IN_PROGRESS
                - UNPROCESSABLE
                - IDEMPOTENCY_KEY_REUSED
                - RATE_LIMITED
                - INTERNAL_ERROR
                - SERVICE_UNAVAILABLE
            message:
              type: string
              description: >-
                What went wrong and what to do next, written for a developer or
                agent.
            details:
              description: >-
                Present only when there is something structured to act on, such
                as one entry per invalid field (`{ field, message }`).
    DiscoverCampaign:
      type: object
      required:
        - id
        - name
        - brief
        - briefLink
        - minAudienceReach
        - maxAudienceReach
        - categories
        - publishedAt
        - status
        - partner
      properties:
        id:
          type: string
        name:
          type: string
        brief:
          type: string
          description: The brief as plain text.
        briefLink:
          type:
            - string
            - 'null'
          format: uri
          description: A link to the full brief, such as a Google Doc.
        minAudienceReach:
          type:
            - integer
            - 'null'
          description: The smallest audience reach the campaign accepts.
        maxAudienceReach:
          type:
            - integer
            - 'null'
          description: The largest audience reach the campaign accepts.
        categories:
          type: array
          items:
            type: string
        publishedAt:
          type: string
          format: date-time
        status:
          type: string
          enum:
            - open
            - closed
          description: '`open` campaigns take applications. `closed` campaigns no longer do.'
        partner:
          $ref: '#/components/schemas/Partner'
    CampaignApplication:
      type: object
      required:
        - id
        - status
        - message
        - createdAt
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - pending
            - reviewing
            - accepted
            - rejected
          description: '`reviewing` means the brand saved the application for later.'
        message:
          type: string
          description: >-
            The message the brand received with the application. May contain
            basic HTML.
        createdAt:
          type: string
          format: date-time
    Partner:
      type: object
      required:
        - id
        - name
        - websiteUrl
      properties:
        id:
          type: string
        name:
          type: string
        websiteUrl:
          type:
            - string
            - 'null'
          format: uri
  headers:
    RetryAfter:
      description: Seconds to wait before retrying.
      schema:
        type: integer
        minimum: 1
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Passionfroot API key
      description: >-
        Create an API key from Settings → AI agents & API in an approved Creator
        workspace.

````

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