Rate Limits & Quotas
Understand rate limiting tiers, monthly quotas, and how to monitor your API usage.
Rate Limit Tiers
Every API key belongs to a tier that determines its per-minute rate limit and monthly quota.
| Tier | Price | Requests / min | Monthly Quota |
|---|---|---|---|
| Startup | $29 CAD/mo | 60 | 5,000 |
| Growth | $99 CAD/mo | 300 | 25,000 |
| Enterprise | $499 CAD/mo | 1,000 | 250,000 |
How Rate Limiting Works
Draftory uses a per-minute sliding window. When your request count exceeds the limit for your tier, the API returns a 429 Too Many Requests response until the window resets.
Every API response includes these headers so you can track your usage in real time:
| Header | Description |
|---|---|
RateLimit-Limit |
Maximum requests allowed per minute for your tier. |
RateLimit-Remaining |
Requests remaining in the current sliding window. |
RateLimit-Reset |
Seconds until the current window resets. |
Monthly Quotas
- Billable calls (contract creation and retrieval) count toward your monthly quota.
- Status and usage endpoints do not count toward your quota.
- When your quota is exhausted, all requests return
429until the next billing period. - Billing periods are calendar months (1st–last day of the month, UTC).
Quota Weighting
All endpoints count equally against your monthly quota:
| Endpoint | Quota Weight |
|---|---|
POST /contracts |
1 call |
GET /contracts/:id |
1 call |
GET /usage, GET /status |
0 (free) |
Checking Your Usage
Call the usage endpoint to see exactly where you stand for the current billing period:
curl -X GET https://api.draftory.ca/api/external/v2/usage \
-H "x-api-key: dft_live_your_key"
const response = await fetch('https://api.draftory.ca/api/external/v2/usage', {
headers: {
'x-api-key': 'dft_live_your_key'
}
});
const data = await response.json();
console.log(data.usage.remaining);
import requests
response = requests.get(
'https://api.draftory.ca/api/external/v2/usage',
headers={
'x-api-key': 'dft_live_your_key'
}
)
data = response.json()
print(data['usage']['remaining'])
Example Response
{
"success": true,
"usage": {
"period": "2026-03",
"totalCalls": 1247,
"billableCalls": 1200,
"quotaLimit": 5000,
"remaining": 3800,
"overageCalls": 0,
"endpointBreakdown": {
"POST /contracts": 450,
"GET /contracts/:id": 750
},
"periodStart": "2026-03-01T00:00:00.000Z",
"periodEnd": "2026-03-31T23:59:59.999Z"
}
}
Pricing & Billing
- All prices are in Canadian Dollars (CAD) and billed monthly via Stripe.
- When your application is approved, you'll receive a secure payment link to activate your API subscription.
- Subscriptions renew automatically on the 1st of each month.
- To upgrade your tier, contact support.
Tips
Usage Tips
- Cache contract details when possible to reduce API calls.
- Use the status endpoint (doesn't count toward quota) to verify connectivity.
- Implement exponential backoff when receiving
429responses. - Monitor usage regularly with the
/usageendpoint. - Contact support to discuss upgrading your tier if you're consistently hitting limits.