Skip to content

Reporting & exports

Use this guide to build a governed dashboard view, drill from an aggregate to its evidence, schedule delivery, or generate the 64-column FOCUS v1.2 chargeback export. Every result retains its metric definition, time basis, method, confidence, evidence, freshness, degradation state, and export eligibility.

Dashboards

Dashboards are composed from a governed metric catalog: every metric has a single canonical definition, unit, method label, and confidence semantics. They render on Overview and on the capability pages of the six app domains. A report saves the filters, sort, and columns from one of those pages so the delivered result matches the dashboard view.

Because metrics are computed once from authoritative events and reused everywhere, the numbers reconcile:

One definition, one number

Two tiles showing “total AI spend” for the same scope and period reconcile to the same figure. A metric never has two divergent definitions. Each tile names its metric, its time basis, its method (estimated or reconciled), and its confidence band, so you always know exactly what you are reading.

Filter and slice every analytic surface by time range and basis (event time, current state, or comparative view), team, model, provider, output state, confidence band, pathway category, capture-feasibility class, anomaly category, and degradation state. Save a filter-plus-sort-plus-column configuration as a named, reusable saved view, set it as your default, and share or publish it to your team.

Drilldown that keeps its provenance

Any aggregate drills down to its constituents and ultimately to the individual attribution record and its evidence drawer, and the interpretation metadata travels with you at every level:

  • stage origin, output state, confidence (coper) and confidence band
  • evidence basis, model version, degradation state, freshness
  • export eligibility

Drilling from an organization total -> team -> service -> individual invocation never drops this metadata. The leaf you land on shows the same decision record that the dispute and override surfaces use, so what you report and what you can defend are the same thing.

Scheduled reports

Define a report once and have Venturi deliver it on your cadence. Scheduled reports follow a managed lifecycle:

Text Only
defined -> scheduled -> (running -> delivered)* -> paused | archived
  • Reports fire on your business-calendar cadence and record every run.
  • A transient delivery failure retries with backoff before alerting; the schedule is never silently dropped.
  • Pausing halts future runs without deleting history; archiving retires a report while preserving its record.

Reports can target any of the 19 anomaly categories and the budget-threshold events (75% / 100% / 150%), so FinOps receives a periodic digest of anomalies and breaches with deep links to triage. A report’s rows always match the live Governance view. See Budgets & alerts for the alerting side of the same data.

The 19 anomaly categories

Venturi assigns each detected anomaly a single category from this closed set. The same set drives the anomaly category filter on every analytic surface.

Categories 1 to 15 use statistical and structural detection. Categories 16 to 19 use deterministic integrity rules.

Detection path Categories
Statistical / structural Orphan cost; orphan telemetry; shared key; routing mismatch; timestamp skew; key-rotation overlap; provider classification mismatch; IAM-only identity; gateway bypass; token-count discrepancy; self-hosted GPU allocation; cross-cloud attribution; credit-based billing; namespace-team mismatch; identity churn
Integrity rules Missing audit log; shadow IT; agent chain; uncataloged model

Dashboards and tiles also export on demand to PDF, PNG, or CSV, and an exported snapshot always stamps its generation time, time basis, and estimated / reconciled labels, so a screenshot is never mistaken for live truth.

The FOCUS export

The chargeback export conforms to FOCUS v1.2 (the FinOps Open Cost and Usage Specification), so it lands directly in the FinOps tooling your finance team already runs.

Property Value
Columns 64: the 57 FOCUS v1.2 base columns plus 7 Venturi extension columns.
Venturi extensions x_OwnershipState, x_CaptureFeasibility, x_TimeBasis, x_CarbonGrams, x_EnergyWh, x_ServedModel, and x_AttributionConfidence.
Required cost fields BilledCost and EffectiveCost are always populated.
Cost basis Computed on the model actually served, never the requested model, and never a list price without measured tokens.
Rows included Export-eligible rows only: chargeback-ready (coper >= 0.80) results with degradation_state none, the attributions accurate enough to bill on. A chargeback file never contains a sub-floor or degraded row.
Energy & carbon Per-row energy and carbon for cataloged models; null, never zero, for models outside the catalog.

Creating the export requires the exports:write scope; polling the job and downloading the file require exports:read. Authenticate with a short-lived access token (valid for 60 minutes or less) that carries those scopes, obtained through the OAuth2 client-credentials flow. To use an API key instead, send it in the X-API-Key header. An API key is long-lived until it expires or you rotate or revoke it, so issue it with only those two scopes, set an expiry, and rotate it under Settings / Admin / Credentials. Replace <your-venturi-instance> with api.venturi.systems on the SaaS tier, where the shared hostname resolves your tenant from the credential and still applies every tenant and residency boundary; self-hosted deployments use their own instance host.

Bash
curl -X POST "https://<your-venturi-instance>/v1/exports/focus" \
  -H "Authorization: Bearer $VENTURI_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
        "format": "focus",
        "period": { "from": "2026-05-01", "to": "2026-05-31" },
        "group_by": ["owner", "provider"]
      }'

The request returns a job handle. Poll it and download the file as described in Creating exports.

The chargeback file contains export-eligible rows only. To review the rows it leaves out for falling below the 0.80 floor, add "include_provisional": true to the request body. The job’s result is then a ZIP archive holding the unchanged chargeback file and a separate provisional review file of the sub-floor rows, each row carrying its coper in x_AttributionConfidence. The provisional review file is never a chargeback or billing basis.

Define the FOCUS export as a scheduled report to have a fresh chargeback file delivered every billing period on your business-calendar cadence, with run history and delivery retry handled for you.

Independent reconciliation

The FOCUS export lets your auditor reconcile the chargeback figure to your cloud bill independently. Each row reconciles to its billing period, carries its ownership state and confidence, and links to the evidence that produced it. No export ever contains prompt or completion content, and currency display always round-trips losslessly to the base currency that reconciliation runs in.

FOCUS version

The chargeback export is pinned to FOCUS v1.2, the export contract validated end to end across Venturi’s product, pricing, and audit surfaces. Each export records its schema version in its manifest.

Tenant data export

Beyond chargeback, your tenant’s data is exportable for portability and data-subject rights, and a tenant export reconciles to its own manifest: what you asked for is exactly what you receive, with nothing out of scope and no content captured. See Trust & security for data handling and rights.

Give feedback on this page

Sign in to send feedback. Opens in a new tab.

Copy page details
Docs feedback: Reporting & exports
Page: https://docs.venturi.systems/capabilities/reporting-and-exports/