View your quota
Your credit balance is visible on the main dashboard. You can also query it programmatically to gate large batch jobs.
Dashboard
The usage widget on your dashboard shows:
- PDFs remaining this month (plan credits + purchased packs)
- PDFs generated today against your daily limit
- PDFs generated this billing period against your monthly limit, plus any remaining pack credits
API endpoint
GET
/v1/usage/quota Requires the usage:read scope. Returns 404 if the organisation has no active subscription.
Response fields
| Field | Type | Description |
|---|---|---|
organizationId | string | Organisation UUID |
period.dailyResetAt | string | Next daily reset (midnight UTC), ISO 8601 |
period.monthlyResetAt | string | End of the current billing period, when plan credits renew |
included.dailyLimitEnabled | boolean | Whether your plan enforces a daily limit |
included.dailyLimit / dailyUsed / dailyRemaining | integer | Daily limit, PDFs generated today, and what's left today |
included.monthlyLimit / monthlyUsed | integer | Plan credits per billing period and PDFs generated this period |
included.monthlyRemaining | integer | Plan credits left this period (your free-tier or subscription grant), excluding purchased packs |
included.paymentStatus | string | Subscription status, e.g. active, trialing, past_due |
purchasedPacks.totalPurchasedRemaining | integer | Credits left across all purchased packs |
purchasedPacks.packs[] | array | Each pack with credits left: purchaseId, quantityPurchased, quantityRemaining, expiresAt |
effective.canGenerateNow | boolean | false if any limit is exhausted. Check this before batch jobs |
effective.remainingToday | integer | PDFs you can still generate today |
effective.remainingThisMonth | integer | Plan credits plus pack credits remaining |
effective.nextLimitReason | string | null | Why canGenerateNow is false: daily_limit_reached, monthly_limit_reached or payment_past_due; null when generation is allowed |
Usage history
GET
/v1/usage/history Also requires usage:read. Returns { organizationId, history }, where each history entry is { date, count }. date is the start of the day as a midnight-UTC ISO timestamp (e.g. 2024-06-01T00:00:00.000Z). Entries are newest first and cover the 30 most recent days with any usage; days with no PDFs are omitted.
Credits are consumed in order: plan credits (free-tier or subscription grant), then purchased pack credits. Within each group, credits that expire soonest are used first.
curl "https://api.pdf-fox.com/v1/usage/quota" -H "Authorization: Bearer $PDFOX_API_KEY"
{
"organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"period": {
"dailyResetAt": "2026-05-18T00:00:00.000Z",
"monthlyResetAt": "2026-06-01T00:00:00.000Z"
},
"included": {
"dailyLimitEnabled": true,
"dailyLimit": 50,
"dailyUsed": 12,
"dailyRemaining": 38,
"monthlyLimit": 500,
"monthlyUsed": 47,
"monthlyRemaining": 453,
"paymentStatus": "active"
},
"purchasedPacks": {
"totalPurchasedRemaining": 500,
"packs": [
{
"purchaseId": "b4e2c3f5-2222-4562-b3fc-2c963f66afa6",
"quantityPurchased": 500,
"quantityRemaining": 500,
"expiresAt": "2027-05-02T09:14:00.000Z"
}
]
},
"effective": {
"canGenerateNow": true,
"remainingToday": 38,
"remainingThisMonth": 953,
"nextLimitReason": null
}
}curl "https://api.pdf-fox.com/v1/usage/history" -H "Authorization: Bearer $PDFOX_API_KEY"
{
"organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"history": [
{ "date": "2026-05-17T00:00:00.000Z", "count": 47 },
{ "date": "2026-05-15T00:00:00.000Z", "count": 38 }
]
}