Billing & usage
Spend and intelligence
Understand where usage goes, drill into individual calls, and run read-only reports and see their final credit charge.
Spend is available to workspace admins and platform admins. The Intelligence tab is internal to Experiential and visible only to platform admins. Both tabs share the same frame; returning to a loaded tab preserves your results, table position and drafts. Spend first reuses a valid completed report for your exact dates and filters, showing its real update time. Refresh keeps that report visible while preparing a new snapshot. Evals, the model comparison page, is internal to Experiential and visible only to platform admins.
One Spend figure, an honest breakdown
Spend includes credits charged, the estimated list value of bring-your-own-key usage, and free promotional usage at list price. Hover or focus a figure for its components. BYOK estimates and free list value are not debits from your credit balance.
Amounts are kept in integer nano-dollars: 1,000,000,000 equals one US dollar. Report APIs carry amounts as decimal strings and CSV dollar columns retain nine decimal places. Cached input is part of input tokens; reasoning is part of output tokens, not extra volume.
Find the right slice
Choose preset or custom dates and your timezone in the date dropdown. Today starts hourly; choose Hourly or Daily beside the date options for windows up to seven days. Views → Workspace shows one summary; Member or another view splits usage into contributors without changing your filters. Filters (n), beside the date and Views controls, reveals existing pills below and immediately opens the filter picker. Select a dimension and its values, starting with All; editing a pill reopens the same picker and removing it restores those values without changing the view. Requests and Provider attempts remain a separate counting choice inside the filter menu. Multiple values within one filter mean OR; separate filters mean AND.
API key ownership is not proof of the human behind every request. End-user labels are supplied by the caller. Missing attribution is kept visible rather than guessed. Click a group to narrow the report, or choose View Activity to inspect the same exact filters and dates.
Non-completed counts recorded outcomes other than completed: failed, cancelled, incomplete, expired before dispatch, and unknown after interruption. Rejected requests are the failed or expired subset with zero provider attempts; do not add them to Non-completed. Non-rejected means only that this rejection condition did not apply, not that the call succeeded or reached a provider. Choose Views → Outcome to separate statuses, Error class for recorded causes, and View activity for individual calls.
Outcome and charge are independent. A failed or cancelled call can have a settled charge; a completed call can charge zero credits. Hover or focus a Spend figure; Paid shows the charged amount. Aggregate amounts do not reveal how many individual requests charged zero. Pending holds are separate from finalized Spend; see Credits for unsettled reservations. A pending reporting projection is a freshness gap, not a pending charge.
Export breakdown CSV contains one aggregate row per selected group, not one row per request or session. It includes every group in the filtered snapshot, not just the visible page. The export button explains the grouping, request/attempt basis, snapshot cutoff and money basis before download. Export supports up to 10,000 groups. Where large-report preparation is enabled, a new query can load in the background before publishing exact totals, chart, table and CSV from the same frozen result. A matching completed result is reused on later visits; technical progress is available in details rather than replacing the dashboard. Preparation is free and makes no model call. It never shortens your dates or shows a partial total as complete. Prepared results last 24 hours; Refresh starts a new snapshot. Activity and filter discovery still have separate work limits. Grouped by Workspace, the button reads Export breakdown CSV: the chart and table show one aggregate summary, but the export still returns the full breakdown groups for your currently selected filters, not a single workspace row.
Dimensions and searchable filters
A dimension is a way to split the same usage: model, API key, recorded member/key owner, end-user label, provider, funding, API surface, outcome, error class, prompt configuration, or usage source. Search the dimension menu, then search the observed values by name or ID. API keys and members retain their stable IDs underneath their display names.
New filters include calls without the selected label by default. They appear as a No API key, No member, or No tag value option. Remove that option to exclude them, or select it alone. Clicking a specific group is an exact drill and does not add unlabeled calls. The trail above the report shows your drill path and lets you return to an earlier slice.
Only one report menu opens at a time. Click outside or press Escape to dismiss it. The breakdown scrolls under its header and loads more groups as you scroll; Load more also works by keyboard. Table sorting, Activity and CSV retain the same snapshot.
Tag requests through the API
Tags label workloads that share an API key, such as team=search or run=eval-September. The API workflow creates tags from the labels on your requests. You do not need to create or register them in the Spend dashboard first.
Send tags on HTTP POST calls to /v1/chat/completions, /v1/responses or /v1/messages. The gateway collects the labels for Spend and strips the header before forwarding to a provider. Batch tags and WebSocket tags are not supported; a tag header on an unsupported route is refused.
- Send
X-Explabs-Tagson each request you want to label. Its value is a JSON object of string keys and values. Reuse a pair to group calls together; send a new pair to create a new tag automatically. - After those calls settle and usage updates, their tags appear in Spend for the selected dates. Calls without the header stay untagged; tags are never inferred from prompt text.
- Choose Views → Tag → team to compare teams, or Filters → Tag → team → search and Apply to see only the search team. Multiple values for one key mean OR; different tag keys combine with AND.
X-Explabs-Tags: {"team":"search","run":"eval-September"}
With the Python SDK, add extra_headers to your existing Chat Completions, Responses or Messages call. For example, with an already configured OpenAI client:
import jsontags = {"team": "search", "run": "eval-September"}response = client.responses.create(model="gpt-5.6-luna",input="Summarize this evaluation result.",max_output_tokens=256,extra_headers={"X-Explabs-Tags": json.dumps(tags)},)
Create tag in Spend is optional. It only saves a suggested key/value pair and a copyable header for future use. A saved definition does not tag a request, change historical usage or enable collection. You still send the header on each request.
Use at most 16 pairs in an 8 KiB header. Keys start with an ASCII letter and contain up to 64 letters, digits, underscores, dots or hyphens. Values contain 1 to 256 Unicode characters and match exactly, including case. The explabs. prefix is reserved. Tags grant no permissions or credits and do not verify identity. Never include secrets, prompts or personal information.
Read the financial dashboard
The Spend tab leads with usage value, prior-period change, average daily spend and request count. The selected dimension drives the stacked graph, matching colored leaders and breakdown. Model shows top models; Prompt configuration shows shared configurations and cached input; Outcome separates completed, failed, cancelled and other recorded statuses, while Error class groups recorded causes. Funding adds the paid, BYOK and free component view.
Period change compares the observed interval to an equally long interval immediately before it, clipped at the report snapshot. Hover for the actual dates. All time and incomplete or unavailable history have no comparison. Daily average uses 24 elapsed hours and is not a forecast.
Filters and actions share one row: Refresh, View Activity, Data Quality when there are issues, and Export breakdown CSV on the right. Hover or focus Refresh for the displayed snapshot's recency and exact Data through time. Only Change shows a loading skeleton while its previous period is pending; current figures do not wait for it. An amber shield appears only when data has an issue; hover, focus or tap it for details. Prompt-configuration, non-completed-call and key panels appear only in relevant dimension views, not all at once. Refresh preserves filters while advancing the shared snapshot.
Admin telemetry, Overview and Spend share the same chart and ranked-list components. The selected dimension’s entities retain their colors across narrowing, and chart, legend and leaders agree. Click a chart column to pin its popup; click elsewhere or press Escape to close it. Hover, focus or tap a row to open Paid, Bring your own key and Free in a separate secondary popup, without changing the pinned popup’s size or layout. Legend and table actions still drill further; Other is the exact remainder, not one selectable value. Notes are behind the eye beside a breakdown title. Displayed amounts use two decimals; exact amounts remain in CSV and the API. Table shells, sorting controls and spacing are shared too, while request-inspection rows retain their domain-specific fields. Daily and monthly buckets follow your calendar; hourly UTC buckets have timezone-aware labels that distinguish repeated local hours.
Prompt configuration groups share a SHA-256 hash of system/developer message content and tool declarations, displayed as its first 12 characters. This is not a full-payload hash, a request ID or a session ID: user messages and later conversation turns can differ within the same group. Responses continuations reflect the configuration sent on that call, not expanded history. Use View requests & prompts to inspect the same filtered calls, then expand a captured prompt. Digests are identifiers, not text. Content is available only where storage was enabled and the retention window permits it. Cache read % means cached input divided by input tokens, not a request hit rate or estimated savings.
Coverage and freshness
Spend reports settlement-time usage. The update time belongs to the displayed snapshot, not the time you opened the page. A live result older than 15 minutes is marked as an older snapshot in Refresh's hover and focus details; Refresh requests current usage without hiding your previous complete result. Historical projection can take time; incomplete coverage and unknown provider usage are labeled. Accepted failures before provider dispatch count as requests. Protocol rejections before admission are currently outside this projection.
Tag grouping reads labels captured from supported HTTP requests. Accepted request tags are immutable attribution: a later definition or retry cannot rewrite them, and older calls without tags remain untagged. Tags are never inferred from other application headers or prompt text.
Understand your usage · uses credits
Intelligence is Pro-only and read-only. Ask a question about cache usage, errors, or spend contributors, or select Run a report. Your first visit offers a report invitation; dismissing it is remembered for you in this workspace. It sends your question plus content-free aggregate evidence to an analysis model, never stored prompts or completions.
Reports use credits. There is no maximum to set before starting; the final charge appears in credits once the report settles. Unused reserved availability is released when the run settles.
Intelligence puts one report document on the left and independent chat on the right, inside the same padded frame as Spend. The panes scroll independently while the composer stays at the bottom. Spend filters do not apply here; new chats start from their own 30-day usage window. Generating or opening a report never adds a chat message, attaches a report reference or changes your draft. Follow-ups continue completed questions, not reports. Up to 12 genuine saved question turns are restored, with missing history labeled rather than invented.
Investigated reports check errors, cache reuse, retries and spend, then show up to four supported changes with their evidence. A fix names the affected target and exact request or configuration change; copyable examples are text, never automatically executed. The model cannot substitute “look into this” for a fix. Missing cache directives, token eligibility or client retry settings remain explicit evidence gaps, not invented prescriptions or savings.
While a report runs, live updates show completed checks and verified facts. Reconnecting resumes those updates without starting another paid operation. Final fixes appear after evidence validation; partial checks on failed or cancelled work are not a completed report.
Choose any completed, failed, cancelled or active report from Previous reports. Each option shows its date, status and settled charge, or pending while unsettled. There is no separate failed-attempt section. Chat history remains independent. Report errors stay by Run a report; question errors stay by chat. History, recovery and cancellation remain available when new work cannot start.
Saved analyses stay inside your organization and include evidence links and limitations. Model alternatives are candidates to evaluate, not automatic configuration changes or guarantees of equal quality. Opening the page never starts paid work.
The same reporting through the API
The Spend API reference documents the same reporting stores the dashboard consumes at https://api-pr-134.preview.experientiallabs.ai/api/orgs/<org_id>/spend. Every canonical Spend endpoint requires a provisioning key for machine access: an inference key receives 403, another organization receives 404, and Personal usage requires a signed-in human. This does not widen the dashboard's existing admin gate or change the Cost API's separately documented authority.
Start with POST /spend/analytics and {query, refresh:false}, without as_of or snapshot_id. Retain a loading response's id and poll GET /spend/analytics/<id>, never reposting an unknown outcome. A ready fast-path response may have a null id. Reuse report.query, including its as_of fence and snapshot_id, for tables, Views, charts, facets, Activity and CSV; coverage.projected_through is the separate Data through cutoff. The reference includes endpoint wrappers, optional previous-period comparison, bounded polling and pagination examples, and explicit prepared-report controls. An expired snapshot requires explicit Refresh, never silently different totals.
Activity accepts include_features: true to include Intelligence charges separately from API requests. CSV uses one bounded grouped read, preserves exact amounts and includes the query. The existing columns keep their names and order, including errors (the Non-completed measure); appended metadata names the aggregate row type, grouping, data cutoff, count basis, outcome definitions, prompt hash meaning and money basis. Captured prompt bodies remain a separate member-authorized API, not available to ordinary API keys. The machine-readable contract and examples live at llms.txt.
Labels and privacy
Never put secrets, prompt content, email addresses, or personal information in reporting labels or tags. Labels are metadata. Privacy erasure removes caller attribution while preserving anonymous financial amounts.
See the Platform privacy policy and Telemetry for data controls and usage APIs.