Observability

Analytics

Query USDC spend and request counts by model, wallet, and team — up to 90 days of history.

Enterprise

Analytics

The analytics endpoints return aggregated spend and request counts for a rolling time window. Use them to build dashboards, detect anomalies, or allocate costs across teams.

All total_cost_usdc values are in USDC (e.g. 4.75 = $4.75 USDC).

Team stats

Returns spend and requests for a single team, broken down by model, by provider, and by wallet.

Requires member role or higher.

GET /v1/orgs/018f1a2b-.../teams/019c3d4e-.../stats?days=30
Authorization: Bearer <admin-token | solvela_k_...>

Query parameters

ParameterTypeDefaultDescription
daysinteger7Rolling window in days. Clamped to 1–90.

Response200 OK

{
  "team_id": "019c3d4e-...",
  "period_days": 30,
  "total_spend_usdc": 142.80,
  "total_requests": 4821,
  "by_model": [
    {
      "model": "claude-sonnet-4-5",
      "request_count": 2100,
      "total_cost_usdc": 94.50
    },
    {
      "model": "gpt-4o-mini",
      "request_count": 2721,
      "total_cost_usdc": 48.30
    }
  ],
  "by_provider": [
    {
      "provider": "anthropic",
      "request_count": 2100,
      "total_cost_usdc": 94.50
    },
    {
      "provider": "openai",
      "request_count": 2721,
      "total_cost_usdc": 48.30
    }
  ],
  "by_wallet": [
    {
      "wallet_address": "AgEnTwALLetAddReSs...",
      "request_count": 4821,
      "total_cost_usdc": 142.80
    }
  ]
}

Org stats

Returns spend and requests for the entire organization, with a derived budget rollup, a daily time series, per-team / per-tenant / per-vendor breakdowns, and a paginated list of top wallets.

Requires member role or higher.

GET /v1/orgs/018f1a2b-.../stats?days=7&limit=10&offset=0
Authorization: Bearer <admin-token | solvela_k_...>

Query parameters

ParameterTypeDefaultDescription
daysinteger7Rolling window in days. Clamped to 1–90.
limitinteger10Page size for top_wallets. Clamped to 1–100.
offsetinteger0Row offset for top_wallets. Negative values clamp to 0.

Response200 OK

{
  "org_id": "018f1a2b-...",
  "period_days": 7,
  "total_spend_usdc": 38.20,
  "total_requests": 1104,
  "budget": {
    "hourly_limit_usdc": null,
    "daily_limit_usdc": 150.0,
    "monthly_limit_usdc": 4000.0,
    "teams_total": 3,
    "teams_with_hourly_budget": 0,
    "teams_with_daily_budget": 2,
    "teams_with_monthly_budget": 3
  },
  "by_team": [
    {
      "team_id": "019c3d4e-...",
      "team_name": "research-agents",
      "request_count": 890,
      "total_cost_usdc": 30.10
    },
    {
      "team_id": "019e5f6a-...",
      "team_name": "prod-agents",
      "request_count": 214,
      "total_cost_usdc": 8.10
    }
  ],
  "by_day": [
    { "date": "2026-06-06", "spend_usdc": 5.40, "requests": 160 },
    { "date": "2026-06-07", "spend_usdc": 7.10, "requests": 201 }
  ],
  "by_tenant": [
    { "tenant": "customer-a", "request_count": 600, "total_cost_usdc": 21.00 },
    { "tenant": "customer-b", "request_count": 290, "total_cost_usdc": 9.10 }
  ],
  "by_vendor": [
    {
      "vendor_wallet": "VendoRwALLetAddReSs...",
      "request_count": 312,
      "settled_usdc": "12.480000",
      "fee_receivable_usdc": "0.624000"
    }
  ],
  "top_wallets": [
    {
      "wallet_address": "AgEnTwALLetAddReSs...",
      "request_count": 890,
      "total_cost_usdc": 30.10
    }
  ]
}

Budget rollup (budget)

The budget object is a derived, reporting-only figure: the per-period sum of the org's team budgets (see Budgets). It is not an enforced org-level cap — Solvela enforces budgets at the leaf (wallet and team) level only. A team with no limit for a period is treated as unlimited and contributes nothing to the sum. Because of that, a limit is a meaningful ceiling for a period only when every team has a budget for it; the teams_with_*_budget counts (against teams_total) make any partial coverage explicit. A null limit means no team set one for that period — never read it as a 0 cap.

Breakdowns and time series

  • by_day — daily spend and request totals over the window, ascending by date (YYYY-MM-DD, UTC).
  • by_tenant — spend grouped by the x-tenant attribution tag; rows with no tenant tag are omitted.
  • by_vendor — for marketplace services that settle directly to a vendor wallet, the summed vendor settlement and Solvela's 5% fee receivable. Both are USDC strings with six decimal places, summed from integer atomic units (no floating-point rounding on the money value).

Counting semantics

A wallet may belong to multiple teams of an organization. The org summary total, by_day, by_tenant, by_vendor, and top_wallets count each spend row exactly once regardless of how many teams the wallet is in. by_team intentionally attributes a wallet's spend under every team it belongs to, so the per-team slices can legitimately sum to more than the org total when wallets are shared across teams.

enterprise.upgrade

Ready for production?

Solvela Enterprise is $49.99/mo + 5% per route. Includes everything on this page plus the dashboard.

View pricing →