Organization

Organization FOCUS Report

Returns a FOCUS compliant billing report as a CSV download, spanning every team in your organization. Each invoiced billing customer is reported as a BillingAccount. Under shared (pooled) billing — one billing customer covering multiple teams — each row is additionally attributed to the calling team via the SubAccountId / SubAccountName columns. SubAccountId is that team's own billing customer ID, so both account columns share one identifier namespace.

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

Must be called with an admin API key on the organization's root team.

Supports two data sources:

  • estimate: Real-time usage estimates for a date range. Under pooled billing every row is attributed to the calling team.
  • invoice: Finalized invoice data for a billing month. Under pooled billing, per-team SubAccount attribution is available on endpoint (Model API) lines that carry a caller; app and compute lines carry no caller and have no SubAccount.

Use team_username to restrict the report to a single team. Under shared (pooled) billing this is rejected for source=invoice — the invoice is issued to one billing customer shared across teams and cannot be split per team; use source=estimate for per-team figures.

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.

get/organization/focus

Query parameters

source'invoice' | 'estimate' | 'tagged-estimate' required

Report source. 'invoice' returns finalized invoice data for a billing month. 'estimate' returns real-time usage estimates for a date range. 'tagged-estimate' returns the same date range from the tagged usage aggregate, populating the Tags column; it requires tagged reporting to be enabled for the organization and at least one activated tag key, and its figures can differ from 'estimate' — the aggregate deduplicates by request, covers endpoint requests only, and refreshes on its own schedule rather than continuously.

Example:estimate

Report source. 'invoice' returns finalized invoice data for a billing month. 'estimate' returns real-time usage estimates for a date range. 'tagged-estimate' returns the same date range from the tagged usage aggregate, populating the Tags column; it requires tagged reporting to be enabled for the organization and at least one activated tag key, and its figures can differ from 'estimate' — the aggregate deduplicates by request, covers endpoint requests only, and refreshes on its own schedule rather than continuously.

billing_monthstring

Invoice billing month (YYYY-MM). The month the invoice was issued (e.g. '2025-02' for January charges). Used with source=invoice. Defaults to most recent available billing month.

Example:2025-02

Invoice billing month (YYYY-MM). The month the invoice was issued (e.g. '2025-02' for January charges). Used with source=invoice. Defaults to most recent available billing month.

charge_monthstring

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

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.

team_usernamestring

Restrict the report to a single team (workspace nickname) in the organization. Omit to report across all teams.

Example:acme-ml-team

Restrict the report to a single team (workspace nickname) in the organization. Omit to report across all teams.

string date-time
OR
string

Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.

string date-time
OR
string

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.

timezonestring

Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.

Example:UTC

Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.

timeframe'minute' | 'hour' | 'day' | 'week' | 'month'

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

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).

bound_to_timeframe'true' | 'false'

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

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.

Response

FOCUS compliant CSV report

Changes

Changed in 1 of the 2 revisions of this API.1

    • added the new enum value tagged-estimate to the query request parameter source

      request-parameter-enum-value-added