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

FieldTypeDescription
organizationIdstringOrganisation UUID
period.dailyResetAtstringNext daily reset (midnight UTC), ISO 8601
period.monthlyResetAtstringEnd of the current billing period, when plan credits renew
included.dailyLimitEnabledbooleanWhether your plan enforces a daily limit
included.dailyLimit / dailyUsed / dailyRemainingintegerDaily limit, PDFs generated today, and what's left today
included.monthlyLimit / monthlyUsedintegerPlan credits per billing period and PDFs generated this period
included.monthlyRemainingintegerPlan credits left this period (your free-tier or subscription grant), excluding purchased packs
included.paymentStatusstringSubscription status, e.g. active, trialing, past_due
purchasedPacks.totalPurchasedRemainingintegerCredits left across all purchased packs
purchasedPacks.packs[]arrayEach pack with credits left: purchaseId, quantityPurchased, quantityRemaining, expiresAt
effective.canGenerateNowbooleanfalse if any limit is exhausted. Check this before batch jobs
effective.remainingTodayintegerPDFs you can still generate today
effective.remainingThisMonthintegerPlan credits plus pack credits remaining
effective.nextLimitReasonstring | nullWhy 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 }
  ]
}