> For the complete documentation index, see [llms.txt](https://docs.revenium.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.revenium.io/integrations/provider-integrations.md).

# Provider Integrations

While the Revenium SDK meters your live application traffic with deep attribution, connecting your underlying AI provider accounts (OpenAI, Anthropic, AWS Bedrock, Google Vertex AI, Azure, fal.ai, Runway, OpenRouter, LiteLLM, Cursor, GitHub Copilot) unlocks the other half of the FinOps picture: provider-native cost data synced directly from each provider's billing system.

> <i class="fa-square-info">:square-info:</i> **Note on Provider Permissions:** Different AI platforms have different permission models. Always check the specific instructions on the **Link Provider** screen, and use the credential type called out below for each provider. The wrong key type will authenticate but return zero billing data.

When you add your provider API Keys, Revenium actively syncs with the provider to pull granular usage records and workspace data. This unlocks four primary dashboard views:

<table><thead><tr><th width="204.390625">Insight</th><th>What It Tells You</th></tr></thead><tbody><tr><td><strong>Workspaces</strong></td><td>Invoiced and Metered spend side by side, with a named coverage state that helps you identify under-metered activity.</td></tr><tr><td><strong>API Keys</strong></td><td>A breakdown of cost, usage, and tokens by individual API key to help you spot rogue or uninstrumented scripts.</td></tr><tr><td><strong>Models</strong></td><td>The true cost per 1M tokens (or provider-specific unit) across all your active AI models so you can compare performance vs. price.</td></tr><tr><td><strong>Management</strong></td><td>Workspace naming and organization controls that make provider-generated identifiers easier for teams to understand.</td></tr></tbody></table>

***

## Supported Providers

Each connected provider syncs cost, usage, and workspace data using its own native billing API.

* **OpenAI** – GPT, DALL-E, embeddings, and all OpenAI API services. Requires an **Organization Admin API key** — project-scoped keys cannot read billing or usage data.
* **Anthropic** – Claude models and all Anthropic API services. Accepts either a Claude Console **admin key** (`sk-ant-admin...`) or an Enterprise **Analytics API key** (`sk-ant-api01-...`) carrying the `read:analytics` scope; Revenium detects which one you supplied. Plain inference or service keys are rejected when you connect them — they cannot read organization usage. Note: request counts may show as `N/A` because Anthropic's billing API does not expose them.
* **AWS Bedrock** – Synced via the AWS Cost Explorer API. Requires **IAM user credentials** (Access Key ID + Secret), not Bedrock API keys. Bedrock API keys (`ABSK...`) can invoke models but cannot read billing. **Provider credits applied** (AWS Activate, enterprise agreements) are captured per-day per-model and visible on the dashboard.
* **Google Vertex AI** – Synced via BigQuery Billing Export. Cost data has a 24–48 hour delay — this is BigQuery export latency, not a sync issue. **Provider credits applied** (GCP startup credits, enterprise agreements) are captured per-day per-model and visible on the dashboard.
* **fal.ai** – 600+ image, video, audio, and LLM endpoints. Requires an **ADMIN** API key — regular user keys cannot return cost or usage breakdowns.
* **Runway** – Video and image generation (Gen-4, Gen-4 Turbo). Credits are converted to dollars at 1 credit = $0.01.
* **OpenRouter** – Multi-provider gateway with 200+ models. Standard API key required; an optional Provisioning Key (Team/Enterprise plans) unlocks per-user and per-request usage breakdowns.
* **Azure** – Synced via the Azure Cost Management API using a Service Principal. Requires an **App Registration** with Client ID, Client Secret, Tenant ID, and Subscription ID. The Service Principal must have the **Cost Management Reader** role at subscription scope. Cost data is delayed 8–24 hours for EA/MCA agreements and up to 72 hours for Pay-As-You-Go subscriptions. Metered spend purchased through Azure Marketplace is captured in the same sync. Pricing is whatever your enrollment is billed — for an Enterprise Agreement that is your negotiated rate with commitment discounts applied, in the enrollment's billing currency; Revenium displays Azure amounts as reported, without currency conversion.
* **LiteLLM** – Self-hosted proxy with unified access to 100+ LLM providers. Revenium connects to your proxy's API; LiteLLM itself is not hosted by Revenium.
* **Cursor** – Coding-assistant usage synced automatically by Revenium, with no CLI to install. Requires a Cursor **team** API key — a personal user key will not work. Usage is synced every 5 minutes.
* **GitHub Copilot** – Organization-wide coding-assistant usage synced automatically by Revenium, with no CLI to install. Requires a GitHub personal access token owned by an **organization owner**, plus your organization slug. A token from a non-owner member authenticates but cannot read organization Copilot usage. Usage is refreshed once daily.

***

## Provider Credits (AWS Bedrock + Google Vertex AI)

Customers on AWS or GCP often receive provider credits — AWS Activate, GCP startup credits, enterprise agreements — that reduce their real AI spend. Revenium captures these credits and displays them alongside list-price costs so margin reporting reflects what you're actually paying, not just the sticker price.

### What's Captured

For both AWS Bedrock and Google Vertex AI, Revenium ingests applied credits from each provider's billing surface:

* **AWS Bedrock** – credits retrieved from AWS Cost Explorer alongside Bedrock billing cost data.
* **Google Vertex AI** – credits retrieved from the BigQuery billing export (sums GCP credit types — promotional, committed-usage discounts, and others).

Credits are stored at the same grain as cost: per organization, per workspace, per API key, per model, per day.

### Where To Find It

The provider cost dashboard exposes credits applied per provider so you can see the gap between list-price spend and real spend in one view. Net cost = total cost − credits applied.

{% hint style="info" %}
**Sign convention:** `creditsApplied` is stored as a positive number representing the credit amount. Net cost = `totalCost − creditsApplied`.
{% endhint %}

{% hint style="info" %}
**AWS service-level credits:** Some AWS credits arrive scoped to the Bedrock service rather than to a specific model. These are reported under the model bucket `bedrock-general` so you can still see the spend impact even when AWS does not attribute them to a particular foundation model.
{% endhint %}

### Why It Matters

* **Margin accuracy** — list-price reporting overstates real AI cost when credits are in play.
* **Budget planning** — knowing how much of current spend is offset by credits helps forecast when credits run out.
* **Customer reporting** — net cost is the number that flows to invoicing and chargebacks.

### Out Of Scope

* Azure (billing integration available; Azure Cost Management reports costs before free or prepaid credits are applied, so credited spend shows at gross).
* Other cloud providers (only AWS Bedrock and Google Vertex AI have credit capture in this release).

***

## How Provider Sync Works

1. **Connect provider accounts** from **Connections → Providers** using the **Link Provider** button.
2. **Automatic sync** pulls workspaces, API keys, and usage data from provider billing systems on a regular schedule.
3. **Manual refresh** is available from the Provider Dashboard via the **Refresh Data** button — useful right after adding new keys, or when troubleshooting discrepancies. A manual refresh may take 30–60 seconds.
4. **Historical tracking** compares the current period against the previous period to surface trends and outliers.

***

## How to Link a Provider

1. Head to [Connections → Providers](https://app.revenium.ai/connections/providers) in the left sidebar and click **Link Provider**.
2. Select your AI platform, drop in your credentials, and confirm.

Revenium authenticates the credential and starts syncing historical data immediately.

### Credential Quick Reference

<table><thead><tr><th>Provider</th><th width="172">Format</th><th>Key Pattern</th><th>Where to Get</th></tr></thead><tbody><tr><td>OpenAI</td><td>API Key (read only)</td><td><code>sk-admin...</code><br>(Note: must be an <strong>admin key</strong>.)</td><td>Organization Settings / Admin keys (<a href="https://platform.openai.com/settings/organization/admin-keys">link</a>)</td></tr><tr><td>Anthropic</td><td>API Key</td><td><code>sk-ant-admin...</code> (Console <strong>admin key</strong>)<br>or <code>sk-ant-api01-...</code> (Enterprise <strong>Analytics API key</strong> with <code>read:analytics</code>)</td><td>Claude Console / Organization Settings / Admin keys (<a href="https://platform.claude.com/settings/admin-keys">link</a>)<br>or Enterprise organization settings / Analytics API key</td></tr><tr><td>AWS Bedrock</td><td>IAM Credentials</td><td>Access Key ID (<code>AKIA...</code>) + Secret + Region (<code>us-east-1</code>)</td><td>AWS Console → IAM → Users</td></tr><tr><td>Google Vertex AI</td><td>Service Account JSON</td><td><code>{"type":"service_account",...}</code></td><td>GCP Console → IAM → Service Accounts</td></tr><tr><td>fal.ai</td><td>API Key (ADMIN)</td><td><code>{uuid}:{hex}</code></td><td>fal.ai team/admin key settings</td></tr><tr><td>Runway</td><td>API Key</td><td><code>key_...</code></td><td>Runway workspace API key settings</td></tr><tr><td>OpenRouter</td><td>JSON</td><td><code>{"apiKey":"sk-or-v1-...", "provisioningKey":"..."}</code></td><td>OpenRouter key settings</td></tr><tr><td>Azure</td><td>Service Principal</td><td>Tenant ID + Client ID + Client Secret + Subscription ID</td><td>Microsoft Entra admin center → Entra ID → App registrations</td></tr><tr><td>LiteLLM</td><td>JSON</td><td><code>{"apiKey":"sk-...", "baseUrl":"https://..."}</code></td><td>Your LiteLLM proxy admin</td></tr><tr><td>Cursor</td><td>API Key (team)</td><td>Cursor team API key</td><td>Cursor team settings</td></tr><tr><td>GitHub Copilot</td><td>Personal Access Token + org slug</td><td><code>github_pat_...</code> (fine-grained) or <code>ghp_...</code> (classic), owned by an <strong>organization owner</strong></td><td>GitHub → Settings → Developer settings → Personal access tokens</td></tr></tbody></table>

***

## Provider-Specific Setup Notes

### OpenAI

Use an **Organization Admin API key**, not a project-scoped key. Once linked, Revenium syncs project/workspace, API key, usage, cost, model, token, and request data that the provider exposes.

### Anthropic

Revenium accepts two Anthropic credentials, and detects which one you supplied when you connect. Use whichever your organization can issue.

#### Console admin key (`sk-ant-admin...`)

Create an **admin key** from Claude Console → **Organization Settings** → **Admin keys**, then add it in Revenium.

This credential returns the fullest breakdown: workspaces, API keys, models, and token counts.

Plain inference or service keys scoped to a single workspace cannot read organization usage and are rejected.

#### Enterprise Analytics API key (`sk-ant-api01-...`)

**Enterprise prerequisites** — confirm all three before creating the key:

* **Public API access** and the **Analytics API** must both be enabled at the organization level. These are two independent gates, separate from key creation.
* Only the **parent organization primary owner** can create the key. Ordinary organization owners are limited to Compliance-scoped keys, which do not work against the Analytics API.
* Decide the scopes up front: **`read:analytics` is required**, and **`read:spend_limits`** lets Revenium determine your billing model. Without `read:spend_limits` the connection still works, but your plan type stays undetermined. Scopes are frozen at creation — a key missing a scope must be replaced, not edited.

Once those are in place, create the Analytics API key from your Enterprise organization settings and add it in Revenium.

This credential returns organization spend by model and by day. Claude Enterprise has no workspaces and no per-key attribution, so Revenium groups all of it under a single placeholder workspace named **Claude Enterprise** and a single placeholder API key — this matches Anthropic's own availability table for the Analytics API.

**Limitations:**

* Connecting backfills the last **90 days**; earlier usage is not retrieved.
* A seat-based Enterprise plan reports usage credits and overage rather than the full bill. Organizations whose plan does not report spend at all are refused at connect time with a message saying so.
* Only organizations billed in **USD** are supported. A non-USD organization connects successfully, but every sync is then refused and the dashboard shows a sync failure.
* Very large organizations can exceed Anthropic's per-day grouping limit. The spend that Anthropic does not itemize appears under the model name `__truncated__` — it is real spend with no model attribution, not a bug.
* **Claude Team** plans have no API and cannot be connected.
* Claude Code traffic routed through **Amazon Bedrock** is not returned here; connect the Bedrock provider to capture it.
* Request counts render as `N/A` because Anthropic does not expose the metric.

### AWS Bedrock

Bedrock requires IAM credentials with billing read access — not Bedrock model-invocation keys.

**First, enable AWS Cost Explorer.** Cost Explorer must be turned on once per AWS account, manually, in the console — there is no API for this: AWS Console → **Billing and Cost Management** → **Cost Explorer**; opening it for the first time enables it. Until it's enabled, the billing-read calls below fail even with correct credentials. After enabling, AWS takes up to \~24 hours to prepare the first data, so a newly connected Bedrock provider shows an empty dashboard until then — expected, not an error.

Then, in the AWS Console, create an IAM user with programmatic access (an access key), and attach the least-privilege policy below. It grants billing read only, with no model invocation:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReveniumBillingRead",
      "Effect": "Allow",
      "Action": [
        "ce:GetCostAndUsage",
        "sts:GetCallerIdentity"
      ],
      "Resource": "*"
    }
  ]
}
```

`ce:GetCostAndUsage` reads Bedrock spend from Cost Explorer; `sts:GetCallerIdentity` reads the account ID that identifies the workspace. Neither action can invoke a model. (Cost Explorer and `GetCallerIdentity` do not support resource-level scoping, so `Resource` is `*`.)

Enter the Access Key ID, Secret Access Key, and the Cost Explorer region — use `us-east-1`, which is Cost Explorer's service endpoint regardless of where your Bedrock workloads run — in Revenium. Revenium checks the credential against Cost Explorer when you connect, so an invalid key — or a Bedrock model-invocation key (`ABSK...`) — is caught right away rather than failing silently later.

{% hint style="info" %}
**Billing delay:** AWS Cost Explorer refreshes cost data at least once every 24 hours and reflects usage only up to the previous day. After you connect, Bedrock billing data can take up to \~24 hours to appear — an empty dashboard right after connect is expected, not a failure. The connection is validated and saved immediately; the cost data follows on AWS's refresh cycle. This is an AWS Cost Explorer pipeline characteristic, not a sync issue.
{% endhint %}

{% hint style="info" %}
**Bedrock agent workloads:** Agent-driven spend — for example Amazon Bedrock AgentCore — arrives through the same billing sync as your other Bedrock service costs. Where AWS reports it scoped to the Bedrock service rather than to a specific foundation model, it appears under the `bedrock-general` model bucket, and it follows the same up-to-24-hour Cost Explorer refresh cycle.
{% endhint %}

### Google Vertex AI

Vertex requires BigQuery Billing Export and a service-account JSON key.

Enable BigQuery Billing Export, create a service account that can read the export dataset and run BigQuery jobs, then paste the service-account JSON into Revenium. Billing export data usually has a 24-48 hour delay.

### fal.ai

Use an **ADMIN** API key, not a regular user key. Once linked, Revenium syncs per-endpoint, per-day cost and usage across image, video, audio, and LLM endpoints where the provider exposes that data.

### Runway

Use a workspace API key. Cost is tracked per model, with provider credit usage converted to USD for reporting.

### OpenRouter

Two key types are supported:

* **API Key** (required) — standard usage data and model access.
* **Provisioning Key** (optional, Team/Enterprise only) — unlocks per-user and per-request usage breakdowns.

Paste credentials as a JSON object: `{"apiKey":"sk-or-v1-...", "provisioningKey":"sk-or-v1-..."}`. Omit `provisioningKey` if you don't have Team/Enterprise access.

### Azure Cost Management Setup

Azure Cost Management integration uses a Service Principal to pull subscription-level cost data. Follow these steps:

1. **Create an App Registration** — In the **Microsoft Entra admin center** (entra.microsoft.com), or the Azure portal > **Entra ID** > **App registrations**, select **New registration**. Name it (e.g. "Revenium Cost Manager") and accept default settings.
2. **Generate a Client Secret** — Open your app registration, go to Certificates & secrets > New client secret. Azure caps client secret lifetime at 24 months and recommends an expiry under 12 months. Copy the **Value** field immediately — not the Secret ID. The Value is only shown once. Set a reminder to rotate the secret before it expires; the sync stops when the secret lapses.
3. **Assign Cost Management Reader role** — Go to Subscriptions > your subscription > Access control (IAM) > Add role assignment. Select **Cost Management Reader** at subscription scope and assign it to the app registration.
4. **Enter credentials in Revenium** — From the app registration Overview page, copy the Directory (Tenant) ID and Application (Client) ID. Copy the Subscription ID from the Subscriptions page. Enter all four values in the Revenium provider form.

{% hint style="warning" %}
**Enterprise Agreement (EA) customers: enable "AO view charges" first**

If your subscription sits under an Enterprise Agreement, the Cost Management Reader role alone is not enough. An **Enterprise Administrator** must also turn on the enrollment policy **Account owners can view charges (AO view charges)**:

1. Azure portal > **Cost Management + Billing**
2. **Billing scopes** > select your billing account (the EA enrollment)
3. Under **Settings**, select **Policies**
4. Set **Account owners can view charges** to **On** (also set **Department admins can view charges** to On if you report at department scope)

Allow up to 30 minutes for the change to take effect.

If this step is missed, the connection fails with HTTP **401** and Azure error code `AccountCostDisabled`. That is a policy problem, not a credential problem — re-creating the client secret will not fix it. Indirect (partner-sold) EAs may instead see `IndirectCostDisabled`, which means your partner has not published pricing for the enrollment. Contact your partner.
{% endhint %}

You can also paste all four fields as a JSON object using the "Paste JSON instead" option:

```json
{
  "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "clientSecret": "your-client-secret-value",
  "subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

{% hint style="info" %}
**Billing delay:** Azure cost data is delayed by 8–24 hours for EA/MCA agreements and up to 72 hours for Pay-As-You-Go (PAYG) subscriptions. This is an Azure billing pipeline limitation, not a sync issue. Current-month figures are estimates until the invoice closes, and a brand-new subscription can take up to 48 hours before Cost Management returns anything at all. Azure serves the last 13 months of cost data, so Revenium cannot backfill Azure costs older than that.
{% endhint %}

{% hint style="warning" %}
**Sovereign clouds not supported:** Revenium connects to Azure commercial (`management.azure.com`). Azure Government and Azure China use separate API endpoints that Revenium does not currently target, so subscriptions in those clouds cannot be connected. Use a commercial Azure subscription.
{% endhint %}

**Multiple subscriptions and tenants.** Each Revenium Azure connection covers a single Subscription ID. To track several subscriptions, add one connection per subscription — you can reuse the same App Registration (Tenant ID, Client ID, Client Secret) as long as it has the Cost Management Reader role on each subscription. A service principal's role assignments cannot cross Microsoft Entra directories, so if your subscriptions span more than one Entra tenant, create one App Registration per tenant and assign it the Cost Management Reader role directly in that tenant. A new role assignment takes about 30 minutes to take effect; if you had to configure access across Entra directories to make the assignment, allow an hour.

**Marketplace and Claude.** Revenium captures Claude usage sold through Azure Marketplace in the same Cost Management sync, with no extra configuration. Other models sold through Marketplace — Mistral or Cohere offers, for example — are not yet captured. Claude on Azure — whether you subscribe through Azure Marketplace or the Microsoft Foundry portal — bills in **Claude Consumption Units (CCU)**: Azure reports it as one aggregate line with no per-model breakdown and no token counts, and Revenium shows it as a single `azure/claude` row. Pair it with Revenium's own AI telemetry for per-model and per-token attribution. One-time or fixed-fee Marketplace purchases are only reported by Azure at the EA billing-account scope and will not appear in a subscription-scoped connection. EA admins should also confirm that **Cost Management + Billing > Billing scopes > (your billing account) > Policies > Azure Marketplace** is set to **On**.

**Azure OpenAI, Foundry, and Provisioned Throughput.** Azure OpenAI usage does not appear under its own service name in Cost Management — Azure files it under the broader **Cognitive Services** service classification. Revenium accounts for this automatically. Standard deployments are metered per input and output token, but Cost Management returns cost only, so token columns read `n/a` for Azure. **Provisioned Throughput (PTU) deployments are billed per PTU per hour regardless of the number of tokens consumed**, so Azure cost for a PTU deployment will not track your token volume. Hours covered by a PTU reservation are billed as the reservation purchase at the EA billing-account scope, so they do not appear at all in a subscription-scoped connection — not as usage, and not as a $0 row.

**Troubleshooting the Azure connection**

When Azure refuses a cost query, Revenium shows Azure's own error code and message in the connection error and records it in the sync log under System Logs, so you do not need to re-run the query in the Azure portal. Find that code in the table below.

| Azure error                        | What it means                                                                    | Fix                                                                                                                        |
| ---------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `401` / `AccountCostDisabled`      | The EA "AO view charges" policy is off                                           | An Enterprise Administrator turns it on under Cost Management + Billing > Billing scopes > your billing account > Policies |
| `401` / `DepartmentCostDisabled`   | The EA "DA view charges" policy is off                                           | An Enterprise Administrator turns it on from the same Policies page                                                        |
| `IndirectCostDisabled`             | Indirect EA: your partner has not published pricing for the enrollment           | Contact your Microsoft partner                                                                                             |
| `SubscriptionNotFound`             | Wrong Subscription ID, or the subscription is under 48 hours old                 | Verify the ID; wait 48 hours for a brand-new subscription                                                                  |
| `InvalidAuthenticationTokenTenant` | The subscription moved to a different Entra directory                            | Create an App Registration in the subscription's current tenant                                                            |
| `AuthorizationFailed`              | Cost Management Reader is not assigned, or was assigned less than 30 minutes ago | Verify the role assignment on the subscription; wait 30 minutes                                                            |
| No data and no error               | Normal billing lag, or a subscription with no charges                            | Expect 8–24 hours for EA/MCA and up to 72 hours for PAYG                                                                   |

### LiteLLM

Revenium connects to your existing LiteLLM proxy — it does not host LiteLLM. Make sure your proxy has spend tracking and logging enabled, then provide the proxy's admin API key and base URL. Historical data depth depends on your proxy's retention.

This is a **scheduled sync**, not real-time: Revenium pulls spend and usage from the proxy's admin API on a recurring interval, so it informs reporting rather than live enforcement. What is captured follows what your LiteLLM version records — confirm coverage for the request formats you use with a test transaction after connecting.

For **real-time** metering of the same proxy, register the Revenium proxy callback instead — see [LiteLLM Proxy Setup](/integrations/litellm-proxy-setup.md). The provider integration reports what your provider **invoices**; the callback and client telemetry report what Revenium **meters**. Invoiced and Metered figures are held independently and shown side by side for reconciliation and coverage, so connecting the provider integration is always safe alongside real-time metering.

### Cursor

Cursor is connected once for the whole organization. Create a **team** API key in your Cursor team settings and add it under **Connections → Providers**. A personal user key authenticates but returns no team usage. Revenium then syncs Cursor usage every 5 minutes. See [Setup Cursor](/track-and-control-costs/analyze-ai-tooling-spend/setup-cursor.md).

### GitHub Copilot

Copilot is connected once for the whole organization. Create a GitHub personal access token owned by an **organization owner**, and add it together with your organization slug under **Connections → Providers**. A token created by a member who is not an owner authenticates but cannot read organization Copilot usage, so mapping returns nothing.

Use a fine-grained token with the organization permissions **Organization Copilot metrics** and **Administration** (both read-only), or a classic token with `admin:org` and `manage_billing:copilot`. Copilot Business or Enterprise must be active on the organization, and the **Copilot usage metrics** policy must be enabled under GitHub's **Settings → Copilot → Policies**. Revenium then refreshes Copilot usage once daily. See [Setup GitHub Copilot](/track-and-control-costs/analyze-ai-tooling-spend/setup-copilot.md).

***

## Viewing Your Data

Once a key is authenticated, open the **Provider Dashboard**. Data populates across four primary views:

* **Workspaces** — Invoiced and Metered spend for the selected period, with coverage guidance that helps you identify under-metered activity.
* **API Keys** — per-key cost, usage, tokens, and trend, with a key hint (e.g. `sk-ant-api03-Z4C...EQAA`) so you can spot uninstrumented or rogue scripts without exposing the key.
* **Models** — model efficiency: actual cost per 1M tokens (or per-credit, per-image equivalent) so you can compare model price-performance.
* **Management** — workspace naming and organization controls.

The **Management** view lets you rename provider workspaces. Provider-generated names like `proj_abc123xyz` are cryptic; renaming them to `Production API` or `Customer Support Bot` makes cost tracking intuitive across teams. Workspace history is retained — you can view name-change timestamps and revert to any previous name. You can also map workspaces from different providers to the same display name (e.g. an OpenAI project and an Anthropic workspace both renamed to `Customer Support`) to see combined costs in one row.

> **Note on Syncing:** If you have a large historical footprint, it may take a few moments for all data to appear. Click **View Sync Logs** on the Provider dashboard to verify that Revenium is actively processing your records.

***

## Reconcile Invoiced and Metered Spend

The **Workspaces** view compares two distinct totals:

* **Invoiced** — what each provider charged you, from their billing data. It arrives once a day and excludes today.
* **Metered** — usage Revenium recorded directly, valued at list API rates.

These totals answer different questions. Invoiced shows what the provider charged; Metered shows how much of that activity Revenium can associate with instrumented usage. Do not add the totals together. Use them as reconciliation points for the same selected period.

### Read the Reconciliation Summary

The summary presents Invoiced and Metered separately. It also highlights providers that are under-metered so you can identify where the metered view does not yet account for billed activity.

### Interpret Coverage Health

Coverage is shown as a named health state rather than an uncapped raw ratio. Read the state as the dashboard's assessment of the current Invoiced-versus-Metered relationship, then use the underlying totals to understand the size of the gap.

The health state avoids presenting an unstable raw ratio as precise coverage when the invoiced amount is very small.

### Resolve Empty and Partial-Data States

The Workspaces view distinguishes between several conditions instead of treating every empty result as the same problem:

* A required integration is missing.
* Data is temporarily unavailable.
* No spend exists for the selected view.
* No active provider rows are available.

Read the state shown before changing filters or connection settings so you respond to the condition the dashboard has identified.

***

## Getting Started

1. Open the **Provider Dashboard**.
2. Select **Workspaces**.
3. Set the provider and time range you want to review.
4. Compare Invoiced with Metered in the summary.
5. Read the named coverage-health state.
6. Review any under-metered providers or empty-state guidance.
7. Move to **API Keys**, **Models**, or **Management** when you need a narrower view.

***

## Filtering, Trends & Exports

Each tab supports:

* **Provider filter** — view all providers combined, or drill into a single provider.
* **Usage-type filter** — narrow the dashboard to the type of activity you want to analyze where this filter is available.
* **Time period** — preset ranges or custom date pickers, with current-vs-previous-period trend indicators (↑ red for cost increases, ↓ green for cost decreases).
* **Cost-range filter** — narrow to a specific spend bracket.
* **Search** — by workspace, key hint, or model name.
* **CSV export** — exports respect current filters and sort order.

Keep the same period while comparing Invoiced with Metered so both sides of the reconciliation refer to the same window.

The Models tab also surfaces a **Most Efficient Model** badge — the model with the lowest cost per 1M tokens (or per-unit equivalent for image/video/audio) — and an **Avg Tokens/Req** column for providers that report request counts.

***

## OpenAI Image Cost Tracking

For OpenAI, image generation (DALL-E) is tracked separately from text completions. Image costs appear in the Models tab (with per-image cost metrics by DALL-E version), in the Workspaces tab (rolled into workspace totals), and in API Key Analytics (so you can attribute image generation by key). Tracked metrics include cost per image, total image cost, image count, and resolution mix (standard vs HD).

***

## View Sync Logs

The Provider Dashboard's **View Sync Logs** button opens a per-provider sync history. Each entry shows:

* Sync timestamp.
* Provider success/failure status.
* Summary of workspaces, API keys, and usage data retrieved.
* Specific error messages on failed syncs.

### Common Sync Issues

| Issue                  | Likely Cause                                         | Resolution                                                                           |
| ---------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------ |
| No data synced         | Wrong key type or invalid credentials                | Re-authenticate via Manage AI Accounts; confirm the key type matches the table above |
| Partial data           | Provider rate limiting                               | Wait and retry; if the issue persists, review the sync log details                   |
| Stale data             | Sync not running                                     | Click **Refresh Data** or check the account's connection state                       |
| Missing provider       | Not connected                                        | Add it via Manage AI Accounts                                                        |
| Delayed Vertex AI data | BigQuery export is batch-processed                   | Expected 24–48h delay; nothing to fix                                                |
| Delayed Azure data     | Azure billing pipeline latency                       | Expected 8–24h delay (EA/MCA) or up to 72h (PAYG); nothing to fix                    |
| Delayed Bedrock data   | Cost Explorer refreshes at least once every 24 hours | Expected up-to-24h delay, including right after connecting; nothing to fix           |

***

## Common Scenarios

**Identifying a cost spike.** Open Workspaces, set the period to "Last 30 days", and review **Current vs Previous Period**. Click the high-growth workspace, then switch to API Key Analytics filtered by that workspace to find the specific keys driving the increase. Switch to Models to see whether the model mix changed.

**Tracking team API key usage.** Use Workspace Management to rename workspaces by team or project, then open API Key Analytics and search by team name. Identify unused keys (0 requests) for rotation or deactivation, and export per-key data for cost allocation.

**Monthly cost reporting.** Set a custom date range to last month, export Workspaces and Models data to CSV, and combine with your budget/alert data for a complete cost picture.

***

## Best Practices

* **Start with the Workspaces view.** It's the fastest way to understand overall spending patterns and surface the high-cost workspaces worth investigating first.
* **Rename workspaces early.** Provider-generated names are cryptic; assign meaningful names as soon as new workspaces appear so the rest of your team has a usable cost view from day one.
* **Check Models weekly.** Model price-performance shifts; the Models view surfaces cheaper alternatives without sacrificing quality.
* **Audit API keys monthly.** Spot rogue keys, idle keys, and keys whose cost has drifted from intent.
* **Combine with alerts.** Use [Set Budgets & Alerts](/track-and-control-costs/set-budgets-and-alerts.md) to get notified when spending crosses a threshold so the dashboard isn't the only thing watching.

***

## Related Pages

* [SDK Setup](/integrations/sdk-setup.md) — connect metered usage.
* [Set Budgets & Alerts](/track-and-control-costs/set-budgets-and-alerts.md) — receive notifications when spending crosses a threshold.

***

## Frequently Asked Questions

<details>

<summary>Why are Invoiced and Metered different?</summary>

Invoiced is synchronized from connected provider accounts. Metered comes from instrumented traffic. A difference indicates that the two sources do not currently cover the same activity.

</details>

<details>

<summary>Why does the dashboard show a health state instead of a raw percentage?</summary>

Named states keep an unstable raw ratio from being presented as precise coverage. Use the state with the Invoiced and Metered totals to interpret the result.

</details>

<details>

<summary>What should I do when the Workspaces view is empty?</summary>

Read the empty-state message first. The view distinguishes a missing integration, temporarily unavailable data, no spend, and no active provider rows so you can respond to the actual condition.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.revenium.io/integrations/provider-integrations.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
