Dynamiq
Administration

Usage & Billing

Read the Usage tab, understand how plan limits are resolved and enforced, and manage your subscription through Stripe.

Every organization has a set of usage limits that come from its subscription plan. The Usage tab shows where you stand against each one; this page explains what the numbers mean, how limits are enforced, and how billing works underneath.

This page covers mechanics only. For current plans and prices, see the Dynamiq pricing page.

The Usage tab

Open organization Settings → Usage. The header shows your current plan as a label next to the Usage title, and limits are grouped into two sections:

The Usage tab showing the plan label and the Total resource limits and Monthly usage limits sections with progress bars
  • Total resource limits — caps on how many of a resource can exist at once, counted across all projects in the organization.
  • Monthly usage limits — caps that reset each billing period; the section subtitle shows the reset date (Resets <date>).

Each row shows a progress bar with used / limit counts. Two special states replace the bar:

  • Unlimited — no cap applies to this limit on your plan.
  • Not available on plan — the limit is 0; upgrade to use the feature at all.

What is measured

LimitGroupCounts
AppsTotalApps across all projects (archived and deleted Apps don't count)
Inference endpointsTotalDeployed inference endpoints across all projects
DatabasesTotalDeployed databases across all projects
Knowledge basesTotalKnowledge Bases across all projects
Fine-tuning jobsTotalFine-tuning jobs across all projects
ServicesTotalDeployed services across all projects
Conversation messagesMonthlyMessages sent in Chat
Prompt test runsMonthlyPrompt test executions
Prompt generationsMonthlyAI-assisted prompt generations
Router chat completionsMonthlyChat completions through the model router
App invocationsMonthlyRuns of your deployed Apps
Knowledge base ingestionsMonthlyDocuments ingested into Knowledge Bases
Knowledge base retrievalsMonthlyRetrieval queries against Knowledge Bases

How limits are resolved

For each limit key, the effective value is determined in this order:

  1. Per-organization override — Dynamiq operators can set an explicit value for a single organization; it wins over everything else.
  2. Billing disabled — on installations where billing is turned off (e.g. self-hosted), every limit is unlimited.
  3. Active subscription plans — the limit comes from your plan; if multiple subscriptions are active, the highest value across them applies. A key your plan doesn't define is unlimited.
  4. No active subscription — restrictive defaults apply: 1 App, 1 Knowledge Base, and 0 for everything else.

How limits are enforced

  • Total limits are checked when you create or deploy the resource — creating an App, Knowledge Base, database, service, inference endpoint, or fine-tuning job fails once the cap is reached.
  • Monthly limits are checked when the action happens — sending a Chat message, invoking an App, ingesting or retrieving from a Knowledge Base — and a usage counter is incremented on success.

When an organization is at its cap, the API returns the error code subscription_limit_reached with the message "This organization has reached its subscription limit. Please upgrade the plan." In the UI this surfaces as an upgrade prompt with the plan picker.

Monthly counters are tracked per billing period. The period is anchored to your subscription's start date and rolls over monthly from there; without an active subscription it falls back to calendar months (UTC).

Plans and subscriptions

Billing runs on Stripe:

  • Creating an organization creates a matching Stripe customer. On hosted Dynamiq, users with a business email get a free plan subscription automatically for their first organization.
  • An organization whose billing status is unset (no subscription yet) is shown the plan picker — an embedded Stripe pricing table — before entering the workspace. Choosing a plan creates the subscription; limits update as Stripe confirms it via webhook.
  • Manage Billing opens the Stripe billing portal, where you change plans, update payment methods, and download invoices. Dynamiq itself never stores card details.
  • Deleting the organization cancels its subscriptions immediately.

Subscription statuses are active, inactive, and canceled; limits are computed from active subscriptions only.

Usage and billing via the API

All endpoints require a Personal Access Token. Status, subscriptions, and limits are readable by any org member; the billing portal requires the Owner or Admin role:

MethodPathPurpose
GET/v1/orgs/{org_id}/billing/statusdisabled, unset, active, or inactive
GET/v1/orgs/{org_id}/billing/subscriptionsSubscriptions with their plan (filter with ?status=)
GET/v1/orgs/{org_id}/billing/limitsThe full limits report shown on the Usage tab
GET/v1/orgs/{org_id}/billing/stripe/billing-portalA URL to the Stripe billing portal (Owner/Admin)

Fetch the limits report:

curl "https://api.getdynamiq.ai/v1/orgs/$ORG_ID/billing/limits" \
  -H "Authorization: Bearer $DYNAMIQ_PAT"
import os
import requests

resp = requests.get(
    f"https://api.getdynamiq.ai/v1/orgs/{os.environ['ORG_ID']}/billing/limits",
    headers={"Authorization": f"Bearer {os.environ['DYNAMIQ_PAT']}"},
)
resp.raise_for_status()
report = resp.json()["data"]
for entry in report["limits"]:
    cap = entry.get("limit", "unlimited")
    print(f"{entry['key']}: {entry['used']} / {cap}")
const res = await fetch(
  `https://api.getdynamiq.ai/v1/orgs/${process.env.ORG_ID}/billing/limits`,
  { headers: { Authorization: `Bearer ${process.env.DYNAMIQ_PAT}` } },
);
const { data } = await res.json();
for (const entry of data.limits) {
  console.log(`${entry.key}: ${entry.used} / ${entry.limit ?? 'unlimited'}`);
}

The response contains the plan, the current period_start / period_end, and a limits array where each entry has a key (e.g. app.max_total_count), used, and — when a cap applies — limit and remaining. An entry without limit is unlimited.

Next steps

On this page