---
title: "Limits"
description: "There are some hard and soft limits in v3 that you might hit."
---

## Concurrency limits

These are the default limits on a free account.

| Limit        | Details            |
| ------------ | ------------------ |
| Organization | 10 concurrent runs |
| Environment  | 5 concurrent runs  |

<Snippet file="v3/soft-limit.mdx" />

## Rate limits

| Limit | Details                   |
| ----- | ------------------------- |
| API   | 1,500 requests per minute |

Generally speaking each SDK call is an API call.

The most common cause of hitting the API rate limit is if you're calling `trigger()` on a task in a loop, instead of doing this use `batchTrigger()` which will trigger multiple tasks in a single API call. You can have up to 100 tasks in a single batch trigger call.

## Schedules

| Limit     | Details       |
| --------- | ------------- |
| Schedules | 5 per project |

When attaching schedules to tasks we strongly recommend you add them in our dashboard if they're "static". That way you can control them easily per environment.

If you add them dynamically using code make sure you add a `deduplicationKey` so you don't add the same schedule to a task multiple times. If you don't your task will get triggered multiple times, it will cost you more, and you will hit the limit.

If you're creating schedules for your user you will definitely need to request more schedules from us.

<Snippet file="v3/soft-limit.mdx" />

## Task payloads and outputs

| Limit                  | Details                                        |
| ---------------------- | ---------------------------------------------- |
| Single trigger payload | Must not exceed 10MB                           |
| Batch trigger payload  | The total of all payloads must not exceed 10MB |
| Task outputs           | Must not exceed 10MB                           |

Payloads and outputs that exceed 512KB will be offloaded to object storage and a presigned URL will be provided to download the data when calling `runs.retrieve`. You don't need to do anything to handle this in your tasks however, as we will transparently upload/download these during operation.
