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

# Get account's campaign locks

> Returns the latest state of each FFT campaign lock for the account,
sorted by lock time descending. Optionally filtered by campaign and status.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/campaign_locks
openapi: 3.1.0
info:
  title: Decibel Trading API
  description: >-
    RESTful API for Decibel. Provides read-only endpoints for market data,
    trading operations, positions, and analytics.
  contact:
    name: Decibel Team
    url: https://decibel.trade/
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.mainnet.aptoslabs.com/decibel
    description: Mainnet
  - url: https://api.testnet.aptoslabs.com/decibel
    description: Testnet
security:
  - bearerAuth: []
tags:
  - name: Market Data
    description: Market information and real-time data endpoints
  - name: User
    description: User information and account management
  - name: Account
    description: Account-specific endpoints and data
  - name: Trades
    description: Trading operations and history
  - name: Positions
    description: User position management
  - name: Orders
    description: Order management and history
  - name: TWAP
    description: Time-weighted average price orders
  - name: Bulk Orders
    description: Bulk order management
  - name: Vaults
    description: Vault operations and management
  - name: Analytics
    description: Analytics and performance metrics
  - name: Points
    description: Points-related account metrics
  - name: Trading Points
    description: Trading points endpoints
  - name: Trading Hz
    description: Trading Hz endpoints
  - name: Tier
    description: Tier information endpoints
  - name: Streaks
    description: User streak tracking endpoints
  - name: Predeposit Rewards
    description: Season 0 predeposit USDC rewards
  - name: Referrals
    description: Referral code management and tracking
  - name: Affiliates
    description: Affiliate code and earnings endpoints
  - name: Campaigns
    description: On-chain reward campaign endpoints
paths:
  /api/v1/campaign_locks:
    get:
      tags:
        - Campaigns
      summary: Get account's campaign locks
      description: >-
        Returns the latest state of each FFT campaign lock for the account,

        sorted by lock time descending. Optionally filtered by campaign and
        status.
      operationId: handle_campaign_locks
      parameters:
        - name: account
          in: query
          description: User account address (`user` query alias is also accepted)
          required: true
          schema:
            type: string
        - name: campaign_addr
          in: query
          description: Optional campaign address filter
          required: false
          schema:
            type: string
        - name: status
          in: query
          description: Optional status filter (Active, Claimed)
          required: false
          schema:
            $ref: '#/components/schemas/LockStatus'
        - name: limit
          in: query
          description: Page size
          required: false
          schema:
            type: integer
            format: int32
            default: 10
            maximum: 200
            minimum: 0
          example: 100
        - name: offset
          in: query
          description: Page offset
          required: false
          schema:
            type: integer
            format: int32
            default: 0
            maximum: 10000
            minimum: 0
          example: 0
      responses:
        '200':
          description: Campaign locks retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignLocksResponse'
        '400':
          description: Invalid address
        '500':
          description: Database error
components:
  schemas:
    LockStatus:
      type: string
      description: |-
        PascalCase deliberately follows the trial-DTO family, not the campaigns
        family's lowercase.
      enum:
        - Active
        - Claimed
    CampaignLocksResponse:
      type: object
      required:
        - account
        - locks
        - total_count
      properties:
        account:
          type: string
        locks:
          type: array
          items:
            $ref: '#/components/schemas/LockDto'
        total_count:
          type: integer
          format: int32
          description: >-
            Total rows matching the filters across all pages (SQL-level count:

            orphan rows skipped from `locks` still count and consume page
            slots).
          minimum: 0
    LockDto:
      type: object
      description: |-
        A campaign reward lock. Extension fields appear on extended locks only;
        returned/claimed fields on claimed locks only.
      required:
        - lock_id
        - campaign_addr
        - trial_id
        - amount
        - amount_usd
        - duration_days
        - lock_subaccount
        - locked_at_ms
        - unlocks_at_ms
        - status
        - was_extended
      properties:
        amount:
          type: integer
          format: int64
          minimum: 0
        amount_usd:
          type: number
          format: double
        campaign_addr:
          type: string
        claimed_at_ms:
          type:
            - integer
            - 'null'
          format: int64
        duration_days:
          type: integer
          format: int32
          minimum: 0
        extended_at_ms:
          type:
            - integer
            - 'null'
          format: int64
        lock_id:
          type: integer
          format: int64
          minimum: 0
        lock_subaccount:
          type: string
        locked_at_ms:
          type: integer
          format: int64
        previous_unlocks_at_ms:
          type:
            - integer
            - 'null'
          format: int64
        returned_amount:
          type:
            - integer
            - 'null'
          format: int64
          description: Trading-PnL-adjusted; may differ from `amount`.
          minimum: 0
        returned_amount_usd:
          type:
            - number
            - 'null'
          format: double
        status:
          $ref: '#/components/schemas/LockStatus'
        trial_id:
          type: integer
          format: int64
          minimum: 0
        unlocks_at_ms:
          type: integer
          format: int64
        was_extended:
          type: boolean
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token from Geomi. See
        [Authentication](/api-reference/rest/authentication) for setup
        instructions.

````