socket.help

Limits, rate limits and error responses

socket.help plan allowances, rate limits, request sizes and retention, plus the JSON error format, status codes and how to handle Retry-After on 429 and 503.

Updated 27 October 2026

How limits work

Every hosted request counts against the caller’s plan: anonymous, Free, Pro or Team. Account limits are shared by all API keys and members of a workspace. Anonymous limits are keyed to a hashed IP address. Browser-local tools on the website run on your device and use no hosted allowance.

Call GET /api/plans for all plan allowances and GET /api/usage for your current plan, its limits and today’s hosted runs. Daily run counters reset at 00:00 UTC.

Plan allowances
AllowanceWithout an accountFreeProTeam
Active resources520100500
Total storage32 MiB64 MiB512 MiB2 GiB
Maximum retention1 hour1 day7 days30 days
Hosted utility runs per day1001,00020,000100,000
Utility input per request64 KiB256 KiB1024 KiB1024 KiB
API requests per minute1202401,2003,000
Resource creations per minute102060120
File size per upload10 MiB10 MiB10 MiB10 MiB
Persistent leasesNoNoYesYes

Request and resource limits

These limits apply regardless of plan unless the table says otherwise. The installation can also reach total capacity, in which case creation returns 503.

Fixed limits
LimitValue
JSON request body for most /api/ endpoints100 KiB
Utility run request body16 MiB, with files up to 10 MiB combined
Webhook request body100 KiB
Webhook inbox history100 requests or 1 MiB anonymously; 1,000 requests or 10 MiB with an account
File upload10 MiB, nonempty
Downloads per fileUp to 100 anonymously, up to 1,000 with an account
Mock API configuration1 to 20 routes, 80 KiB total
Mock MCP server configuration1 to 10 tools, 80 KiB total
Platform MCP request body16 MiB; four concurrent requests
Public endpoint rate (each webhook inbox, mock API and mock MCP server)120 requests per minute
Sign-in and registration attempts10 per 15 minutes per IP address

Error format

Errors are JSON objects with an error message. Most API errors also include requestId. Every response carries an X-Request-Id header, so keep that value when you report a failed call. The platform MCP endpoint returns JSON-RPC errors instead.

Error body
HTTP/1.1 429 Too Many Requests
Retry-After: 37
X-Request-Id: 1e3e28f5-fb64-474f-845f-b06c17f52eef

{"error":"Request rate limit exceeded.","requestId":"1e3e28f5-fb64-474f-845f-b06c17f52eef"}

Status codes

Read each endpoint’s schema in /docs/reference/ for its exact responses. These are the codes you will meet most often.

Common status codes
StatusMeaningWhat to do
200, 201, 204Success, created, or done with no bodyContinue.
304Inbox history unchanged since your ETagKeep the cached history.
400Invalid body, option, visibility, ttlSeconds or maxDownloadsFix the request using the error message.
401Missing, invalid, expired or revoked credentialCheck the API key or sign in.
403Scope, role or Origin not allowed, or persistent requested without a paid planUse a key with the right scope; call from a server, not a third-party page.
404Unknown, expired or inaccessible resource, or a missing access tokenCheck the ID, the token and whether the resource expired.
408A utility run timed outReduce the input or try again later.
409Renewal past the maximum lifetime, key or invitation limit reachedCreate a new resource, or revoke unused keys.
413Body or input exceeds the allowanceSend less data.
429Rate limit, daily run allowance, resource quota or full inboxWait for Retry-After when present; otherwise free capacity first.
503Processors, file transfers or capacity busyRetry after the Retry-After seconds.

Handling 429 and 503

Rate limits use one-minute windows. A 429 from a rate limit includes Retry-After in seconds until the window resets. The daily run limit returns 429 with Retry-After set to the seconds until 00:00 UTC.

Some 429 responses have no Retry-After because waiting will not help: a full webhook inbox, the active resource limit or the storage allowance. Delete resources or create a new inbox instead.

When hosted tool processors are busy the API returns 503 with Retry-After: 2. When file transfers are busy it returns 503 with Retry-After: 5.

  • Retry GET requests and utility runs after Retry-After.
  • Do not blindly retry creation requests; check whether the first one succeeded.
  • The SDK exposes retryAfter on SocketError. The SDK and CLI never retry mutations themselves.

Retention and cleanup

Resources expire one hour after creation unless you set ttlSeconds or renew them within your plan’s maximum retention. Expired resources stop working immediately, and cleanup removes their data and releases quota at least once per minute. Expired data cannot be restored.

Utility runs keep no execution history: inputs and results are not stored.

Frequently asked questions

When do hosted run counters reset?

Daily hosted run counters reset at 00:00 UTC. The usage object returned by each run includes resetsAt.

Do failed utility runs count against my daily allowance?

Requests rejected during validation, for example an unknown option or oversized input, are rejected before a run is counted. A run that fails during processing is released from the count.

Are limits per API key or per workspace?

Per workspace. All keys and members of a workspace share its allowances. Anonymous callers are grouped by a hashed IP address.

Why do I get 429 when my inbox is not receiving much traffic?

An inbox stops capturing when its history is full: 100 requests or 1 MiB anonymously, 1,000 requests or 10 MiB with an account. Existing history stays readable. Create another inbox or delete this one.