Crove Docs
Crove Docs
Crove Documentation

Getting Started

IntroductionQuick StartKey Concepts

Templates

Templates OverviewTemplate EditorVariablesExpressionsForm Builder

Documents

Documents OverviewCreating DocumentsFilling DocumentsE-SignaturesPDF Generation

API Reference

API OverviewAuthenticationTemplates APIDocuments APIRate Limits

Webhooks

Webhooks OverviewOutgoing WebhooksIncoming WebhooksWebhook Events

Integrations

Integrations OverviewZapier IntegrationAPI Keys

Account & Billing

Account OverviewTeam ManagementBilling & PlansWorkspace Settings

Rate Limits

Understand API rate limits and quotas for the Crove REST API.

Rate Limits

The Crove API enforces rate limits to ensure fair usage and platform stability. Limits vary by plan.

Rate limit overview

PlanAPI Calls / MonthRate Limit
Starter1,00060 requests/minute
Pro10,000120 requests/minute
Business50,000300 requests/minute
EnterpriseCustomCustom

Checking your rate limit

Use the rate limit endpoint to check your current usage:

GET /api/external/v1/rate-limit

Response

{
  "data": {
    "plan": "Pro",
    "limit": 10000,
    "used": 2450,
    "remaining": 7550,
    "resetsAt": "2026-03-01T00:00:00Z"
  }
}

Example

curl -X GET https://crove.app/api/external/v1/rate-limit \
  -H "Authorization: Bearer YOUR_API_KEY"

Rate limit headers

Every API response includes rate limit information in the headers:

HeaderDescription
X-RateLimit-LimitMaximum requests per minute
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetTime when the rate limit window resets (Unix timestamp)

Exceeding the rate limit

When you exceed the rate limit, the API returns a 429 Too Many Requests response:

{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded. Please retry after 45 seconds.",
    "retryAfter": 45
  }
}

The Retry-After header indicates how many seconds to wait before making another request.

Monthly quota

In addition to per-minute rate limits, each plan has a monthly API call quota. When the monthly quota is exhausted:

{
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Monthly API quota exceeded. Upgrade your plan or wait until the quota resets."
  }
}

Monthly quotas reset on the first day of each calendar month.

Best practices

  1. Implement retry logic — When you receive a 429, wait for the Retry-After period and retry
  2. Use exponential backoff — For retries, double the wait time with each attempt
  3. Cache responses — Store template and document data locally to reduce API calls
  4. Batch operations — Create multiple documents in fewer API calls when possible
  5. Monitor usage — Check your rate limit endpoint regularly to stay within quota

Example retry logic (JavaScript)

async function apiRequest(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After') || 60;
      console.log(`Rate limited. Retrying in ${retryAfter}s...`);
      await new Promise(resolve =>
        setTimeout(resolve, retryAfter * 1000)
      );
      continue;
    }

    return response;
  }

  throw new Error('Max retries exceeded');
}

Need higher limits?

If your use case requires higher rate limits or API quotas, contact our sales team to discuss enterprise plans with custom limits.

Documents API

Create, manage, and download documents via the Crove REST API.

Webhooks Overview

Receive real-time notifications and automate document creation with Crove webhooks.

On this page

Rate LimitsRate limit overviewChecking your rate limitResponseExampleRate limit headersExceeding the rate limitMonthly quotaBest practicesExample retry logic (JavaScript)Need higher limits?