Rate Limits
Understand API rate limits and how to handle them. Every request counts toward your plan’s hourly quota, and the API returns headers so you can track usage in real time.
For authentication setup, see Authentication.
Limits by Plan
Section titled “Limits by Plan”| Plan | Requests/hour | Posts/month | Blogs |
|---|---|---|---|
| Free | 60 | 10 total | 1 |
| Starter ($9) | 300 | 15 | 1 |
| Creator ($29) | 1,000 | 50 | 3 |
| Scale ($79) | 10,000 | Unlimited | 5 |
| Enterprise ($199+) | 10,000+ | Unlimited | Unlimited |
See Plans for full feature comparison.
Response Headers
Section titled “Response Headers”Every API response includes rate limit headers:
X-RateLimit-Limit: 300X-RateLimit-Remaining: 142X-RateLimit-Reset: 1711324800X-RateLimit-Limit— Your plan’s hourly limitX-RateLimit-Remaining— Requests left in current windowX-RateLimit-Reset— Unix timestamp when the window resets
Reading headers in code
Section titled “Reading headers in code”const res = await fetch('https://api.postlark.ai/v1/posts', { headers: { Authorization: 'Bearer pk_live_xxxxxxxxxxxx' },});
const remaining = parseInt(res.headers.get('X-RateLimit-Remaining') ?? '0', 10);const resetAt = parseInt(res.headers.get('X-RateLimit-Reset') ?? '0', 10);
if (remaining < 10) { const waitMs = (resetAt * 1000) - Date.now(); console.log(`Low on quota. Resets in ${Math.ceil(waitMs / 1000)}s`);}When Exceeded
Section titled “When Exceeded”When you exceed your hourly limit, the API returns 429 Too Many Requests:
{ "error": "rate_limit_exceeded", "message": "Rate limit exceeded. Limit: 60 requests/hour.", "retry_after": 1823}Wait retry_after seconds before retrying.
Post Packs (Starter+)
Section titled “Post Packs (Starter+)”If you exceed your monthly post limit, you can purchase Post Packs as an add-on:
- 100 posts — $10 (no expiry)
- 300 posts — $25 (no expiry)
Monthly quota is consumed first, then packs. See Plans for pricing details and how to purchase.
See Also
Section titled “See Also”- Authentication — API keys and JWT setup
- Plans — plan comparison, Post Packs, and billing
- Analytics API — view traffic data for your blog