Quota Enforcement

Postnomic enforces subscription plan limits at the API level to ensure fair resource usage. The SubscriptionQuotaService checks your current usage against your plan's limits before allowing create and...

Overview

Postnomic enforces subscription plan limits at the API level to ensure fair resource usage. The SubscriptionQuotaService checks your current usage against your plan's limits before allowing create and upload operations. Understanding how enforcement works helps you plan your usage and avoid unexpected restrictions.

How Enforcement Works

Every time you perform a quota-controlled action (creating a blog, publishing a post, adding a user, or uploading media), the API:

  1. Identifies the blog owner via the Blog.OwnerId field
  2. Looks up the owner's active subscription
  3. Retrieves the associated SubscriptionPlan with its limits
  4. Counts current usage against the plan's limits
  5. Allows the action if within limits, or rejects with a 403 response if limits are exceeded

Only subscriptions with an Active or Trialing status are considered valid. If no active subscription exists, the user falls back to Free plan limits.

Enforced Limits

Blog Limit

The number of blogs you can own is capped by your plan.

  • How it is counted: Total blogs where OwnerId matches your user ID
  • Free: 1 blog
  • Plus: 3 blogs
  • Pro: 10 blogs
  • Enterprise: 999 (effectively unlimited)

Posts per Month

The number of posts you can create each calendar month is limited.

  • How it is counted: Posts with CreatedAt on or after the first day of the current month, summed across all blogs you own
  • Free: 5 posts/month
  • Plus: 25 posts/month
  • Pro: 100 posts/month
  • Enterprise: 9,999 (effectively unlimited)

The counter resets on the first day of each month at midnight UTC.

Storage

Total media storage across all your blogs is capped.

  • How it is counted: Sum of StorageUsedBytes across all blogs where OwnerId matches your user ID
  • Free: 100 MB
  • Plus: 1 GB
  • Pro: 10 GB
  • Enterprise: 100 GB

Users per Blog

The number of team members on a single blog is limited.

  • How it is counted: Number of BlogUser records for the specific blog
  • Free: 1 user
  • Plus: 3 users
  • Pro: 10 users
  • Enterprise: 999 (effectively unlimited)

This limit is enforced per blog, not across all blogs.

403 Forbidden Responses

When a quota is exceeded, the API returns a 403 Forbidden response with a structured ProblemDetails body:

{
  "title": "Quota Exceeded",
  "status": 403,
  "detail": "Cannot create blog. Blog limit reached: 3 of 3 allowed on the Plus plan."
}

The detail field provides a specific, actionable message that includes:

  • The action that was blocked
  • The current usage count
  • The plan limit
  • The plan name

What Is NOT Blocked

Quota enforcement does not restrict:

  • Reading content — You can always view, list, and search existing content
  • Editing existing content — Updates to existing posts, settings, and metadata are always allowed
  • Deleting content — You can delete resources at any time, which may bring you back within limits
  • Changing statuses — Moving a post from Draft to Published does not count as creating a new post

Legacy Blogs

Blogs that existed before the ownership tracking system was introduced (blogs without an OwnerId) are treated as unrestricted and are not subject to quota enforcement. This ensures backward compatibility for early adopters.

Resolving Quota Issues

If you hit a quota limit, you have two options:

Reduce Usage

  • Delete unused blogs to free up blog slots
  • Delete old posts or wait for the monthly counter to reset
  • Remove unused media to reclaim storage
  • Remove inactive users from your blog

Upgrade Your Plan

Navigate to Settings → Subscription and upgrade to a plan with higher limits. Upgraded quotas take effect immediately after payment.

Checking Your Current Usage

The dashboard displays your current usage alongside your plan limits:

  • Blogs: X of Y
  • Posts this month: X of Y
  • Storage: X MB of Y MB
  • Users: X of Y (per blog)

Use these indicators to monitor your usage and plan upgrades proactively before reaching limits.

Was this article helpful?

Thank you for your feedback!