# Organization API (/en/docs/api/native/organization)



## Base URL [#base-url]

<ApiBaseDomain prefix="/organization/v1" />

## Get started [#get-started]

<QuickstartTabs snippets="{&#x22;curl&#x22;:&#x22;curl \&#x22;https://api-origin.invalid/organization/v1/costs?starting_at=2026-09-26T00:00:00Z&ending_at=2026-09-27T00:00:00Z&bucket_width=1d&group_by=ServiceName\&#x22; \\\n  -H \&#x22;Authorization: Bearer $PRAXIS_API_KEY\&#x22;&#x22;,&#x22;python&#x22;:&#x22;import os\n\nimport requests\n\nopts = dict(\n    base_url=\&#x22;https://api-origin.invalid/organization/v1\&#x22;,\n    api_key=os.environ[\&#x22;PRAXIS_API_KEY\&#x22;],\n)\n\n# /organization 是我们自己的组织用量形状，直接发 HTTP 请求（Bearer 认证）\nresp = requests.get(\n    f\&#x22;{opts['base_url']}/costs?starting_at=2026-09-26T00:00:00Z&ending_at=2026-09-27T00:00:00Z&bucket_width=1d&group_by=ServiceName\&#x22;,\n    headers={\&#x22;Authorization\&#x22;: f\&#x22;Bearer {opts['api_key']}\&#x22;},\n)\nprint(resp.status_code, resp.json())&#x22;,&#x22;typescript&#x22;:&#x22;\n\nconst opts = {\n  baseURL: \&#x22;https://api-origin.invalid/organization/v1\&#x22;,\n  apiKey: process.env.PRAXIS_API_KEY,\n};\n\n// /organization 是我们自己的组织用量形状，直接发 HTTP 请求（Bearer 认证）\nconst resp = await fetch(`${opts.baseURL}/costs?starting_at=2026-09-26T00:00:00Z&ending_at=2026-09-27T00:00:00Z&bucket_width=1d&group_by=ServiceName`, {\n  headers: { Authorization: `Bearer ${opts.apiKey}` },\n});\nconsole.log(resp.status, await resp.json());&#x22;}" />

## Facts and limits [#facts-and-limits]

| Fact                           | Detail                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| The organization is the key    | The caller's API key resolves to exactly one organization; no organization id appears in any path, and any valid key of the organization can read this domain                                                                                                                                                                                                                           |
| Actual charges only            | What the organization was actually charged, in its settlement currency (CNY or USD); promotional balance is taken before cash and is included                                                                                                                                                                                                                                           |
| Column names follow FOCUS 1.3  | BilledCost, ServiceName, ConsumedQuantity and the rest match the [FOCUS 1.3 specification](https://focus.finops.org/) verbatim                                                                                                                                                                                                                                                          |
| Everything is UTC              | Window bounds and buckets are UTC ISO 8601; buckets align to the hour or the UTC day                                                                                                                                                                                                                                                                                                    |
| Windows cap at 93 days         | [Costs](/en/docs/api/native/organization/listOrganizationCosts), [usage](/en/docs/api/native/organization/listOrganizationUsage) and [events](/en/docs/api/native/organization/listOrganizationEvents) accept at most 93 days per query; for longer ranges use the [charges export](/en/docs/api/native/organization/exportOrganizationCharges), which paginates day by day server-side |
| Pagination is an opaque cursor | Lists carry `has_more` and `next_page`; pass `next_page` back as `page` unchanged                                                                                                                                                                                                                                                                                                       |

Amounts are decimal strings (e.g. `"0.001234"`) in the currency named by `BillingCurrency` on the same row (CNY or USD) — don't sum them as floats, and never add amounts of different currencies; reconcile with exact decimal arithmetic.

Only usage billed in USD from the funding account is counted here; Credits balances are not part of this domain. See [Authentication](/en/docs/api/authentication) for how keys work.

## Endpoints [#endpoints]

| Method | Path                                                                     | Description       | Support     |
| ------ | ------------------------------------------------------------------------ | ----------------- | ----------- |
| GET    | [`/v1/costs`](/docs/api/native/organization/listOrganizationCosts)       | List costs        | ● Supported |
| GET    | [`/v1/usage`](/docs/api/native/organization/listOrganizationUsage)       | List usage        | ● Supported |
| GET    | [`/v1/events`](/docs/api/native/organization/listOrganizationEvents)     | List usage events | ● Supported |
| GET    | [`/v1/events/{id}`](/docs/api/native/organization/getOrganizationEvent)  | Get a usage event | ● Supported |
| GET    | [`/v1/charges`](/docs/api/native/organization/exportOrganizationCharges) | Export charges    | ● Supported |

## Differences from FOCUS 1.3 [#differences-from-focus-13]

* The envelope follows OpenAI's organization usage/costs, the bucketing and estimated marker follow AWS GetCostAndUsage, column names follow FOCUS 1.3, and the export follows Vercel's charges JSONL. Raw facts only: shares, trends and top-N views are not in this domain — compute them on your side.

For authoritative parameters and fields, see the spec published at [`/meta/v1/openapi.yaml`](/en/docs/api/native/meta/healthCheck) and the [FOCUS 1.3 specification](https://focus.finops.org/).

Errors follow the problem+json format, see [errors](/docs/api/errors); quotas and response headers are covered in [rate limits](/docs/api/rate-limits).
