401 on every call | The token is missing, deleted, or not exported in the shell that runs your code. | Check echo $OCPPLAB_TOKEN, or generate a new token in Settings → SDK tokens. |
403 admin role required | The operation needs an organization admin. | Use a token generated by an admin. |
404 for an id you know exists | The id belongs to another organization. | Use a token from the organization that owns it. |
404 from commands.getStatus right after sending a command | The charger has not received the command yet. | Keep polling. See Long-running operations. |
409 when you create a location or EVSE | An object with that uid already exists, possibly in another location. The message names the owner. | Use a unique uid. |
422 | The request body does not match the schema. The response lists each invalid field. | Fix the fields named in detail. |
429 | Too many requests per minute for your organization (eMSP routes) or your user (MCP). | Wait for the number of seconds in Retry-After. |
A deployment’s outcome is stuck | The charger cannot reach your CSMS, or the CSMS rejected its boot. | Read the hint from deploymentRuntimeOps.status, then call deploymentRuntimeOps.diagnostics and read verdict and notes. Check ws_url and that your CSMS accepts the identity. |
startSession ends rejected | Your CSMS did not accept the id tag. | Use an id tag your CSMS authorizes. |
5xx | Server-side failure. Details stay in server logs, never in the response. | Retry later. If it persists, contact support with the time of the call. |