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

# Search free rounds campaigns

> Paginated search over your campaigns.

`campaignCode` and `campaignName` match on **substring**, not exact equality — filter client side if you need an exact hit.



## OpenAPI

````yaml api-reference/customer.json POST /api/v1/free-rounds/campaigns/search
openapi: 3.1.0
info:
  title: Zero-Dash Customer API
  version: 1.0.0
  summary: >-
    Server-to-server API that operators call to list games, launch sessions and
    manage free rounds.
  description: >-
    Endpoints that **you (the operator) call on Zero-Dash**.


    Every request is authenticated with an HMAC-SHA512 signature over
    `apiPath|timestamp|data`. See [Request signature](/security/signature) for
    the algorithm and ready-made clients.


    All endpoints are RESTful, accept and return JSON, and are served over HTTPS
    with a valid TLS certificate.
  contact:
    name: Zero-Dash Integrations
    email: info@zerodash.studio
servers:
  - url: https://{host}
    description: The exact host is assigned to you during onboarding.
    variables:
      host:
        default: api.zerodash.studio
        description: >-
          Base host provided by Zero-Dash. A separate staging host is issued for
          certification.
security:
  - operatorId: []
    signature: []
    timestamp: []
tags:
  - name: Games
    description: Discover the game catalogue and open a player session.
  - name: Free Rounds
    description: Create and inspect free round campaigns and bonus codes.
paths:
  /api/v1/free-rounds/campaigns/search:
    post:
      tags:
        - Free Rounds
      summary: Search free rounds campaigns
      description: >-
        Paginated search over your campaigns.


        `campaignCode` and `campaignName` match on **substring**, not exact
        equality — filter client side if you need an exact hit.
      operationId: searchFreeRoundsCampaigns
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchCampaignsRequest'
            example:
              page: 1
              perPage: 100
              currencyCode: USD
              campaignCode: XMAS
              from: '2026-05-15T11:25:16Z'
              to: '2026-08-15T11:25:16Z'
      responses:
        '200':
          description: A page of matching campaigns.
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    type: object
                    required:
                      - list
                      - pagination
                    properties:
                      list:
                        type: array
                        items:
                          $ref: '#/components/schemas/Campaign'
                      pagination:
                        $ref: '#/components/schemas/Pagination'
              example:
                data:
                  list:
                    - campaignCode: XMAS-2026
                      campaignName: XMAS 2026
                      amount: 2.5
                      currencyCode: USD
                      gameSlugs:
                        - lucky-duck
                      createdAt: '2026-05-15T11:25:16Z'
                      isDisabled: false
                      startDate: '2026-05-15T11:25:16Z'
                      endDate: '2026-08-15T11:25:16Z'
                      maxRounds: 1
                  pagination:
                    page: 1
                    perPage: 100
                    total: 150
                    totalPages: 2
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    SearchCampaignsRequest:
      type: object
      required:
        - page
        - perPage
      properties:
        page:
          type: integer
          minimum: 1
          description: Page to retrieve. The first page is `1`.
        perPage:
          type: integer
          minimum: 1
          maximum: 100
          description: Results per page.
        currencyCode:
          type: string
          description: Filter by campaign currency.
        campaignCode:
          type: string
          description: Substring match on the campaign code.
        campaignName:
          type: string
          description: Substring match on the campaign name.
        from:
          type: string
          format: date-time
          description: >-
            Return campaigns whose `startDate` is greater than or equal to this
            value.
        to:
          type: string
          format: date-time
          description: >-
            Return campaigns whose `endDate` is less than or equal to this
            value.
    Campaign:
      type: object
      properties:
        campaignCode:
          type: string
          description: Unique campaign identifier.
        campaignName:
          type: string
          description: Display name of the campaign.
        amount:
          type: number
          description: Stake redeemed by the player in one free round.
        currencyCode:
          type: string
          description: ISO-4217 currency of `amount`.
        gameSlugs:
          type: array
          description: Games where the free rounds are valid.
          items:
            type: string
        createdAt:
          type: string
          format: date-time
          description: Campaign creation date.
        isDisabled:
          type: boolean
          description: Whether the campaign has been manually disabled.
        startDate:
          type: string
          format: date-time
          description: Start of the redemption window.
        endDate:
          type: string
          format: date-time
          description: End of the redemption window.
        maxRounds:
          type: integer
          description: Value supplied at campaign creation, when present.
    Pagination:
      type: object
      properties:
        page:
          type: integer
          description: Current page.
        perPage:
          type: integer
          description: Results per page.
        total:
          type: integer
          description: Total matching campaigns.
        totalPages:
          type: integer
          description: Total number of pages.
    Error:
      type: object
      properties:
        message:
          type: string
          description: Human-readable explanation of the failure.
  responses:
    BadRequest:
      description: Invalid request payload or query format.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: invalid currency code
    Unauthorized:
      description: >-
        Missing, malformed, stale or mismatched signature — or a source IP
        outside your allowlist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: invalid signature
    InternalError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: internal error
  securitySchemes:
    operatorId:
      type: apiKey
      in: header
      name: X-Operator
      description: Your operator identifier, issued by Zero-Dash during onboarding.
    signature:
      type: apiKey
      in: header
      name: X-Zd-Signature
      description: >-
        Hex-encoded `HMAC-SHA512(apiPath|timestamp|data, secretKey)`. See
        [Request signature](/security/signature).
    timestamp:
      type: apiKey
      in: header
      name: X-Zd-Timestamp
      description: >-
        Unix time in **milliseconds**, and the exact value signed. Requests
        older than 5 minutes are rejected.

````