Limits & Quotas
Use this page when deciding whether a workflow should run synchronously, asynchronously, or through a batch worker.
Document limits
- Upload accepts PDF, PNG, JPEG/JPG, TIFF/TIF, WebP, BMP, and GIF.
- Upload uses repeated multipart field
files. - Each uploaded file is limited to 50 MB.
- Multi-page TIFF files are stored and processed as page-indexed documents.
- Native DOCX/XLSX workflows are available through beta APIs by writing to Docspeed; they are not part of the standard production upload path.
Execution limits
Prefer execution_mode: "sync" for interactive product flows and execution_mode: "async" for larger files, packets, table-heavy documents, or batch processing.
Async jobs use these statuses:
{
"status": "pending"
}
Valid values are pending, processing, completed, and failed.
Rate limits
Rate limits are API-key and account specific. When a request is rate-limited, the API returns 429 and may include a Retry-After header.
cURL
curl -sS -X POST "https://api.docspeed.ai/api/v1/upload" \
-H "Authorization: Bearer ${DOCSPEED_API_KEY}" \
-F "files=@sample-invoice.pdf"
Python
import time
import requests
response = requests.post(
"https://api.docspeed.ai/api/v1/upload",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files=[("files", ("sample-invoice.pdf", open("sample-invoice.pdf", "rb"), "application/pdf"))],
timeout=120,
)
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", "2"))
time.sleep(retry_after)
TypeScript
const response = await fetch("https://api.docspeed.ai/v1/jobs/job_123", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
if (response.status === 429) {
const retryAfterSeconds = Number(response.headers.get("Retry-After") ?? "2");
await new Promise((resolve) => setTimeout(resolve, retryAfterSeconds * 1000));
}
Production notes
- Back off status polling; do not poll jobs in a tight loop.
- Treat
failedas terminal until you inspect the job result or error payload. - Keep API keys server-side so rate-limit and billing behavior maps to your backend service, not a public browser client.
- If you need fixed account-level concurrency, page-count, retention, or credit quotas, confirm them in your Docspeed agreement or support thread.