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

# List campaigns

> Lists SDK-facing campaigns with optional chain, status, target, user, budget, and claimability filters.



## OpenAPI

````yaml https://api-tbi.boost.xyz/v1/openapi.json get /v1/campaigns
openapi: 3.1.0
info:
  title: Boost Time-Based Incentives SDK API
  version: 1.0.0
  description: >-
    Public /v1 API surface for the Boost TBI SDK. Internal Rabbithole, admin,
    Polymarket, and widget routes are intentionally excluded.
servers:
  - url: https://api-tbi.boost.xyz
    description: Production
  - url: http://localhost:3000
    description: Local development
security: []
tags:
  - name: Campaigns
    description: Campaign discovery, detail, and stats endpoints.
  - name: Claims
    description: Claim proof and claim status endpoints.
  - name: Forwarder
    description: Boost Forwarder target discovery and direct deposit transaction builders.
  - name: Referrals
    description: >-
      Referral attribution: signed per-campaign binds, referrer earnings, and
      claim proofs.
  - name: Users
    description: User rewards and balance endpoints.
paths:
  /v1/campaigns:
    get:
      tags:
        - Campaigns
      summary: List campaigns
      description: >-
        Lists SDK-facing campaigns with optional chain, status, target, user,
        budget, and claimability filters.
      operationId: listCampaigns
      parameters:
        - name: limit
          in: query
          required: false
          description: Maximum number of rows to return.
          schema:
            default: 20
            type: integer
            exclusiveMinimum: 0
            maximum: 100
        - name: offset
          in: query
          required: false
          description: Pagination offset.
          schema:
            default: 0
            type: integer
            minimum: 0
            maximum: 9007199254740991
        - name: chainId
          in: query
          required: false
          description: Reward chain ID.
          schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 9007199254740991
        - name: status
          in: query
          required: false
          description: Campaign statuses. May be repeated or comma-separated.
          schema:
            anyOf:
              - type: string
              - type: array
                items:
                  type: string
        - name: targetChainId
          in: query
          required: false
          description: Event chain ID. Must be provided with targetAddress.
          schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 9007199254740991
        - name: targetAddress
          in: query
          required: false
          description: Event-chain target vault, pool, or token address.
          schema:
            type: string
        - name: userAddress
          in: query
          required: false
          description: User EVM address. Responses normalize addresses to lowercase.
          schema:
            type: string
        - name: budget
          in: query
          required: false
          description: Campaign budget address.
          schema:
            type: string
        - name: claimable
          in: query
          required: false
          description: >-
            When true, requires userAddress and returns campaigns with unclaimed
            rewards.
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
        - name: includeForwarderRequired
          in: query
          required: false
          description: Opt in to campaigns that require deposits through a forwarder.
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
        - name: X-Boost-Ref-Id
          in: header
          required: false
          description: >-
            Optional partner attribution reference ID. Values are manually
            assigned by Boost and must be at most 128 characters.
          schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]*$
      responses:
        '200':
          description: Campaign page
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignListResponse'
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ErrorResponse'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ErrorResponse'
components:
  schemas:
    CampaignListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: object
                properties:
                  chainId:
                    type: integer
                    exclusiveMinimum: 0
                    maximum: 9007199254740991
                  campaignIndex:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                required:
                  - chainId
                  - campaignIndex
                additionalProperties: false
              tvl:
                type: string
                pattern: ^(0|[1-9]\d*)$
              participants:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              rewardsDistributed:
                type: string
                pattern: ^(0|[1-9]\d*)$
              rewardsRemaining:
                type: string
                pattern: ^(0|[1-9]\d*)$
              boostApyBps:
                anyOf:
                  - type: string
                    pattern: ^(0|[1-9]\d*)$
                  - type: 'null'
              protocolApyBps:
                anyOf:
                  - type: string
                    pattern: ^(0|[1-9]\d*)$
                  - type: 'null'
              eventChainId:
                type: integer
                exclusiveMinimum: 0
                maximum: 9007199254740991
              configHash: {}
              status:
                type: string
                enum:
                  - draft
                  - pending
                  - active
                  - ended
                  - finalized
                  - cancelled
              startTime:
                type: string
                pattern: ^(0|[1-9]\d*)$
              endTime:
                type: string
                pattern: ^(0|[1-9]\d*)$
              rewardToken:
                type: object
                properties:
                  address: {}
                  decimals:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  symbol:
                    type: string
                required:
                  - address
                  - decimals
                  - symbol
                additionalProperties: false
              totalRewards:
                type: string
                pattern: ^(0|[1-9]\d*)$
              target:
                type: object
                properties:
                  tokenStandard:
                    type: string
                    minLength: 1
                  chainId:
                    type: integer
                    exclusiveMinimum: 0
                    maximum: 9007199254740991
                  address: {}
                  symbol:
                    anyOf:
                      - type: string
                      - type: 'null'
                  decimals:
                    anyOf:
                      - type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      - type: 'null'
                  tokenId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  poolId: {}
                  poolManager: {}
                  token0: {}
                  token1: {}
                  poolKey:
                    type: object
                    properties:
                      currency0: {}
                      currency1: {}
                      fee:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      tickSpacing:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      hooks: {}
                    required:
                      - currency0
                      - currency1
                      - fee
                      - tickSpacing
                      - hooks
                    additionalProperties: false
                  shareModel:
                    type: string
                    enum:
                      - weighted
                      - tvl
                      - fees
                  requireInRange:
                    type: boolean
                  protocol:
                    type: string
                    minLength: 1
                  marketKey:
                    type: string
                    minLength: 1
                  asset: {}
                required:
                  - tokenStandard
                  - chainId
                  - address
                  - symbol
                  - decimals
                additionalProperties: false
              modes:
                type: object
                properties:
                  fixedApy:
                    type: object
                    properties:
                      rateBps:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                    required:
                      - rateBps
                    additionalProperties: false
                  apyCap:
                    type: object
                    properties:
                      capRateBps:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                    required:
                      - capRateBps
                    additionalProperties: false
                  earningCap:
                    type: object
                    properties:
                      maxRewards:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                    required:
                      - maxRewards
                    additionalProperties: false
                  capitalCap:
                    type: object
                    properties:
                      maxTotalBalance:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                      maxTotalBalanceUsd:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                    additionalProperties: false
                  depositCap:
                    type: object
                    properties:
                      maxBalance:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                      maxBalanceUsd:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                    additionalProperties: false
                  cliff:
                    type: object
                    properties:
                      cliffDurationSeconds:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      buffer:
                        anyOf:
                          - type: string
                            pattern: ^(0|[1-9]\d*)$
                          - type: string
                            pattern: ^0\.\d+$
                    required:
                      - cliffDurationSeconds
                      - buffer
                    additionalProperties: false
                  minBalance:
                    type: object
                    properties:
                      minBalance:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                      minBalanceUsd:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                    additionalProperties: false
                  depositTiers:
                    type: object
                    properties:
                      tiers:
                        type: array
                        items:
                          type: object
                          properties:
                            minBalance:
                              type: string
                              pattern: ^(0|[1-9]\d*)$
                            multiplier:
                              type: string
                          required:
                            - minBalance
                            - multiplier
                          additionalProperties: false
                    required:
                      - tiers
                    additionalProperties: false
                  newCapitalOnly:
                    type: object
                    properties:
                      snapshotBlock:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                    required:
                      - snapshotBlock
                    additionalProperties: false
                  includeExistingPositions:
                    type: object
                    properties: {}
                    additionalProperties: false
                  participantCap:
                    type: object
                    properties:
                      maxParticipants:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                    required:
                      - maxParticipants
                    additionalProperties: false
                additionalProperties: false
              requiresForwarderDeposit:
                type: boolean
              userPosition:
                anyOf:
                  - type: object
                    properties:
                      balance:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                      accumulatedRewards:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                      claimable:
                        type: string
                        pattern: ^(0|[1-9]\d*)$
                      triggeredAt:
                        anyOf:
                          - type: string
                            pattern: ^(0|[1-9]\d*)$
                          - type: 'null'
                      isEligible:
                        type: boolean
                    required:
                      - balance
                      - accumulatedRewards
                      - claimable
                      - triggeredAt
                      - isEligible
                    additionalProperties: false
                  - type: 'null'
            required:
              - id
              - tvl
              - participants
              - rewardsDistributed
              - rewardsRemaining
              - boostApyBps
              - protocolApyBps
              - eventChainId
              - configHash
              - status
              - startTime
              - endTime
              - rewardToken
              - totalRewards
              - target
              - modes
              - requiresForwarderDeposit
              - userPosition
            additionalProperties: false
        total:
          type: integer
          minimum: 0
          maximum: 9007199254740991
      required:
        - data
        - total
      additionalProperties: false
    V1ErrorResponse:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
          enum:
            - INVALID_PARAMS
            - NOT_FOUND
            - RATE_LIMITED
            - INTERNAL_ERROR
            - INVALID_SIGNATURE
            - SELF_REFERRAL
            - ALREADY_BOUND
            - ALREADY_PARTICIPATING
            - CAMPAIGN_NOT_BINDABLE
            - INVALID_SESSION
            - WALLET_NOT_LINKED
            - REFERRER_NOT_LINKED
            - CYCLIC_REFERRAL
        details:
          anyOf:
            - {}
            - type: 'null'
      required:
        - error
        - code
        - details
      additionalProperties: false

````