Limits and timeouts¶
Poly enforces two different kinds of limits. Do not debug a 429 as a timeout, or a Job MAX_EXECUTION_TIME_REACHED as a killed server function.
Usage / rate limits (your tenant’s limit tier): how many functions you may own, and how many API / server / variable / chat calls per day or per minute. Over the cap → HTTP 429.
Execution time / resources: how long one server function run may execute on Knative, plus a separate Job wait budget.
This page does not publish free-tier CPU, memory, or time numbers. For SKUs and what a tier includes, see PolyAPI pricing.
Usage and rate limits¶
Your tenant is assigned a limit tier. Numeric caps that are unset generally mean no check (unlimited) for that field.
Typical caps:
maxFunctions— inventory (API functions, server/client functions, webhooks, and some related resources). Create is rejected when you are over.Function calls per day
API function calls per minute vs server function calls per minute (separate buckets)
Variable calls per day
Chat questions per day
Exceeding a call cap returns HTTP 429 (FUNCTION_CALLS_LIMIT_REACHED).
Client-only work (no server function) is not billed as a server execution. Other resources you touch (API functions, Vari, Tabi, …) still count against the tier. See pricing rather than inventing meters here.
Server function execution limits¶
Each server function run has a Knative request timeout (seconds):
timeoutSeconds = function.limitTime
OR tier.serverFunctionLimitTime
OR 60
limitTime is per function, in seconds. The 60-second value is the platform default when neither the function nor the tier sets a time.
CPU and memory limits on the container come from the tenant tier when those tier fields are set (millicores and MiB). This page does not list the numbers.
alwaysOn keeps at least one warm pod (never scale below 1). It does not change how long a single execution may run. You can set both limitTime and alwaysOn. alwaysOn is a separate add-on (pricePerAlwaysOnFunction).
The execute HTTP client also has a 30 minute timeout. That timeout cancels only the waiting HTTP client. The Knative server function may keep running after the client gives up.
Job limits¶
Jobs wrap one or more server function calls. Defaults (instance → tenant → environment overlays):
Field |
Default |
Unit |
|---|---|---|
|
10 |
minutes (Job wait budget) |
|
5 |
minutes (floor for schedules) |
Warning
A Job can show MAX_EXECUTION_TIME_REACHED (default 10 minutes) while the server function keeps running until its own Knative limitTime (and/or until logs stop). The Job timeout is a wait race. It does not cancel the server function.
Tenants cannot raise maxExecutionTime in Canopy themselves. Contact support@polyapi.io.
Who sets what¶
Knob |
Who |
|---|---|
Limit tier on the tenant |
Poly ops |
Server function |
You, on the function (API / deploy config) |
Jobs |
Support (not self-serve in Canopy) |
Troubleshooting¶
Symptom |
Likely limit |
|---|---|
HTTP 429 on execute |
Day or per-minute call cap, not a timeout |
Cannot create another function |
|
Server function dies around 60 seconds |
No |
Job failed ~10 min; logs still going |
Job wait budget vs server function hard timeout |
|
30-minute HTTP client timeout; the function may still be running |
Related: Server Functions, Jobs, Usage and billing.