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

import SoftLimit from '/snippets/soft-limit.mdx';
import RateLimitHitUseBatchTrigger from '/snippets/rate-limit-hit-use-batchtrigger.mdx';

## Concurrency limits

These are the default limits on a free account.

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

<SoftLimit />

## Rate limits

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

Generally speaking each SDK call is an API call.

<RateLimitHitUseBatchTrigger/>

## 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.

<SoftLimit />

## 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.

### Machines

The default machine is `small-1x` which has 0.5 vCPU and 0.5 GB of RAM. You can optionally configure a higher spec machine which will increase the cost of running the task but can also improve the performance of the task if it is CPU or memory bound.

See the [machine configurations](/machines#machine-configurations) for more details.