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

# FOCUS Report

> 
Returns a FOCUS compliant billing report as a CSV download.

> **Availability:** This endpoint is available to enterprise customers with FOCUS reports enabled. Contact your account team or support@fal.ai to request access.

Supports three data sources:
- **invoice**: Finalized invoice data for a billing month. Includes usage charges, credits, and taxes.
- **estimate**: Real-time usage estimates for a date range. Pre-invoice data that may change once invoiced.
- **tagged-estimate**: Those same estimates with the `Tags` column populated from the `X-Fal-Tags` tags set on your requests. Requires tagged reporting to be enabled for the account; recent usage is delayed relative to `estimate`.

The report follows the [FinOps FOCUS specification](https://focus.finops.org/) for cloud billing data interoperability.

**Invoice reports** default to the most recently available billing month.
**Usage estimates** default to the last 24 hours, with a maximum 90-day date range.

**Organization roots** may pass `expand=organization` to report the whole
organization — each team as a `BillingAccount`, plus per-team `SubAccount`
attribution under shared (pooled) billing. Without it, the report is
single-account, and the estimate covers only the calling account. Note: under
pooled billing the **invoice** source already spans all pooled teams even
without `expand` (they share one billing customer); `expand=organization` adds the
per-team `SubAccount` breakdown.
    



## OpenAPI

````yaml /api-reference/platform-apis/openapi/v1.json get /account/focus
openapi: 3.1.0
info:
  title: Platform APIs
  version: v1
  description: fal REST API for programmatic access to platform resources.
servers:
  - url: https://api.fal.ai/v1
    description: Production server
security: []
paths:
  /account/focus:
    get:
      tags:
        - Account
      summary: FOCUS Report
      description: >-

        Returns a FOCUS compliant billing report as a CSV download.


        > **Availability:** This endpoint is available to enterprise customers
        with FOCUS reports enabled. Contact your account team or support@fal.ai
        to request access.


        Supports three data sources:

        - **invoice**: Finalized invoice data for a billing month. Includes
        usage charges, credits, and taxes.

        - **estimate**: Real-time usage estimates for a date range. Pre-invoice
        data that may change once invoiced.

        - **tagged-estimate**: Those same estimates with the `Tags` column
        populated from the `X-Fal-Tags` tags set on your requests. Requires
        tagged reporting to be enabled for the account; recent usage is delayed
        relative to `estimate`.


        The report follows the [FinOps FOCUS
        specification](https://focus.finops.org/) for cloud billing data
        interoperability.


        **Invoice reports** default to the most recently available billing
        month.

        **Usage estimates** default to the last 24 hours, with a maximum 90-day
        date range.


        **Organization roots** may pass `expand=organization` to report the
        whole

        organization — each team as a `BillingAccount`, plus per-team
        `SubAccount`

        attribution under shared (pooled) billing. Without it, the report is

        single-account, and the estimate covers only the calling account. Note:
        under

        pooled billing the **invoice** source already spans all pooled teams
        even

        without `expand` (they share one billing customer);
        `expand=organization` adds the

        per-team `SubAccount` breakdown.
            
      operationId: getFocusReport
      parameters:
        - schema:
            type: string
            enum:
              - invoice
              - estimate
              - tagged-estimate
            description: >-
              Report source. 'invoice' returns finalized invoice data for a
              billing month. 'estimate' returns real-time usage estimates for a
              date range. 'tagged-estimate' returns those same estimates with
              the Tags column populated from the X-Fal-Tags tags set on your
              requests; it requires tagged reporting to be enabled for the
              account, and recent usage is delayed relative to 'estimate'.
            example: invoice
          required: true
          description: >-
            Report source. 'invoice' returns finalized invoice data for a
            billing month. 'estimate' returns real-time usage estimates for a
            date range. 'tagged-estimate' returns those same estimates with the
            Tags column populated from the X-Fal-Tags tags set on your requests;
            it requires tagged reporting to be enabled for the account, and
            recent usage is delayed relative to 'estimate'.
          name: source
          in: query
        - schema:
            type: string
            pattern: ^\d{4}-\d{2}$
            description: >-
              Billing month (YYYY-MM) — selects invoices by their issue date
              (when the invoice was issued). Used with source=invoice. Defaults
              to the current billing month.
            example: 2025-02
          required: false
          description: >-
            Billing month (YYYY-MM) — selects invoices by their issue date (when
            the invoice was issued). Used with source=invoice. Defaults to the
            current billing month.
          name: billing_month
          in: query
        - schema:
            type: string
            pattern: ^\d{4}-\d{2}$
            description: >-
              Charge month (YYYY-MM) — selects line items by the period charges
              were incurred, capturing them even when split across invoices
              issued in different months. Alternative to billing_month. Used
              with source=invoice.
            example: 2025-01
          required: false
          description: >-
            Charge month (YYYY-MM) — selects line items by the period charges
            were incurred, capturing them even when split across invoices issued
            in different months. Alternative to billing_month. Used with
            source=invoice.
          name: charge_month
          in: query
        - schema:
            type: string
            enum:
              - organization
            description: >-
              Expand the report to the whole organization. Only valid for an
              organization root; each team is reported as a BillingAccount and,
              under shared (pooled) billing, per-team SubAccount attribution is
              added. Omit for a single-account report.
            example: organization
          required: false
          description: >-
            Expand the report to the whole organization. Only valid for an
            organization root; each team is reported as a BillingAccount and,
            under shared (pooled) billing, per-team SubAccount attribution is
            added. Omit for a single-account report.
          name: expand
          in: query
        - schema:
            anyOf:
              - type: string
                format: date-time
              - type: string
                pattern: ^\d{4}-\d{2}-\d{2}$
            description: >-
              Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or
              '2025-01-01'). Defaults to 24 hours ago.
            example: '2025-01-01T00:00:00Z'
          required: false
          description: >-
            Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or
            '2025-01-01'). Defaults to 24 hours ago.
          name: start
          in: query
        - schema:
            anyOf:
              - type: string
                format: date-time
              - type: string
                pattern: ^\d{4}-\d{2}-\d{2}$
            description: >-
              End date in ISO8601 format, exclusive (e.g.,
              '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not
              including this timestamp is returned. Defaults to current time.
            example: '2025-02-01T00:00:00Z'
          required: false
          description: >-
            End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z'
            or '2025-02-01'). Data up to but not including this timestamp is
            returned. Defaults to current time.
          name: end
          in: query
        - schema:
            type: string
            default: UTC
            description: >-
              Timezone for date aggregation and boundaries. All timestamps in
              responses are in UTC, but this controls how dates are bucketed.
            example: UTC
          required: false
          description: >-
            Timezone for date aggregation and boundaries. All timestamps in
            responses are in UTC, but this controls how dates are bucketed.
          name: timezone
          in: query
        - schema:
            type: string
            enum:
              - minute
              - hour
              - day
              - week
              - month
            description: >-
              Aggregation timeframe for timeseries data (auto-detected from date
              range if not specified). Auto-detection uses: minute (<2h), hour
              (<2d), day (<64d), week (<183d), month (>=183d).
            example: day
          required: false
          description: >-
            Aggregation timeframe for timeseries data (auto-detected from date
            range if not specified). Auto-detection uses: minute (<2h), hour
            (<2d), day (<64d), week (<183d), month (>=183d).
          name: timeframe
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            default: 'true'
            description: >-
              Whether to adjust start/end dates to align with timeframe
              boundaries and use exclusive end. Defaults to true. When true,
              dates are aligned to the start of the timeframe period (e.g.,
              start of day) and end is made exclusive (e.g., start of next day).
              When false, uses exact dates provided.
            example: 'true'
          required: false
          description: >-
            Whether to adjust start/end dates to align with timeframe boundaries
            and use exclusive end. Defaults to true. When true, dates are
            aligned to the start of the timeframe period (e.g., start of day)
            and end is made exclusive (e.g., start of next day). When false,
            uses exact dates provided.
          name: bound_to_timeframe
          in: query
      responses:
        '200':
          description: FOCUS compliant CSV report
          content:
            text/csv:
              schema:
                type: string
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - authorization_error
                          - validation_error
                          - not_found
                          - rate_limited
                          - server_error
                          - not_implemented
                        description: The category of error that occurred
                      message:
                        type: string
                        description: Human-readable error message
                      docs_url:
                        type: string
                        format: uri
                        description: Link to relevant documentation
                      request_id:
                        type: string
                        description: Unique request identifier for debugging
                    required:
                      - type
                      - message
                    description: Error details
                required:
                  - error
                description: Standard error response format
              example:
                error:
                  type: validation_error
                  message: Invalid request parameters
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - authorization_error
                          - validation_error
                          - not_found
                          - rate_limited
                          - server_error
                          - not_implemented
                        description: The category of error that occurred
                      message:
                        type: string
                        description: Human-readable error message
                      docs_url:
                        type: string
                        format: uri
                        description: Link to relevant documentation
                      request_id:
                        type: string
                        description: Unique request identifier for debugging
                    required:
                      - type
                      - message
                    description: Error details
                required:
                  - error
                description: Standard error response format
              example:
                error:
                  type: authorization_error
                  message: Authentication required
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - authorization_error
                          - validation_error
                          - not_found
                          - rate_limited
                          - server_error
                          - not_implemented
                        description: The category of error that occurred
                      message:
                        type: string
                        description: Human-readable error message
                      docs_url:
                        type: string
                        format: uri
                        description: Link to relevant documentation
                      request_id:
                        type: string
                        description: Unique request identifier for debugging
                    required:
                      - type
                      - message
                    description: Error details
                required:
                  - error
                description: Standard error response format
              example:
                error:
                  type: authorization_error
                  message: Access denied
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - authorization_error
                          - validation_error
                          - not_found
                          - rate_limited
                          - server_error
                          - not_implemented
                        description: The category of error that occurred
                      message:
                        type: string
                        description: Human-readable error message
                      docs_url:
                        type: string
                        format: uri
                        description: Link to relevant documentation
                      request_id:
                        type: string
                        description: Unique request identifier for debugging
                    required:
                      - type
                      - message
                    description: Error details
                required:
                  - error
                description: Standard error response format
              example:
                error:
                  type: rate_limited
                  message: Rate limit exceeded
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - authorization_error
                          - validation_error
                          - not_found
                          - rate_limited
                          - server_error
                          - not_implemented
                        description: The category of error that occurred
                      message:
                        type: string
                        description: Human-readable error message
                      docs_url:
                        type: string
                        format: uri
                        description: Link to relevant documentation
                      request_id:
                        type: string
                        description: Unique request identifier for debugging
                    required:
                      - type
                      - message
                    description: Error details
                required:
                  - error
                description: Standard error response format
              example:
                error:
                  type: server_error
                  message: An unexpected error occurred
      security:
        - adminApiKey: []
components:
  securitySchemes:
    adminApiKey:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Admin API key must be prefixed with "Key ", e.g. Authorization: Key
        YOUR_ADMIN_API_KEY

````