Aurabase Logo
aurabasedocs
docs›Edge Functions›Limits and quotas

Limits and quotas

The numbers you need before you design a function, and the known gaps of the current platform.

5 min read·Level reference·Revised on Oct 12, 2026
This English text was generated automatically from the French original and has not been reviewed yet.
#
Function

1. A function

LimitValueWhere it comes from
Name1 to 64 characters among a-z, A-Z, 0-9, _, -Enforced at deploy
Source size20 MBEnforced at deploy
Runtimesdeno (TypeScript or JavaScript) and wasm
Memory16 to 1024 MB, default 128permissions.memory_mb
Duration1 to 300 s, default 30permissions.timeout_secs
Outbound networkOpen by defaultpermissions.allow_net: when not empty, only the listed hosts are reachable

A value outside the bounds is refused with 400; it is never clamped silently. Real answer for timeout_secs: 0: permissions.timeout_secs doit être compris entre 1 et 300 secondes.

Change permissions without redeploying:

terminalbash
curl -X PATCH "$AURA_URL/v1/functions/report" \
  -H "apikey: $AURA_SERVICE_ROLE_KEY" -H "Content-Type: application/json" \
  -d '{"permissions":{"timeout_secs":120}}'

Only the fields you send change.

#
Call

2. A call

LimitValueSource
Request bodyAbout 256 KiBMeasured: 260 KB passed, 300 KB failed with 503
Response bodyAbout 256 KiBMeasured: 250 KB passed; 300 KB returned nothing within 50 s
State between callsNoneEvery call runs in a new isolated V8 worker
RegionsOneNo region selection

The message that crosses the platform is limited to 1 MiB and each byte of a request body counts four times, so a body above about 256 KiB is rejected with 503 SERVICE_UNAVAILABLE. The SDK reports it as a FunctionsRelayError, which is misleading: retrying cannot help. A response above the same size did not come back at all in our test. Keep requests and responses below 250 KB and send larger data through Storage.

#
Rate

3. Rate and plan quotas

Invocation rate, per client IP:

ProfileValue
Burst15 calls
Sustained1 call per second

In a real run of 30 quick calls, 15 returned 200 and 15 returned 429. A 429 carries x-ratelimit-* and retry-after headers, and the SDK exposes the delay as error.retryAfter.

Monthly quotas per plan, from the platform's plan table:

PlanInvocationsTotal duration
Free100,0006,000,000 ms (100 min)
Pro1,000,00060,000,000 ms (1,000 min)
Team10,000,000600,000,000 ms (10,000 min)
Enterprise100,000,0006,000,000,000 ms (100,000 min)

On the Free plan the limit is hard: a call beyond it is refused with 403 QUOTA_EXCEEDED. On paid plans the table is the monthly allowance, and what happens beyond it depends on your subscription's overage setting. A call is counted once your function has answered, whatever its status. A call that fails before the function answers is not counted. Jobs and cron firings count as invocations too.

#
Background

4. Jobs, cron and alerts

LimitValue
Job attempts3 by default, set per job with maxAttempts
Delay between attempts5 s, fixed
Parallel jobs per service instance8 by default
Running lease450 s, then the job is reclaimed
Finished jobs kept14 days by default
listJobs page1 to 500, default 50
Cron schedule5 or 6 fields, UTC, no aliases
Alert checkEvery 60 s

These job values are service settings: JOB_MAX_RETRIES, JOB_RETRY_DELAY_SECS, WORKER_CONCURRENCY, JOB_RUNNING_LEASE_SECS and JOB_RETENTION_DAYS. Ask your platform operator for the values of a managed deployment.

#
Gaps

5. Known gaps

  • No access to a function's own logs. What a function writes with console.log or console.error stays in the runtime's logs, which only the platform operator can read. aura functions logs shows requests (method, path, status, duration, request id), not that output. Return the information you need in the response, or send it to your own logging service.
  • No request id inside the function. The identifier of a call is not forwarded to the function.
  • No versions or rollback. Deploying replaces the code. Keep the previous version in your repository.
  • No streaming. The whole response is buffered before it reaches the SDK.
  • An empty allow_net restricts nothing. The network is open by default; list your hosts to restrict it.
  • Local emulation is partial. aura functions serve runs your file with Deno but does not reproduce the platform route, headers or limits.
Last updated · Oct 12, 2026