Reliability
Timeouts, retries and idempotency, what each plan offers for availability, and how to diagnose an incident.
Retries and idempotency
Networks fail. Retry safe requests (reads) freely and writes only with an idempotency key, so a write the server already did isn't done twice.
- The SDKs retry failed requests with backoff and give every write one
Idempotency-Keyfrom its first attempt, so a retried write is applied once. - From your own HTTP client, send
Idempotency-Key: <unique id per operation>on writes you may retry. A retry while the first is still running gets409 IDEMPOTENCY_IN_PROGRESS: wait and retry with the same key. - The server keeps a successful write's answer for an hour and returns it (with
X-Idempotency-Replayed: 1) to a retry with the same key; the same key with a different body gets409 IDEMPOTENCY_PAYLOAD_MISMATCH. Failed writes and answers over 256 KB are not kept, so their retry runs again. Answers that carry credentials (sign-in tokens, a new API key, a client secret) are kept for two minutes only: long enough for retries. - Honour
Retry-Afteron429and503; back off exponentially otherwise. - Function triggers retry failed runs and keep the ones that keep failing in a dead-letter queue (Event triggers); make handlers safe to run twice.
Timeouts
| Where | Limit | Set it in |
|---|---|---|
| A SQL statement | Your statement timeout | Pooling and timeouts |
| A function run | The function's timeout, up to your plan's maximum | Function memory, timeout and limits |
| A workflow step's sleep | Plan maximum | Durable workflows |
Availability by plan
| Free | Pro | Ultra | Team | Enterprise | |
|---|---|---|---|---|---|
| Uptime SLA | Best effort | Best effort | 99.5 | 99.9 | 99.99 |
| High-availability failover | — | — | — | ✓ | ✓ |
| Read replicas | — | — | Addon | Native | Native |
| Isolated compute cluster | — | — | — | ✓ | ✓ |
| Days without requests before the database is paused (0 = never); the next request resumes it | 7 days | Never | Never | Never | Never |
| Support channel | Community | Priority | Dedicated | Tam |
Free databases pause after 7 days without requests and start again on the next one, which then takes a few seconds. Paid plans don't pause unless you turn idle pause on.
When something goes wrong
Read the error
The status code and
detail.codeusually say what happened — see the table in HTTP API.Find the request
Search the
X-Request-IDortrace_idin Logs & Audit to see where it stopped.Check what changed
A recent deploy, migration or policy change? Version history: see, undo and restore changes shows it and can roll it back.
Check limits
Plan & usage shows whether a quota ran out.
Contact support
Include the trace id, the time and your project URL.