Skip to content
Press.js Press.js Press.js Docs

Usage & Limits

Monitor your account usage and quotas through the API to stay within plan limits.

Request: GET /v1/usage

Terminal window
curl -H "Authorization: Bearer $PRESS_CLOUD_TOKEN" \
"$PRESS_CLOUD_API/v1/usage"

The response includes Cache-Control: private, no-store — do not cache this data.

Response: 200 OK

{
"period": {
"kind": "current_bill_period",
"start": 1743465600000,
"end": 1746057600000,
"usageDayStart": "2026-04-01",
"usageDayEndExclusive": "2026-05-01"
},
"plan": {
"key": "starter",
"name": "Starter",
"currency": "usd",
"interval": "month",
"monthlyPriceCents": 9000
},
"policy": {
"allowExternalNetwork": true,
"maxBytesPerDeployCommit": 52428800,
"maxConcurrentRenderJobs": 10,
"maxDeployCommitsPerBillPeriod": null,
"maxFilesPerDeployCommit": 200,
"maxRenderJobsPerBillPeriod": null,
"maxRenderOutputBytes": 209715200,
"maxRenderTimeMsPerBillPeriod": 9000000000,
"maxRenderTimeoutMs": 60000,
"storageLimitBytes": 10737418240
},
"usageMeters": [
{
"code": "deploy_commits",
"aggregation": "count",
"totalQuantity": 42,
"unit": "count",
"version": "1"
},
{
"code": "render_jobs",
"aggregation": "count",
"totalQuantity": 150,
"unit": "count",
"version": "1"
},
{
"code": "render_time_ms",
"aggregation": "sum",
"totalQuantity": 3600000,
"unit": "ms",
"version": "1"
}
],
"liveStorage": {
"deployVersionStorageBytes": 104857600,
"managedPdfStorageBytes": 52428800,
"renderOutputStorageBytes": 0,
"totalBytes": 157286400
},
"uploadLimits": {
"maxSingleFileBytes": 10485760
},
"storageMeters": [
{
"code": "managed_pdf_storage",
"aggregation": "daily_peak",
"unit": "bytes",
"currentBytes": 52428800,
"peakBytesByDay": [
{
"day": "2026-04-27",
"peakBytes": 52428800,
"peakGiBDay": 0.0488
}
],
"totalPeakBytes": 52428800,
"totalPeakGiBDays": 1.46,
"version": "1"
}
],
"bill": {
"provider": "stripe",
"interval": "month",
"periodStart": 1743465600000,
"periodEnd": 1746057600000
},
"generatedAt": 1745800000000
}
FieldDescription
period.start / period.endCurrent billing period bounds (Unix ms)
plan.nameActive plan name
policy.*Current plan limits — compare against these, not hardcoded values
usageMeters[].totalQuantityAccumulated usage this period (count or ms)
liveStorage.totalBytesCurrent total storage in bytes
uploadLimits.maxSingleFileBytesMax individual file size for uploads (10 MB on all plans)

Use the policy object to determine limits programmatically — a null value means unlimited for that dimension.

Note on maxConcurrentRenderJobs: This is a user-level limit representing the maximum concurrent render jobs your account is allowed to run. Actual concurrency may be lower depending on overall platform load. When the platform is under heavy load, render jobs join a shared public queue and queue wait times may vary.

When a quota is exhausted, the API returns an error with one of these codes:

Error codeMeaning
deploy_commit_quota_exceededMonthly deploy commit allowance exhausted
render_job_quota_exceededMonthly render job allowance exhausted
render_time_quota_exceededMonthly render time allowance exhausted
storage_limit_exceededAccount storage exceeds plan limit
deploy_commit_policy_limit_exceededVersion exceeds per-commit file/byte limits
upload_session_policy_limit_exceededUpload exceeds file count or byte limit

These errors are checked atomically — concurrent requests cannot race past the limit. The error field in the response body contains the code listed above.

  1. Check the current period usage via GET /v1/usage to see how close you are to the limit.
  2. Hard limits (policy limits): reduce the request size or file count. See Plan Limits for exact thresholds.
  3. Quota limits (bill-period): wait for the next billing period or upgrade your plan.
  4. Storage limits: delete unused deploy versions, render outputs, or managed PDFs to free up space.

See Error Reference for the complete error catalog.