Restart a charger

Restart a charger remotely to clear a stuck session or apply a setting, and confirm it came back.

On this page

A remote restart fixes a surprising share of field problems: a session that will not end, a setting that only applies after a reboot, a charger in a state nobody can explain. It is one request.

POST/v1/charging-stations/$CHARGER/commandsbash
curl -X POST "$API/charging-stations/$CHARGER/commands" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"type": "reset", "kind": "Soft"}'
200Response
{
  "id": "b2b9c1d4-7e0a-4f5e-9d3b-1a2c3d4e5f60",
  "commandType": "reset",
  "chargingStationId": "9a7c0e12-3b4d-4e5f-8a6b-7c8d9e0f1a2b",
  "evseId": null,
  "issuedBy": { "kind": "apiKey", "apiKeyId": "a1b2c3d4" },
  "status": "sent",
  "createdAt": "2026-10-01T10:00:00Z",
  "sentAt": "2026-10-01T10:00:00Z",
  "resolvedAt": null,
  "expiresAt": "2026-10-01T10:05:00Z",
  "request": { "type": "reset", "kind": "Soft" },
  "result": null,
  "failureReason": null,
  "supersededBy": null
}

The answer is the command, created before the charger has said anything. Follow it as Sending commands describes, and keep the Idempotency-Key: retrying with the same key returns this command instead of restarting the charger twice.

Choose how hard to restart

kindWhat happens
SoftThe charger ends running sessions properly, then restarts its software
HardThe charger restarts at once, without ending sessions first

Start with Soft. Sessions end cleanly and are reported, and the charger comes back faster. Keep Hard for a charger that is too unresponsive to shut down cleanly: it can leave a session with no recorded end.

Choose when to restart

Some chargers also take schedule, which decides when the restart happens:

scheduleWhat happens
immediateRestart now. The default
onIdleWait until no session is running, then restart
immediateAndResumeRestart now, then pick the running session back up

Not supported on every charger. See which. Chargers decide either by kind or by schedule, so send both and each charger uses the one it understands.

Restart one outlet

Add evseId to restart one outlet and leave the others running. Not supported on every charger. See which.

Confirm it came back

Once the command settles, status is accepted or rejected, and result.status gives the charger's own answer:

result.statusMeaning
AcceptedRestarting now
ScheduledAccepted, and restarting as soon as it can
RejectedThe charger refused

Then the charger goes offline, restarts and reconnects. Its lastBootAt on the charger moves to the time it came back, which is your proof the restart happened. Watch for chargingStationConnected in live updates rather than polling.

If the command ends failed with failureReason: "timed_out", the charger may still have restarted: it often reboots before it gets the chance to answer. Do not send another restart. Wait for the charger to reconnect and compare lastBootAt with when you sent the command.

Reach for something else when

  • A setting did not take effect. Restart only if the change answered RebootRequired. A restart does not make a charger accept a value it rejected. See Read and change charger settings.

  • An outlet is out of service. That survives restarts on purpose. Bring it back with Operative.

  • A cable is stuck. Release it first. A restart may free it too, but it also ends every other session on the charger.

  • The charger was removed from Flowion. If disabledAt is set on the charger, it can no longer connect, so no command reaches it.

Endpoints

Commands · Charging stations

In the API reference