Errors and retries
Errors
A 4xx or 5xx response raises an error that carries the status code and the response body. Each status has its own class, so you can catch only what you expect.
All of them extend OcpplabSDKError (TypeScript) or ApiError (Python). A request that runs out of time raises OcpplabSDKTimeoutError in TypeScript and httpx.TimeoutException in Python.
Retries
The SDKs retry a failed request up to 2 times, with exponential backoff, when the response is 408, 429 or 5xx. Change it per client (maxRetries) or per request (max_retries in Python’s request_options).
What is never resent
A POST that could act twice is sent once, even after a 503. If the response was lost, the first attempt may already have created the location or started the session, so a retry would do it again. This covers creates, commands and other actions.
Before you retry one of these yourself, check whether the first attempt went through:
- For deployments, call
evcharger.deploymentRuntimeOps.status. - For commands, list recent ones with
evcharger.commands.listResults.
Operations that require an Idempotency-Key header, such as booking.locations.create, keep their retries: the API returns the first result for a repeated key.