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

# Create Explorer Balances Report API

> Generate a Breezing explorer balances report comparing computed wallet balances against live chain explorer data to flag mismatches.



## OpenAPI

````yaml POST /reports/explorer-balances
openapi: 3.1.0
info:
  title: Breezing Public API
  version: 1.0.0
  description: >-
    Crypto accounting API for programmatic access and AI agents. Authenticate
    with an API key using the Authorization header: `Bearer brz_...`
servers:
  - url: https://api.breezing.io/v1
security:
  - BearerAuth: []
paths:
  /reports/explorer-balances:
    post:
      tags:
        - Reports
      summary: Generate an explorer balances reconciliation report
      description: >-
        Create an explorer balances report: for each selected wallet and token
        it compares the balance computed from Breezing's transaction history
        against the live balance reported by the chain explorer, flagging
        mismatches (missing or duplicate transactions). Always generated per
        wallet (one generation job per wallet) and always covering ALL chains.
        The snapshot date defaults to the submission time; pass dateTo (unix ms)
        to reconcile as of an earlier moment, matching the dashboard's "Date"
        field. UTXO chains (BTC, BCH, LTC, DOGE, DASH) can only be checked
        against the current on-chain balance, so their rows are skipped when
        dateTo is more than 24 hours in the past.


        Generation is ASYNCHRONOUS: the response returns the pending report and
        task ids immediately. Poll GET /tasks and GET /reports/{id} until the
        status is no longer "pending"/"progress" ("done" = detail rows are ready
        via GET /reports/{id}/details). Parallel report creation is allowed (no
        409 gating, dashboard parity), so do NOT create another report with the
        same parameters while one is still pending; check GET /reports first.


        tokens and wallets are optional; omitting either (or passing []) covers
        ALL of the company's non-spam tokens and/or ALL wallets. Make sure
        wallet balances were recently recalculated (POST /balances/calculate)
        before generating, or the comparison baseline will be stale.
      parameters:
        - schema:
            type: string
            description: >-
              Organization ID. Use GET /v1/companies to discover available
              org/company pairs.
            example: '1'
          required: true
          description: >-
            Organization ID. Use GET /v1/companies to discover available
            org/company pairs.
          name: orgId
          in: query
        - schema:
            type: string
            description: >-
              Company ID. Use GET /v1/companies to discover available companies
              and their access levels.
            example: '1'
          required: true
          description: >-
            Company ID. Use GET /v1/companies to discover available companies
            and their access levels.
          name: companyId
          in: query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateExplorerBalancesReportBody'
      responses:
        '200':
          description: Report generation queued
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                  data:
                    type: object
                    properties:
                      reportId:
                        type: integer
                        description: >-
                          ID of the (pending) report row. Poll GET
                          /reports/{id}.
                      taskId:
                        type: integer
                        description: >-
                          ID of the createReport task tracking generation. Poll
                          GET /tasks.
                    required:
                      - reportId
                      - taskId
                required:
                  - success
                  - data
        '400':
          description: >-
            Empty tokens/wallets selection on a company that has no
            tokens/wallets
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
        '403':
          description: >-
            API key has no access to this company, has read-only access where
            write was required, or the company subscription is inactive
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
      security:
        - BearerAuth: []
components:
  schemas:
    CreateExplorerBalancesReportBody:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 200
          description: Report name shown in the reports list.
        description:
          type: string
          maxLength: 2000
          description: Optional free-text description.
        dateTo:
          type: integer
          minimum: 0
          exclusiveMinimum: true
          description: >-
            Snapshot date (unix ms). Both the calculated and the explorer
            balances are compared as of this moment. Defaults to the submission
            time. UTXO chains (BTC, BCH, LTC, DOGE, DASH) can only be checked
            against the current on-chain balance, so their rows are skipped when
            dateTo is more than 24 hours in the past.
        tokens:
          type: array
          items:
            type: string
          maxItems: 500
          description: >-
            Token symbols to include (max 500), e.g. from GET /assets. Omit or
            pass [] to include ALL of the company's non-spam tokens.
        wallets:
          type: array
          items:
            type: integer
          maxItems: 500
          description: >-
            Wallet IDs to include (from GET /wallets). Omit or pass [] to
            include ALL of the company's wallets.
      required:
        - name

````