Skip to main content

Limits

The values below are the values on proxium.tech today. A limit of 0 means no limit.

Request and response size​

LimitValueAt the limitSource
Request body32 MiB413, with a plain-text body.src/server.rs::max_body_bytes
Provider answer, buffered64 MiBThe attempt fails. proxium moves to the next entry of the plan.src/upstream.rs::read_capped
Stored answer body32 K characters, where 1 K is 1,024proxium cuts the stored copy. The caller gets the full answer.src/types.rs::BODY_MAX_CHARS
Model id on image, speech and video calls200 characters of A-Z a-z 0-9 . _ - :400 bad_model.src/server.rs::model_id_is_urlsafe

Time​

LimitValueAt the limitSource
x-proxium-timeout-msAt most 120000 msproxium lowers a larger value to this value. It ignores 0, a negative value and text. The next row uses the lowered value.src/engine.rs::deadline_from_headers
Whole failover plan, with x-proxium-timeout-msThe header value502 upstream_failed, with client deadline exceeded in the message.src/engine.rs
Whole failover plan, without the headerNo limitEach attempt keeps its own limit.src/engine.rs
One buffered attempt, not streamed120 sThe attempt fails as a timeout. proxium moves to the next entry.src/upstream.rs::UpstreamClient::new
Connection to a provider10 sThe attempt fails. proxium moves to the next entry.src/upstream.rs
Gap between two reads of a stream300 sproxium ends the stream. The timer also runs while the provider prepares its first byte. A stream has no limit on its total time.src/upstream.rs::stream_read_timeout

With x-proxium-timeout-ms, the deadline covers the plan up to the first byte of a stream. After the first byte, only the gap between reads applies.

Failover and retry​

LimitValueAt the limitSource
Entries in one failover plan4proxium stops and answers 502 upstream_failed.src/chain.rs::MAX_FAILOVER_CHAIN
Extra tries of one entry1Only after a 5xx, 408, 429 or "warming" answer.src/engine.rs::EngineConfig
Wait for a provider's Retry-After30 s at mostproxium waits the smaller of Retry-After and 30 s, then tries again.src/engine.rs::EngineConfig
Failures that open a circuit breaker5 inside 10 minutesproxium skips the provider.src/circuit.rs
Open time after a transient failure30 sproxium allows a trial call.src/circuit.rs::TRANSIENT_RESET_MS
Open time after a rejected credential or an exhausted quota30 minutesproxium allows a trial call.src/circuit.rs::QUOTA_RESET_MS
Trial successes that close a breaker2The breaker closes.src/circuit.rs::PROBE_SUCCESSES
Failover price guardNot activeFailover can reach a model at any price.src/engine.rs::price_guard

Spend and rate​

LimitValueAt the limitSource
Key calls per hour0 on a key that the console creates429 tenant_capped, retry-after: 60.src/accounts.rs::mint_team_key
Key cost per day0 on a key that the console creates. Not enforced on proxium.tech.None.src/server.rs::budget_limits
Key requests and tokens per minute0 on a key that the console creates429 tenant_capped, retry-after: 60.src/store_pg.rs::PgKeyStore::resolve
Sender calls per hourYou set it. 0 by default.429 source_capped, retry-after: 60.src/source_limits.rs
Sender dollars per dayYou set it. 0 by default.429 source_capped, retry-after: 60.src/source_limits.rs
Monthly cap of the projectNone during the open betaNone.src/credits.rs

The calls window is a rolling 60 minutes. The cost window is a rolling 24 hours, in hourly buckets. The rate windows are a rolling 60 seconds.

Names and lists​

LimitValueAt the limitSource
Key name on the Keys screen60 charactersproxium drops a longer name. The key is unnamed.src/accounts.rs::mint_team_key
Endpoint name60 characters400 bad_name.src/tenant_api_endpoints.rs::create
Vendor name on the Providers screen1 to 40 characters of a-z 0-9 -, with no - at either end400 bad_name.src/tenant_endpoints.rs::MAX_NAME
Models of one vendor200400 too_many_models.src/tenant_endpoints.rs::MAX_MODELS

How soon a change applies​

ChangeValueSource
A routing, sender-ceiling or cache-charge change in the consoleAt once on the server that saved it, and within 30 s on every serversrc/main.rs::spawn_config_refresh
The monthly spend that the credit check readsRefreshed every 30 ssrc/main.rs::spawn_config_refresh
The model list of each vendorRead again every 21600 ssrc/model_refresh.rs::DEFAULT_REFRESH_SECS