Skip to main content

Overview

The Nouvel API enforces rate limits to ensure fair usage and system stability. All API keys are subject to a 60 requests per minute limit, regardless of your plan tier.
Rate limits are enforced at the infrastructure level, ensuring consistent and reliable limiting across all API endpoints.

Rate Limit Details

number
default:"60"
Maximum number of requests allowed per minute per API key
string
default:"1 minute"
Time window for rate limit calculations (sliding window)
string
default:"per-key"
Rate limits are applied per API key, not per user or organization

Rate Limit Headers

Every API response includes standard rate limit headers to help you track your usage:

When You Exceed the Limit

When you exceed the rate limit, the API returns a 429 Too Many Requests status code:
When you receive a 429 response, your request is not processed. You must retry the request after the rate limit window resets.
The response includes:
  • error: Error message indicating rate limit exceeded
  • reason: Human-readable explanation
  • retryAfter: Seconds until you can retry (optional)
Additionally, a Retry-After header indicates how many seconds to wait before retrying.

Endpoint Resource Costs

While all endpoints share the same 60 requests/minute limit, they consume different amounts of system resources:

Video Generation (POST /api/v1/generate)

High resource cost - Triggers AI models, video rendering, and long-running background jobs. Each generation uses significant compute resources.

Status Polling (GET /api/v1/jobs/:id)

Low resource cost - Simple database lookup. You can poll frequently within your rate limit.

Project Listing (GET /api/v1/projects)

Low resource cost - Database query with pagination. Efficient for monitoring multiple jobs.
Even though video generation is resource-intensive, the rate limit is the same for all endpoints. Plan your API usage accordingly to balance generation requests with status checks.

Best Practices

1. Implement Exponential Backoff

When you receive a 429 error, implement exponential backoff to avoid repeatedly hitting the rate limit:

2. Cache Responses

Avoid unnecessary API calls by caching responses that don’t change frequently:
  • Cache completed project data (projects in completed or failed status won’t change)
  • Store project metadata locally after the initial fetch
  • Use ETags or Last-Modified headers when available (future enhancement)

3. Batch Operations

When checking status for multiple jobs, use the list endpoint instead of individual status checks:

4. Smart Polling Intervals

Adjust your polling frequency based on the project status:
  • Generating status: Poll every 15-30 seconds
  • Post-processing status: Poll every 10-15 seconds
  • Completed/failed status: Stop polling (cache the result)

5. Monitor Rate Limit Headers

Track your rate limit usage to avoid hitting the limit:

Webhook Delivery

Webhook deliveries do not count toward your rate limit. Webhooks are initiated by Nouvel’s servers, not your API key, and are not subject to the 60/minute restriction.
When you register a webhookUrl with your generation request, Nouvel will POST to your URL when the job reaches a terminal state. These outbound deliveries are separate from your rate-limited API calls. See the Webhooks guide for full details.

Concurrent Video Generation

In addition to the 60 requests/minute API rate limit, video generation has its own concurrency limits based on your plan:
Concurrent jobs are counted per organization. If you submit more jobs than your concurrency limit allows, excess requests will be queued and processed as slots become available.

Need Higher Limits?

If your use case requires higher rate limits or concurrency, please contact our team at support@nouvel.ai. Enterprise plans with custom limits are available.
Most integrations work comfortably within the 60/minute API rate limit by following the best practices above. Since video generation takes 2–5 minutes per job, use webhooks or poll job status rather than blocking on the response.