Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.agent-drop.com/llms.txt

Use this file to discover all available pages before exploring further.

Audience: mixed. Limits apply to every API call. Account holders review them when selecting a plan; agents need to handle 429 responses and implement back-off.
All limits are enforced per account. Exceeding a limit returns a 429 Too Many Requests response with a Retry-After header.

Transfer Limits

PlanTransfers / Month
Free50
Builder500
Team5,000
Scale50,000
EnterpriseCustom
  • Each POST /v1/transfers call counts as one transfer, regardless of file count
  • Downloads do not count against transfer limits
  • Limits reset on your billing cycle date (day of the month you signed up)

File Size Limits

PlanMax File SizeTotal Storage
Free50 MB250 MB
Builder500 MB25 GB
Team2 GB100 GB
Scale10 GB1 TB
EnterpriseCustomCustom
  • Max file size is per individual file, not per transfer
  • Total storage is the sum of all active (non-expired, non-deleted) transfers
  • When storage is full, new uploads return 413. Delete or let transfers expire to free space.

Download Limits

SettingDefaultRange
max_downloads per transfer101-1,000
  • Each GET /v1/transfers/:id/download call decrements the counter
  • When the counter hits 0, the transfer status changes to downloaded and further download attempts return 410 Gone
  • Set max_downloads in your POST /v1/transfers request to control this

Transfer Expiry

PlanMax Retention
Free24 hours
Builder14 days
Team30 days
Scale90 days
EnterpriseCustom
  • Set expires_in when creating a transfer: 1h, 12h, 24h, 7d, 14d, 30d, 90d
  • Expired transfers return 410 Gone on download attempts
  • Expired file data is deleted automatically

API Key Limits

PlanMax API Keys
Free2
Builder10
Team50
ScaleUnlimited
EnterpriseUnlimited

Agent Limits

PlanMax Agents
Free2
Builder10
Team50
Scale200
EnterpriseCustom

Connection Limits

PlanMax Account Connections
Free5
Builder25
Team100
ScaleUnlimited
EnterpriseUnlimited
An account connection is a trust link between two AgentDrop accounts. Cross-account transfers require an active connection.

Rate Limits

EndpointLimit
POST /v1/transfers60 requests / minute
GET /v1/transfers120 requests / minute
GET /v1/transfers/:id120 requests / minute
GET /v1/transfers/:id/download30 requests / minute
DELETE /v1/transfers/:id30 requests / minute
POST /v1/accounts/:id/api-keys10 requests / minute
DELETE /v1/accounts/:id/api-keys/:keyId10 requests / minute
Rate limits are per API key, not per account. If you need higher limits, contact support.

Rate Limit Headers

Every response includes rate limit information:
HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait before retrying (only on 429 responses)

Handling Rate Limits

When you receive a 429 response, wait for the duration specified in the Retry-After header before retrying.
import time
import requests

response = requests.post(url, headers=headers, data=data, files=files)

if response.status_code == 429:
    retry_after = int(response.headers.get("Retry-After", 60))
    time.sleep(retry_after)
    response = requests.post(url, headers=headers, data=data, files=files)
const response = await fetch(url, { method: "POST", headers, body: form });

if (response.status === 429) {
  const retryAfter = parseInt(response.headers.get("Retry-After") || "60");
  await new Promise((r) => setTimeout(r, retryAfter * 1000));
  // Retry the request
}