On this page

If you’re a platform reselling MIOSA capacity, you need to attribute MIOSA costs back to your own customers. MIOSA emits usage events with resource ownership and external attribution on every billable action; you query them, group, and chargeback in your own currency / margin model.

What’s metered

DimensionUnitWhen emitted
Sandbox runtimesandbox-seconds (per vCPU, per GB-RAM)Per-second while running
Builder runtimebuilder-secondsDuring publish
Runtime instance runtimeruntime-seconds (per vCPU, per GB-RAM)Per-second while serving
Static artifact storageGB-monthsContinuously
Static artifact bandwidthGB egressPer response
Object storage (buckets)GB-months + GB egressContinuously / per response
Managed PostgresGB-months + connectionsContinuously
Managed RedisGB-monthsContinuously
Ownership and attribution: every event carries workspace_id, project_id, and the external_* fields if present on the source resource

Computers (desktop product) have a separate metering schema; see Computers for that side.

Usage report API

GET /api/v1/usage?period_start=2026-05-01&period_end=2026-06-01
GET /api/v1/usage?workspace_id=550e8400-e29b-41d4-a716-446655440000
GET /api/v1/usage?external_workspace_id=clinic_123&period=2026-05

Response shape:

{
  "data": [
    {
      "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
      "project_id": "660e8400-e29b-41d4-a716-446655440001",
      "external_workspace_id": "clinic_123",
      "external_user_id": null,
      "external_project_id": null,
      "total_usd": 4.20,
      "line_items": [
        { "dimension": "sandbox_seconds", "qty": 1200, "usd": 0.40 },
        { "dimension": "static_bandwidth_gb", "qty": 38.2, "usd": 3.80 }
      ]
    },
    {
      "external_workspace_id": "smile-clinic-456",
      "total_usd": 11.75,
      "line_items": [...]
    }
  ],
  "period": { "start": "2026-05-01", "end": "2026-06-01" },
  "currency": "usd"
}

Use groupBy to slice by any combination of ownership and external IDs. Typical groupings:

  • ["workspace_id"] — per-client workspace
  • ["workspace_id", "project_id"] — per-app/project inside a client
  • ["external_workspace_id"] — per-customer chargeback
  • ["external_workspace_id", "external_project_id"] — per-app within a customer
  • ["external_user_id"] — per-user attribution (e.g. for fair-use limits)
  • [] — total for the entire MIOSA organization

Audit log

Every mutation also emits an audit event with attribution. Different table, separate read endpoint:

GET /api/v1/audit?workspace_id=550e8400-e29b-41d4-a716-446655440000
GET /api/v1/audit?external_workspace_id=clinic_123
GET /api/v1/audit?api_key_id=key_...
GET /api/v1/audit?action=deployments.publish

Audit is for security / compliance, usage is for billing. Both share the same ownership and attribution model.

Quotas and limits

MIOSA enforces quotas at the organization and plan level. You can enforce per-workspace, per-project, or per-user limits in your own app logic, querying usage to make decisions.

Example: ClinicIQ wants to cap each dental office at $50/month. Their backend:

  1. Queries /api/v1/usage?workspace_id=550e8400-e29b-41d4-a716-446655440000&period=current_month.
  2. If total_usd > 50, denies new sandbox creation in the ClinicIQ app.
  3. Optionally, hits a MIOSA endpoint to suspend the customer’s sandboxes (not a single endpoint today; do it client-side by destroying their sandboxes).

For platform-level safety, MIOSA can also enforce per-external-workspace soft quotas at the tenant config level (Phase 8) — talk to support if you need this.

Pricing

Pricing is plan-dependent. Visit the Pricing page on the marketing site for current rates, or contact support for enterprise plans.

Platform integrations typically negotiate volume rates — talk to sales before scaling to thousands of end users.

Billing tenancy

Important: your MIOSA bill is one bill. MIOSA charges the organization owner for all usage, regardless of which workspace/project or external_workspace_id it came from. Ownership and attribution exist so you can charge your customers. MIOSA does not bill your downstream clinics directly.


MIOSA -> ClinicIQ:        $X / month, one invoice
ClinicIQ -> clinic_123:   $Y / month (markup, your pricing model)
ClinicIQ -> clinic_456:   $Z / month

See also

Was this helpful?