AkaPhoneDocs
Guides

Limits and quotas

Every limit in one place - rate limits, concurrent devices, snapshot quotas, input and instruction lengths, upload sizes, timeouts and data retention.

Rate limits#

Limits are per account (all your API keys and your dashboard session share them) and work as token buckets that refill continuously.

What Limit Error
All authenticated REST requests (/v1/…) 120 per minute 429 rate_limited
Device creation (POST /v1/devices, snapshot restores) 10 per minute 429 rate_limited
Task creation (POST /v1/devices/:id/tasks) 30 per minute 429 rate_limited
Snapshot creation 5 per hour 429 rate_limited
Input over the live stream 20 messages per second per connection error event on the socket
Starting Google sign-in 30 per minute per IP address 429 rate_limited

A 429 response carries a Retry-After header with the number of seconds to wait. There are no X-RateLimit-* headers. Back off for Retry-After seconds and retry; the REST overview has a retry helper.

Account limits#

Free Dev Team
Devices at once (queued + creating + running) 1 3 5
Snapshots held (pending + ready) 1 5 20
Live view frame rate 2 fps 4 fps 5 fps
Retention of tasks and artifacts 7 days 30 days 90 days
Limit Value
Active API keys 25 per account (409 conflict beyond that)
Minimum balance to create a device 1 credit (402 insufficient_credits)
Active tasks per device 1 (409 conflict)

Sizes and lengths#

Field Limit
Task instruction 1 to 8,000 characters (after trimming whitespace)
Input text 1 to 500 characters per message
Input coordinates (x, y, x1…y2) integers 0 to 10,000
Swipe ms 1 to 10,000 (default 300)
Device and snapshot name, API key name up to 64 characters
Device profile pixel_8, pixel_tablet or small_phone
Device android 1 or 2 digits
Upload filename 5 to 128 characters, ending in .apk
Upload size 300 MB (314,572,800 bytes)
GET /v1/tasks limit 1 to 200 (default 50)
GET /v1/billing/ledger limit 1 to 500 (default 50)
GET /v1/devices?status=all, GET /v1/snapshots the 200 most recent

Timeouts#

What Value Result
wait on device creation 90 seconds maximum Returns the device in its current status with X-Wait-Timed-Out: 1
APK install 15 minutes Install becomes failed with timeout
Queued device 10 minutes Device goes to error with no_capacity
Idle running device 30 minutes without activity Device stops with reason idle
Queued task 5 minutes Task fails with timeout
Running task 1,900 seconds Task fails with timeout
Screenshot 8 seconds to get a frame 504 with code internal
Presigned upload URL 15 minutes Storage rejects the PUT
Artifact download URL 15 minutes Request the artifact list again
Stream token 5 minutes, single use Get a new token
Dashboard session 30 days Sign in again

Retention#

Data Kept for
Task records, steps and artifacts (video, screenshots, trace, log) Your plan's retention: 7, 30 or 90 days
Uploaded APKs 7 days
Install records 30 days
Snapshots Until you delete them, or until the host holding them is lost
Device records Kept; GET /v1/devices?status=all shows the 200 most recent
Credit ledger Kept; usage rows older than 90 days are combined into one row per month
Model keys Never stored

Raising limits#

Buying any credit pack moves you to Dev (3 devices). The Team pack gives 5 devices for 30 days. For more, contact hello@akaphone.com about an Enterprise plan.