> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ocpplab.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ocpplab.io/_mcp/server.

# Troubleshooting

| Symptom                                                       | Cause                                                                                              | Fix                                                                                                                                                                                      |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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](/get-started/guides/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.                                                                                                                  |

## Still stuck?

* Check the API status: `GET https://api.ocpplab.io/health/ready`.
* Contact [support@ocpplab.com](mailto:support@ocpplab.com) with the request time, the operation and the response body. Never send your token.