> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.videogen.io/rate-limits/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.videogen.io/_mcp/server. # Rate limits > Per-endpoint rate limits for the VideoGen API, including headers and best practices for handling 429 responses. The API is rate-limited on a per-endpoint, per-hour basis. Limits apply **per team**, so all API keys belonging to your team share the same limit for each endpoint. Limits are generous for typical usage but exist to protect the platform from abuse. ## Default limits | Endpoint group | Limit | | --------------------------------------------- | -------------------- | | `POST /v1/tools/*` (all generation endpoints) | 500 requests/hour | | `GET /v1/tools/executions/{id}` | 5,000 requests/hour | | `POST /v1/tools/executions/{id}/cancel` | 250 requests/hour | | `GET /v1/files`, `GET /v1/files/{id}` | 50,000 requests/hour | | `POST /v1/files/{id}/hydrate` | 2,500 requests/hour | | `POST /v1/files/upload` | 500 requests/hour | | `POST /v1/files/search` | 500 requests/hour | | `GET /v1/resources/*` | 2,500 requests/hour | | `GET /v1/webhooks/endpoints` | 500 requests/hour | | `POST /v1/webhooks/endpoints` | 10 requests/hour | | `DELETE /v1/webhooks/endpoints/{id}` | 10 requests/hour | | `POST /v1/workflows/*` (all start endpoints) | 500 requests/hour | | `GET /v1/workflows/runs/{id}` | 5,000 requests/hour | | `POST /v1/workflows/runs/{id}/cancel` | 250 requests/hour | | `GET /v1/projects`, `GET /v1/projects/{id}` | 2,500 requests/hour | | `POST /v1/projects/{id}/export` | 500 requests/hour | | `GET /v1/projects/{id}/exports/{exportId}` | 5,000 requests/hour | | `POST /v1/projects/{id}/remix` | 500 requests/hour | | `GET /v1/projects/{id}/remix-actions` | 5,000 requests/hour | These limits apply per team (shared across all of your team's API keys). If you need higher limits for your use case, contact us at [support@videogen.io](mailto:support@videogen.io). ## Response headers Every response includes rate limit headers: | Header | Description | | ----------------------- | ----------------------------------------------- | | `X-RateLimit-Limit` | Maximum requests allowed in the current window | | `X-RateLimit-Remaining` | Requests remaining in the current window | | `X-RateLimit-Reset` | Unix timestamp (seconds) when the window resets | ## Handling 429 responses When you exceed the limit, the API returns `429 Too Many Requests`. Best practices: * **Back off exponentially.** Wait 1s, then 2s, then 4s, etc. * **Use webhooks instead of polling.** If you're hitting limits on `GET /v1/tools/executions/{id}`, switch to webhooks so you don't need to poll at all. * **Cache resource lists.** Avatar presenters and TTS voices change infrequently. Cache the response and refresh every few hours rather than on every request. > HTTP API with TypeScript and Python SDKs for generating image, video, and audio assets with VideoGen.