List the workspace's virtual chargers

get/v1/virtual-chargers
Requires an API key

Newest first, without their screens (read one for its display).

Query parameters

  • limitinteger
    Default 50 · Minimum 1 · Maximum 100

Returns · 200

  • dataarray of VirtualChargerRecordRequired
    Child attributes
    • idstringRequired
    • workspace_idstringRequired
    • statusenumRequired
      connecting, 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
      • idstringRequired
        The bench charger leased (bench-<n>).
      • evseinteger | nullRequired
      • connectorsintegerRequired
      • ocpp_identitystring | nullRequired
        The 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
      • statusenumRequired
        releasing: the simulated EV is being unplugged before the charger is freed.
        One of active, releasing, released
      • idle_expires_atstring | nullRequired
        While active: when the idle sweep ends the session unless it is read or changed before.
      • expires_atstring | null
        While 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 | nullRequired
        settled, canceled, idle, max_age, operator, payment_canceled or stop_timeout.
    • targetTargetRecordRequired
      Child attributes
      • idstringRequired
        global, project_url, domain:<id> or custom_url.
      • kindenumRequired
        One of global, project_url, domain, custom_url
      • tenant_idinteger | nullRequired
        The project whose address was used (null for global).
      • urlstring | nullRequired
        The address used, without credentials; a custom URL's identity is masked.
      • hoststring | nullRequired
      • resolved_ipstring | nullRequired
        The address the connection was pinned to.
      • portinteger | nullRequired
      • station_idinteger | nullRequired
        project_url and domain: the bench's station in the project (p<project>-ivora-bench).
      • identitystring | nullRequired
        The OCPP identity used, masked for custom URLs.
      • passwordstring | nullRequired
        Always masked (••••••••) when one was supplied; null otherwise.
      • statusenum | nullRequired
        connecting 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 | nullRequired
        Why the connection failed: tcp, tls, http <status> or target_timeout.
      • connected_atstring | nullRequired
      • warningstring | null
        A custom ws:// URL: the identity and password travel unencrypted.
    • powerVirtualPowerRecordRequired
      Child attributes
      • max_power_kwstringRequired
        Decimal kW as requested (one decimal).
      • phasesenumRequired
        One of 1, 3
      • ampsnumberRequired
        The simulated EV's maximum current per phase.
      • voltage_vintegerRequired
        Nominal phase voltage of the simulation.
      • applied_asstringRequired
        EVerest'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 | nullRequired
      What the charger's screen shows; null once the lease ended.
      Child attributes
      • connectionScreenConnectionRequired
        Child attributes
        • stateenumRequired
          connecting 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 | nullRequired
          The charger's own OCPP connection status (EVerest), e.g. connected.
      • connectorsarray of ScreenConnectorRequired
        Child attributes
        • connector_idintegerRequired
        • statusstring | nullRequired
          The 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 | nullRequired
          One of status_notification, evse_state
        • error_codestring | nullRequired
        • evse_statestring | nullRequired
          EVerest's EVSE state: Unplugged, AuthRequired, Charging, Finished...
        • pluggedboolean | nullRequired
        • faultedbooleanRequired
      • transactionobject | nullRequired
        From the relay's reading of StartTransaction / StopTransaction; null without a relay.
        Child attributes
        • idintegerRequired
          The transactionId the target system gave in StartTransaction.conf.
        • activebooleanRequired
        • started_atstring | nullRequired
        • stopped_atstring | nullRequired
        • stop_reasonstring | nullRequired
          The StopTransaction reason the charger sent: Local (stop button), EVDisconnected (unplug), Remote...
        • id_tag_statusstring | nullRequired
          idTagInfo.status the target answered (Accepted, Invalid...).
        • id_tagstring | null
          The card that started it: in full when this lease's user typed it, else its last 4 characters behind ****.
        • parent_id_tagstring | null
          The parentIdTag the target answered in StartTransaction.conf, masked.
        • started_byenum | null
          remote_start: the target's RemoteStartTransaction for the same card; local: a card at the reader.
          One of local, remote_start
        • stop_id_tagstring | null
          The card in the StopTransaction (a card tapped to stop it), shown as id_tag.
        • stopped_byenum | null
          Which 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 | null
        The latest card result, as the charger's screen shows it.
        Child attributes
        • atstringRequired
        • sourceenumRequired
          The 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 | nullRequired
          In full when this lease's user typed the card, else its last 4 characters behind ****.
        • typedbooleanRequired
          The card is one this lease's user typed (POST .../rfid).
        • statusstring | nullRequired
          idTagInfo.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 | nullRequired
          idTagInfo.parentIdTag, masked.
        • outcomeenum | nullRequired
          awaiting_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 | nullRequired
          For awaiting_plug_in: the end of the charger's ConnectionTimeOut.
      • authorizationsarray of ScreenAuthorization
        The lease's card results, newest last (at most 10).
        Default []
        Child attributes
        • atstringRequired
        • sourceenumRequired
          The 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 | nullRequired
          In full when this lease's user typed the card, else its last 4 characters behind ****.
        • typedbooleanRequired
          The card is one this lease's user typed (POST .../rfid).
        • statusstring | nullRequired
          idTagInfo.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 | nullRequired
          idTagInfo.parentIdTag, masked.
        • outcomeenum | nullRequired
          awaiting_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 | nullRequired
          For awaiting_plug_in: the end of the charger's ConnectionTimeOut.
      • auth_configobject
        The charger's authorization keys as it reported or accepted them (GetConfiguration, ChangeConfiguration): ConnectionTimeOut, AuthorizeRemoteTxRequests, LocalPreAuthorize, LocalAuthorizeOffline, StopTransactionOnInvalidId, AllowOfflineTxForUnknownId.
        Default {}
      • connection_timeout_sinteger
        The 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 | nullRequired
        The session's energy in Wh, from the charger (an OCPP 1.6 register unit).
      • energy_kwhstring | nullRequired
        energy_wh / 1000 as decimal text.
      • elapsed_secondsinteger | nullRequired
      • running_costobject | nullRequired
        The running cost the target pushed by OCA California Pricing (RunningCost/FinalCost), as EVerest decoded and displays it.
        Child attributes
        • displayedbooleanRequired
          False until the charger shows a RunningCost or FinalCost stamped after this session's transaction started.
        • statusstring | null
          Running, or Finished after FinalCost.
        • coststring | null
          Major currency units as the charger stores them (it truncates to its decimals).
        • cost_minorinteger | null
          The same amount in units of 10^-cost_decimals.
        • cost_decimalsinteger | null
        • meter_whinteger | null
          The meter reading of the cost message, in Wh (an OCPP 1.6 register).
        • timestampstring | null
        • messagesarray of any | null
      • running_cost_labelstring | null
        Shown 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
        • urlstringRequired
          The 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
        • sourceenumRequired
          One of DataTransfer, ChangeConfiguration
        • vendor_idstring | nullRequired
        • message_idstring | nullRequired
        • charger_answerstring | nullRequired
          What 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 objectRequired
        The 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.
      • observedenumRequired
        relay: 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
      • testbooleanRequired
        Ivora 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_billsboolean
        The bench creates no bill, payment authorization or payment-provider call, ever.
        Default false
      • noticestringRequired
        What to show the user about billing.
      • warningstring | nullRequired
        Custom URL: that system may bill these sessions; Ivora cannot prevent it.
    • controlsarray of enumRequired
      The controls available now (a refused one answers 409 control_refused with the charger's reason).
    • last_errorstring | nullRequired
    • created_atstringRequired
    • ended_atstring | nullRequired
GET /v1/virtual-chargers
curl --fail-with-body "https://api.ivoracharge.com/v1/virtual-chargers" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200
{
  "data": [
    {
      "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": null,
            "status": null,
            "status_source": null,
            "error_code": null,
            "evse_state": null,
            "plugged": null,
            "faulted": null
          }
        ],
        "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": null,
          "price": null,
          "unit": null,
          "connector_id": 1,
          "source": "DataTransfer",
          "vendor_id": "vendor_0123456789abcdef",
          "message_id": "message_0123456789abcdef",
          "charger_answer": "string",
          "at": "string"
        },
        "price": {
          "text": "string",
          "price": null,
          "unit": null,
          "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.