Account
Limits and plans
Plan limits from the plans table, and how each one is counted.
On this page
Plan limits apply only to the hosted side: runs on DOGM's workers, stored artifacts, AI spec drafts and team seats. The CLI, local generation and local masking are free on every plan and have no limits.
Plans#
This table is generated from the plans table the API reads, so it shows the limits the code enforces.
| Limit | free | pro | team |
|---|---|---|---|
| Price per 30 days (draft) | ₱0 | ₱1,490 | ₱4,990 |
| Members (not read-only) | 1 | 3 | 15 |
| Hosted runs per period | 20 | 300 | 2,000 |
| Rows per run, all tables | 100,000 | 10,000,000 | 100,000,000 |
| AI spec drafts per period | 10 | 150 | 600 |
| Concurrent runs | 1 | 3 | 10 |
| Artifact retention | 3 days | 30 days | 90 days |
| Artifact storage | 1 GB | 50 GB | 500 GB |
| API keys and the Action's hosted mode | No | Yes | Yes |
| Webhooks | No | Yes | Yes |
From the plans seed in dogm-api/db/migrations/20261030200000_runs.sql. 1 GB here is 1,073,741,824 bytes.
How limits are counted#
The period. On Pro or Team, a period is the 30 days you paid for. On Free, it's the calendar month in Philippine time (PHT), so counts reset at 00:00 PHT on the 1st. Storage isn't per period: it's one running total.
One check, in one transaction. Each limit is checked and counted together, on a usage row locked for the duration, so two requests that arrive at once can't both take the last slot.
| Limit | Checked when | Over the limit |
|---|---|---|
| Hosted runs, rows per run, concurrent runs | POST /v1/runs | 429 E_LIMIT_RUNS, E_LIMIT_ROWS_PER_RUN, E_LIMIT_CONCURRENT_RUNS |
| AI drafts | POST /v1/projects/{project_id}/specs:compile | 429 E_LIMIT_AI_DRAFTS |
| Members | Sending an invite, and accepting one | E_LIMIT_MEMBERS |
| API keys, webhooks | Creating one, and on every use | 402 E_PLAN_API_KEYS, E_PLAN_WEBHOOKS; a Free org's keys and webhooks are paused |
| Storage | When a run's files are finalized | The run fails with E_LIMIT_STORAGE_BYTES |
- Runs count when they're created. A run that ends in error is credited back. A run whose checks fail still counts, because it did its work.
- Rows per run is the total across every table of the run, after row overrides.
- AI drafts count when they're submitted, including drafts that fail, since the model work was done. A separate per-org AI token budget sits above any plan's normal use as a safety cap; whichever is hit first stops the request.
- Concurrent runs at the limit are rejected with a
429, not queued. Wait for one to finish, or cancel one. - Warnings go out by email at 80% and 100% of a limit, once per limit per period, at the moment the threshold is crossed.
Retention#
Artifacts are kept for the plan's retention period and then deleted, so download what you need to keep. A limit never changes what a run produces, and any run can be rebuilt later from its spec, seed and engine version with the CLI, which has no limits.
