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

# List wallet ledger entries

> Get the exact paginated workspace wallet ledger, spend timeline and reconciliation

**Required scope:** `billing.view`


## OpenAPI

````yaml /api-reference/openapi.json get /credits/ledger
openapi: 3.0.3
info:
  title: Pineyard API
  version: 1.0.0
  description: >-
    Programmatic access to agents, campaigns, calls, phone numbers, WhatsApp and
    results in your Pineyard workspace.
servers:
  - url: https://api.pineyard.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /credits/ledger:
    get:
      summary: List wallet ledger entries
      description: >-
        Get the exact paginated workspace wallet ledger, spend timeline and
        reconciliation
      parameters:
        - schema:
            type: string
            enum:
              - today
              - last_7_days
              - last_30_days
              - this_month
              - last_month
              - since_last_recharge
              - all_time
              - custom
            default: last_30_days
          required: false
          name: period
          in: query
        - schema:
            type: string
            nullable: true
          required: false
          name: from
          in: query
        - schema:
            type: string
            nullable: true
          required: false
          name: to
          in: query
        - schema:
            type: string
            enum:
              - all
              - calls
              - whatsapp
              - topups
              - adjustments
            default: all
          required: false
          name: category
          in: query
        - schema:
            type: string
          required: false
          name: campaignId
          in: query
        - schema:
            type: string
          required: false
          name: cursor
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 50
          required: false
          name: limit
          in: query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        amountMicro:
                          type: string
                        balanceAfter:
                          type: string
                        kind:
                          type: string
                          enum:
                            - TOPUP
                            - CALL_DEBIT
                            - CALL_ABANDONED
                            - ADJUSTMENT
                            - WHATSAPP_DEBIT
                            - EMAIL_DEBIT
                            - WHATSAPP_NUMBER_LEASE
                            - DEMO_TOPUP
                            - DEMO_DEBIT
                            - DEMO_ADJUST
                            - TRIAL_DEBIT
                            - SPEECH_DEBIT
                            - NUMBER_DEBIT
                            - NUMBER_RENTAL
                        callId:
                          type: string
                          nullable: true
                        billingMode:
                          type: string
                          nullable: true
                        billsecSeconds:
                          type: integer
                          nullable: true
                        reason:
                          type: string
                          nullable: true
                        createdAt:
                          type: string
                          format: date-time
                        call:
                          type: object
                          nullable: true
                          properties:
                            id:
                              type: string
                            phone:
                              type: string
                            queuedAt:
                              type: string
                              format: date-time
                            durationMs:
                              type: integer
                              nullable: true
                            billDurationSeconds:
                              type: integer
                              nullable: true
                            campaignId:
                              type: string
                              nullable: true
                            campaignName:
                              type: string
                              nullable: true
                          required:
                            - id
                            - phone
                            - queuedAt
                            - durationMs
                            - billDurationSeconds
                            - campaignId
                            - campaignName
                      required:
                        - id
                        - amountMicro
                        - balanceAfter
                        - kind
                        - callId
                        - billingMode
                        - billsecSeconds
                        - reason
                        - createdAt
                        - call
                  nextCursor:
                    type: string
                    nullable: true
                  totalCount:
                    type: integer
                  window:
                    type: object
                    properties:
                      period:
                        type: string
                        enum:
                          - today
                          - last_7_days
                          - last_30_days
                          - this_month
                          - last_month
                          - since_last_recharge
                          - all_time
                          - custom
                      from:
                        type: string
                        nullable: true
                        format: date-time
                      to:
                        type: string
                        nullable: true
                        format: date-time
                      timezone:
                        type: string
                        enum:
                          - Asia/Kolkata
                      lastRechargeAt:
                        type: string
                        nullable: true
                        format: date-time
                    required:
                      - period
                      - from
                      - to
                      - timezone
                      - lastRechargeAt
                  filtered:
                    type: object
                    properties:
                      totalCount:
                        type: integer
                      usageSpentMicro:
                        type: string
                      series:
                        type: array
                        items:
                          type: object
                          properties:
                            date:
                              type: string
                            spentMicro:
                              type: string
                          required:
                            - date
                            - spentMicro
                    required:
                      - totalCount
                      - usageSpentMicro
                      - series
                  reconciliation:
                    type: object
                    properties:
                      openingBalanceMicro:
                        type: string
                      topupsMicro:
                        type: string
                      adjustmentsMicro:
                        type: string
                      callSpendMicro:
                        type: string
                      whatsappSpendMicro:
                        type: string
                      otherSpendMicro:
                        type: string
                      usageSpentMicro:
                        type: string
                      netChangeMicro:
                        type: string
                      expectedClosingBalanceMicro:
                        type: string
                      closingBalanceMicro:
                        type: string
                      discrepancyMicro:
                        type: string
                    required:
                      - openingBalanceMicro
                      - topupsMicro
                      - adjustmentsMicro
                      - callSpendMicro
                      - whatsappSpendMicro
                      - otherSpendMicro
                      - usageSpentMicro
                      - netChangeMicro
                      - expectedClosingBalanceMicro
                      - closingBalanceMicro
                      - discrepancyMicro
                required:
                  - items
                  - nextCursor
                  - totalCount
                  - window
                  - filtered
                  - reconciliation
        '400':
          description: >-
            - `internal_error`: An unexpected error. A `400` with this code
            usually means the body is not valid JSON; a `413` means the body is
            larger than 1 MB.

            - `invalid_body`: The request body (or query) failed validation.
            Details are in `issues` (or `detail`). `422` on `POST
            /v1/campaigns/{campaignId}/leads`.

            - `invalid_cursor`: Ledger cursor invalid.

            - `invalid_custom_range`: Custom ledger range missing or reversed.

            - `invalid_query`: Query string failed validation.
        '401':
          description: >-
            - `invalid_api_key`: The API key is unknown, revoked or expired, or
            its workspace was deleted.

            - `unauthorized`: No `Authorization: Bearer` header, or an empty
            token.
        '403':
          description: >-
            - `api_key_not_scoped`: A key issued without scopes was used outside
            `/v1`.

            - `api_key_owner_inactive`: The member the key acts for was removed
            or suspended.

            - `forbidden`: The key lacks the permission named in
            `requiredPermission`, or the resource belongs to another workspace.

            - `workspace_pending_approval`: The workspace has not been approved
            yet.

            - `workspace_suspended`: The workspace is suspended.
        '409':
          description: >-
            - `no_recharge_found`: 'Since last recharge' range requested but no
            recharge exists.
        '413':
          description: >-
            - `internal_error`: An unexpected error. A `400` with this code
            usually means the body is not valid JSON; a `413` means the body is
            larger than 1 MB.
        '429':
          description: '- `rate_limited`: Too many requests.'
        '500':
          description: >-
            - `internal_error`: An unexpected error. A `400` with this code
            usually means the body is not valid JSON; a `413` means the body is
            larger than 1 MB.
        '502':
          description: >-
            - `provider_error`: The calling service rejected the request
            (`upstreamStatus` 4xx) or was unavailable (5xx).
        '503':
          description: '- `database_unavailable`: The service is temporarily unavailable.'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your API key, e.g. `pk_live_xxxxxxxxxxxxxxxxxxxxxxxx`.

````

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