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

# List Campaigns

> Fetches all campaigns for the authenticated team.

<Note>
  Refer to [Authentication](/authentication) for information on how to obtain a
  bearer token. This endpoint requires the `reward.campaign.list` API client
  authorization scope to access the list of campaigns. You can set up scopes on
  the [API Clients](https://cloud.belio.co.ke/team-overview/api-access-keys)
  page.
</Note>

### Rate Limit

This endpoint is rate limited to **1** request per second.


## OpenAPI

````yaml GET /data/campaign
openapi: 3.1.0
info:
  title: Belio API
  description: OpenAPI Specification for Belio's REST API
  contact:
    name: Belio API Support
    url: https://belio.co.ke
  version: 1.0.0
servers:
  - url: https://api.belio.co.ke
    description: API Server
security:
  - bearerAuth: []
paths:
  /data/campaign:
    get:
      tags:
        - Campaign
      description: Fetches all campaigns for the authenticated team.
      operationId: listCampaigns
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: 1-indexed page number
        - name: pageSize
          in: query
          required: false
          schema:
            type: integer
            default: 100
            minimum: 1
          description: Max number of items per page
      responses:
        '200':
          description: Campaigns retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignListResponse'
        '401':
          description: Unauthenticated - invalid or missing token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIError'
        '403':
          description: Unauthorized - the user does not have permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIError'
components:
  schemas:
    CampaignListResponse:
      type: object
      properties:
        desc:
          type: string
          example: OK
        result:
          $ref: '#/components/schemas/CampaignListResult'
    APIError:
      type: object
      properties:
        desc:
          type: string
        result:
          description: Optional structured error details.
    CampaignListResult:
      type: object
      properties:
        page:
          type: integer
          description: Current page number
        pageSize:
          type: integer
          description: Number of items per page
        total:
          type: integer
          description: Total number of campaigns
        data:
          type: array
          items:
            $ref: '#/components/schemas/Campaign'
    Campaign:
      type: object
      properties:
        id:
          type: string
          description: Unique campaign ID
        name:
          type: string
          description: Display name of the campaign
        description:
          type: string
          description: Text summary of the campaign
        teamId:
          type: string
          description: Owning team ID
        serviceId:
          type: string
          description: Linked service ID
        status:
          type: string
          enum:
            - Active
            - Archived
          description: Status of the campaign
        rules:
          $ref: '#/components/schemas/CampaignRules'
    CampaignRules:
      type: object
      properties:
        frequency:
          $ref: '#/components/schemas/CampaignFrequency'
        allowedDenominations:
          type: array
          items:
            type: string
            enum:
              - 10MB
              - 20MB
              - 25MB
              - 30MB
              - 50MB
              - 100MB
              - 150MB
              - 200MB
              - 250MB
              - 500MB
              - 750MB
              - 1GB
              - 2GB
              - 3GB
              - 5GB
              - 10GB
          description: List of allowed denominations
        expiry:
          type:
            - string
            - 'null'
          format: date-time
          description: Optional expiry timestamp
    CampaignFrequency:
      type: object
      properties:
        type:
          type: string
          enum:
            - OneTime
            - Hourly
            - Daily
            - Weekly
            - BiWeekly
            - Monthly
            - Quarterly
            - SemiAnnual
            - Annual
            - Unlimited
          description: Frequency type of the campaign
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````