Reboot the charger
post/v1/virtual-chargers/{charger_id}/reboot
Requires an API key
A power cycle: the charger restarts and boots again at the same target (BootNotification). Returns once it stopped; read the screen for its reconnection. Errors: 409 control_refused, 409 virtual_charger_ended, 503 bench_charger_unavailable. See Errors and statuses.
Path parameters
- charger_idstringRequired
Returns · 200
- idstringRequired
- workspace_idstringRequired
- statusenumRequiredconnecting, then online; refused while the target refuses the charger (it keeps retrying); connect_failed when it never connected within 2 minutes; releasing while the charger is restored (EV unplugged, route removed, factory reset after a routed lease); ended.One of
connecting,online,refused,connect_failed,releasing,ended - chargerVirtualChargerHardwareRequired
Child attributes
- idstringRequiredThe bench charger leased (bench-<n>).
- evseinteger | nullRequired
- connectorsintegerRequired
- ocpp_identitystring | nullRequiredThe identity it connects as: ivora-bench-<n> (global), p<project>-ivora-bench (project URL, domain) or the caller's, masked (custom URL).
- leaseLeaseRecordRequired
Child attributes
- statusenumRequiredreleasing: the simulated EV is being unplugged before the charger is freed.One of
active,releasing,released - idle_expires_atstring | nullRequiredWhile active: when the idle sweep ends the session unless it is read or changed before.
- expires_atstring | nullWhile active: the lease's maximum age (30 minutes by default), after which the sweep stops, settles and releases however active the session is.
- released_atstring | nullRequired
- release_reasonstring | nullRequiredsettled, canceled, idle, max_age, operator, payment_canceled or stop_timeout.
- targetTargetRecordRequired
Child attributes
- idstringRequiredglobal, project_url, domain:<id> or custom_url.
- kindenumRequiredOne of
global,project_url,domain,custom_url - tenant_idinteger | nullRequiredThe project whose address was used (null for global).
- urlstring | nullRequiredThe address used, without credentials; a custom URL's identity is masked.
- hoststring | nullRequired
- resolved_ipstring | nullRequiredThe address the connection was pinned to.
- portinteger | nullRequired
- station_idinteger | nullRequiredproject_url and domain: the bench's station in the project (p<project>-ivora-bench).
- identitystring | nullRequiredThe OCPP identity used, masked for custom URLs.
- passwordstring | nullRequiredAlways masked (••••••••) when one was supplied; null otherwise.
- statusenum | nullRequiredconnecting until the charger connected at the target; failed with error; resetting while the charger is factory reset after the lease; restored once it is back on its default.One of
default,connecting,connected,failed,resetting,restored - errorstring | nullRequiredWhy the connection failed: tcp, tls, http <status> or target_timeout.
- connected_atstring | nullRequired
- warningstring | nullA custom ws:// URL: the identity and password travel unencrypted.
- powerVirtualPowerRecordRequired
Child attributes
- max_power_kwstringRequiredDecimal kW as requested (one decimal).
- phasesenumRequiredOne of
1,3 - ampsnumberRequiredThe simulated EV's maximum current per phase.
- voltage_vintegerRequiredNominal phase voltage of the simulation.
- applied_asstringRequiredEVerest's car simulator draws at most this current; the charger's own limit and any charging profile the target system sets can lower it.
- displayobject | nullRequiredWhat the charger's screen shows; null once the lease ended.
Child attributes
- connectionScreenConnectionRequired
Child attributes
- stateenumRequiredconnecting until the target accepted the charger; refused with reason (http 401, tls..., target_timeout) while the charger retries; offline when the charger cannot be read; released once the lease ended (reason: why).One of
connecting,online,refused,offline,released - reasonstring | nullRequired
- charger_ocppstring | nullRequiredThe charger's own OCPP connection status (EVerest), e.g. connected.
- connectorsarray of ScreenConnectorRequired
Child attributes
- connector_idintegerRequired
- statusstring | nullRequiredThe OCPP 1.6 status: the charger's last StatusNotification (status_source status_notification, read by the relay), else the one its EVSE state implies (status_source evse_state).
- status_sourceenum | nullRequiredOne of
status_notification,evse_state - error_codestring | nullRequired
- evse_statestring | nullRequiredEVerest's EVSE state: Unplugged, AuthRequired, Charging, Finished...
- pluggedboolean | nullRequired
- faultedbooleanRequired
- transactionobject | nullRequiredFrom the relay's reading of StartTransaction / StopTransaction; null without a relay.
Child attributes
- idintegerRequiredThe transactionId the target system gave in StartTransaction.conf.
- activebooleanRequired
- started_atstring | nullRequired
- stopped_atstring | nullRequired
- stop_reasonstring | nullRequiredThe StopTransaction reason the charger sent: Local (stop button), EVDisconnected (unplug), Remote...
- id_tag_statusstring | nullRequiredidTagInfo.status the target answered (Accepted, Invalid...).
- id_tagstring | nullThe card that started it: in full when this lease's user typed it, else its last 4 characters behind ****.
- parent_id_tagstring | nullThe parentIdTag the target answered in StartTransaction.conf, masked.
- started_byenum | nullremote_start: the target's RemoteStartTransaction for the same card; local: a card at the reader.One of
local,remote_start - stop_id_tagstring | nullThe card in the StopTransaction (a card tapped to stop it), shown as id_tag.
- stopped_byenum | nullWhich card stopped it: the same card again, or another one with the same parentIdTag.One of
same_tag,parent_id_tag - meter_start_whinteger | nullRequired
- meter_stop_whinteger | nullRequired
- authorizationobject | nullThe latest card result, as the charger's screen shows it.
Child attributes
- atstringRequired
- sourceenumRequiredThe message the result came in: Authorize (a card at the reader, or a remote start with AuthorizeRemoteTxRequests), StartTransaction.conf, or a StopTransaction by the transaction's own card.One of
Authorize,StartTransaction,StopTransaction - connector_idinteger | nullRequired
- id_tagstring | nullRequiredIn full when this lease's user typed the card, else its last 4 characters behind ****.
- typedbooleanRequiredThe card is one this lease's user typed (POST .../rfid).
- statusstring | nullRequiredidTagInfo.status: Accepted, Blocked, Expired, Invalid or ConcurrentTx (CallError: the target answered an error); null for a stop by the transaction's own card (a charger asks nothing).
- expiry_datestring | nullRequired
- parent_id_tagstring | nullRequiredidTagInfo.parentIdTag, masked.
- outcomeenum | nullRequiredawaiting_plug_in: Accepted before the EV was plugged in (plug in before plug_in_by); plug_in_timed_out; started; stopping / stopped: a card with the transaction's parentIdTag, or the same card, stops it; not_owner: Accepted, but another card's transaction is running and the parentIdTag differs, so nothing stops; refused: not Accepted.One of
awaiting_plug_in,plug_in_timed_out,started,stopping,stopped,not_owner,refused - plug_in_bystring | nullRequiredFor awaiting_plug_in: the end of the charger's ConnectionTimeOut.
- authorizationsarray of ScreenAuthorizationThe lease's card results, newest last (at most 10).Default
[]Child attributes
- atstringRequired
- sourceenumRequiredThe message the result came in: Authorize (a card at the reader, or a remote start with AuthorizeRemoteTxRequests), StartTransaction.conf, or a StopTransaction by the transaction's own card.One of
Authorize,StartTransaction,StopTransaction - connector_idinteger | nullRequired
- id_tagstring | nullRequiredIn full when this lease's user typed the card, else its last 4 characters behind ****.
- typedbooleanRequiredThe card is one this lease's user typed (POST .../rfid).
- statusstring | nullRequiredidTagInfo.status: Accepted, Blocked, Expired, Invalid or ConcurrentTx (CallError: the target answered an error); null for a stop by the transaction's own card (a charger asks nothing).
- expiry_datestring | nullRequired
- parent_id_tagstring | nullRequiredidTagInfo.parentIdTag, masked.
- outcomeenum | nullRequiredawaiting_plug_in: Accepted before the EV was plugged in (plug in before plug_in_by); plug_in_timed_out; started; stopping / stopped: a card with the transaction's parentIdTag, or the same card, stops it; not_owner: Accepted, but another card's transaction is running and the parentIdTag differs, so nothing stops; refused: not Accepted.One of
awaiting_plug_in,plug_in_timed_out,started,stopping,stopped,not_owner,refused - plug_in_bystring | nullRequiredFor awaiting_plug_in: the end of the charger's ConnectionTimeOut.
- auth_configobjectThe charger's authorization keys as it reported or accepted them (GetConfiguration, ChangeConfiguration): ConnectionTimeOut, AuthorizeRemoteTxRequests, LocalPreAuthorize, LocalAuthorizeOffline, StopTransactionOnInvalidId, AllowOfflineTxForUnknownId.Default
{} - connection_timeout_sintegerThe ConnectionTimeOut the screen assumes for a card tapped before the EV: the charger's reported value, else the bench image's 30 s.Default
30 - power_winteger | nullRequired
- power_kwstring | nullRequired
- energy_whinteger | nullRequiredThe session's energy in Wh, from the charger (an OCPP 1.6 register unit).
- energy_kwhstring | nullRequiredenergy_wh / 1000 as decimal text.
- elapsed_secondsinteger | nullRequired
- running_costobject | nullRequiredThe running cost the target pushed by OCA California Pricing (RunningCost/FinalCost), as EVerest decoded and displays it.
Child attributes
- displayedbooleanRequiredFalse until the charger shows a RunningCost or FinalCost stamped after this session's transaction started.
- statusstring | nullRunning, or Finished after FinalCost.
- coststring | nullMajor currency units as the charger stores them (it truncates to its decimals).
- cost_minorinteger | nullThe same amount in units of 10^-cost_decimals.
- cost_decimalsinteger | null
- meter_whinteger | nullThe meter reading of the cost message, in Wh (an OCPP 1.6 register).
- timestampstring | null
- messagesarray of any | null
- running_cost_labelstring | nullShown with a running cost: a test session's, never charged by Ivora (Ivora targets), or a neutral label for a custom URL, whose system decides (see billing).
- qrobject | nullRequired
Child attributes
- urlstringRequiredThe QR / checkout URL the target pushed (credential-looking query values redacted).
- evse_idstring | integer | number | nullRequired
- pricestring | integer | number | nullRequired
- unitstring | integer | number | nullRequired
- connector_idstring | integer | number | nullRequired
- sourceenumRequiredOne of
DataTransfer,ChangeConfiguration - vendor_idstring | nullRequired
- message_idstring | nullRequired
- charger_answerstring | nullRequiredWhat the charger answered: Accepted, UnknownVendorId, UnknownMessageId, Rejected... (EVerest accepts the OCA California Pricing messages; other vendors' display messages are answered as unknown, as a charger without that adapter would).
- atstringRequired
- priceobject | nullRequired
Child attributes
- textstringRequired
- pricestring | integer | number | nullRequired
- unitstring | integer | number | nullRequired
- sourcestringRequired
- atstringRequired
- messagesarray of objectRequiredThe latest display frames the target sent (newest last), redacted: at, action (DataTransfer, ChangeConfiguration of display keys, RemoteStartTransaction, RemoteStopTransaction), vendor_id, message_id, key, data/value, status (the charger's answer), id_tag (RemoteStartTransaction; as authorizations show it). Never another configuration key.
- observedenumRequiredrelay: frames are read; unavailable: no relay on this bench (only the charger's own state and running cost); compressed: the connection is compressed.One of
relay,unavailable,compressed - charger_readablebooleanRequired
- charger_errorstring | nullRequired
- read_atstring | nullRequired
- billingVirtualBillingRequired
Child attributes
- testbooleanRequiredIvora targets: the station and its transactions are test (the bench's own station), so they are never billed. false for a custom URL: Ivora cannot mark anything in a third party's system.
- ivora_billsbooleanThe bench creates no bill, payment authorization or payment-provider call, ever.Default
false - noticestringRequiredWhat to show the user about billing.
- warningstring | nullRequiredCustom URL: that system may bill these sessions; Ivora cannot prevent it.
- controlsarray of enumRequiredThe controls available now (a refused one answers 409 control_refused with the charger's reason).
- last_errorstring | nullRequired
- created_atstringRequired
- ended_atstring | nullRequired
POST /v1/virtual-chargers/{charger_id}/reboot
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/virtual-chargers/charger_0123456789abcdef/reboot" \
-H "Authorization: Bearer $IVORA_API_KEY"Response · 200
{
"id": "id_0123456789abcdef",
"workspace_id": "workspace_0123456789abcdef",
"status": "connecting",
"charger": {
"id": "id_0123456789abcdef",
"evse": 1,
"connectors": 1,
"ocpp_identity": "string"
},
"lease": {
"status": "active",
"idle_expires_at": "2026-09-30T17:00:00Z",
"expires_at": "2026-09-30T17:00:00Z",
"released_at": "2026-09-30T17:00:00Z",
"release_reason": "string"
},
"target": {
"id": "id_0123456789abcdef",
"kind": "global",
"tenant_id": 1042,
"url": "https://app.example.com/ivora/webhooks",
"host": "string",
"resolved_ip": "string",
"port": 1,
"station_id": 1,
"identity": "string",
"password": "string",
"status": "default",
"error": "string",
"connected_at": "2026-09-30T17:00:00Z",
"warning": "string"
},
"power": {
"max_power_kw": "string",
"phases": 1,
"amps": 1.5,
"voltage_v": 1,
"applied_as": "ev_max_current"
},
"display": {
"connection": {
"state": "connecting",
"reason": "string",
"charger_ocpp": "string"
},
"connectors": [
{
"connector_id": 1,
"status": "string",
"status_source": "status_notification",
"error_code": "string",
"evse_state": "string",
"plugged": false,
"faulted": false
}
],
"transaction": {
"id": 1,
"active": false,
"started_at": "2026-09-30T17:00:00Z",
"stopped_at": "2026-09-30T17:00:00Z",
"stop_reason": "string",
"id_tag_status": "string",
"id_tag": "string",
"parent_id_tag": "string",
"started_by": "local",
"stop_id_tag": "string",
"stopped_by": "same_tag",
"meter_start_wh": 7500,
"meter_stop_wh": 7500
},
"authorization": {
"at": "string",
"source": "Authorize",
"connector_id": 1,
"id_tag": "string",
"typed": false,
"status": "string",
"expiry_date": "string",
"parent_id_tag": "string",
"outcome": "awaiting_plug_in",
"plug_in_by": "string"
},
"authorizations": [],
"auth_config": {},
"connection_timeout_s": 30,
"power_w": 1,
"power_kw": "string",
"energy_wh": 7500,
"energy_kwh": "string",
"elapsed_seconds": 1,
"running_cost": {
"displayed": false,
"status": "string",
"cost": "string",
"cost_minor": 1250,
"cost_decimals": 1,
"meter_wh": 7500,
"timestamp": "string",
"messages": [
null
]
},
"running_cost_label": "string",
"qr": {
"url": "https://app.example.com/ivora/webhooks",
"evse_id": "evse_0123456789abcdef",
"price": "string",
"unit": "string",
"connector_id": 1,
"source": "DataTransfer",
"vendor_id": "vendor_0123456789abcdef",
"message_id": "message_0123456789abcdef",
"charger_answer": "string",
"at": "string"
},
"price": {
"text": "string",
"price": "string",
"unit": "string",
"source": "string",
"at": "string"
},
"messages": [
{}
],
"observed": "relay",
"charger_readable": false,
"charger_error": "string",
"read_at": "2026-09-30T17:00:00Z"
},
"billing": {
"test": false,
"ivora_bills": false,
"notice": "string",
"warning": "string"
},
"controls": [
"plug"
],
"last_error": "string",
"created_at": "2026-09-30T17:00:00Z",
"ended_at": "2026-09-30T17:00:00Z"
}Try itproduction · api.ivoracharge.com
Paste a production api key (iv_live_…). Create keys in Developer tools. The key stays in this page's memory, is sent only to https://api.ivoracharge.com and clears when you reload. Test keys are refused.
POST is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.