Limits

Reference

Limits

Monthly allowance

A workspace can create 250 documents a month through the API on Pro and 1,000 on Teams, resetting on the 1st at 00:00 UTC. Past that, sends return 429 monthly_allowance_exceeded. A plan change applies straight away to what the workspace has already used this month. Only documents created through the API count: reads, signing links, reminders, and voids do not, and documents sent from the Inkly app stay unlimited.

Rate and size limits

Requests per key
120 a minute
Requests per workspace
300 a minute, 20,000 a day
Document sends per workspace
20 a minute
Signing links per workspace
300 an hour
Signed PDF downloads
100 an hour
Certificate downloads
30 an hour
Attachment downloads per key
100 an hour
PDF upload
20 MB, 500 pages, 1 hour to use
One document
25 recipients, 5 of them CCs, 500 fields

Handling a 429

A 429 always carries Retry-After, in seconds. It usually also carries RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset. Other responses do not carry these headers, except that 409 upload_in_progress also carries Retry-After.

Wait that many seconds and send the same request again. For a send, keep the same Idempotency-Key, so the retry can never create a second document.

# --retry repeats the request after a timeout, 429, 500, 502, 503, or 504, waiting as Retry-After says,
# and sends the same Idempotency-Key each time.
curl --retry 5 -X POST "https://www.inkly.so/api/v1/documents" \
  -H "Authorization: Bearer $INKLY_API_KEY" \
  -H "Idempotency-Key: crm-8841-send-1" \
  -H "Content-Type: application/json" \
  --data @send.json
A per-IP limit, well above the per-key limit, is also enforced by the network in front of the API. Its 429 is plain text, with no JSON error body and none of these headers, and no Inkly-Request-Id. Wait up to a minute before retrying, and handle a 429 whose body is not JSON.