Show a text message on a charger screen
Synchronous desired state: stores the message and returns at once with status pending; Ivora pushes it on the next sweep and never waits for the charger. On OCPP 2.0.1 and 2.1 it is a SetDisplayMessage (priority, state, window and plain UTF8 text). OCPP 1.6 has no display message: it goes only through the charger's display adapter template when that has text messages, otherwise status unsupported with a reason and nothing is sent. Text over the adapter's per-line limit is refused with 422 message_too_long, never truncated. Plain text only: links, markup and control characters are 422. At most 10 messages per EVSE that have not ended (past ends_at). Replays with the same Idempotency-Key return the original result. Needs stations:write.
Path parameters
- tenant_idintegerRequired
- station_idintegerRequired
- evse_numberintegerRequiredOCPP EVSE number on the station, as in connectors[].evse_numberGreater than 0 · Maximum 99
Headers
- idempotency-keystringRequired
Request body
- textstringRequiredPlain text of at most 200 characters; \n starts a new line. No links, web addresses, markup or control characters (422).1–200 characters
- languagestring | nullRFC 5646 tag, for example en or en-US. Omit when unknown.Up to 8 characters
- formatstringPlain text is the only format.Default
"plain" - starts_atstring | nullWhen the message may start showing (ISO 8601 with an offset). Omit to start now.
- ends_atstring | nullWhen the charger stops showing it (after starts_at and in the future). Omit to show until deleted.
- priorityenumurgent is shown in front of other messages (OCPP AlwaysFront); normal cycles with them (NormalCycle).One of
normal,urgent· Default"normal" - stateenumShow only while the EVSE is idle or charging, or in any state.One of
idle,charging,always· Default"always"
Returns · 201
- idstringRequired
- tenant_idintegerRequired
- station_idintegerRequired
- evse_numberintegerRequired
- textstringRequired
- languagestring | nullRequired
- formatstringRequired
- starts_atstring | nullRequired
- ends_atstring | nullRequired
- priorityenumRequiredOne of
normal,urgent - stateenumRequiredOne of
idle,charging,always - statusenumRequiredpending: not yet sent (also while the charger is offline or has not connected). applied: the charging core accepted the push, which does not prove the screen shows it. failed: the push was refused or unconfirmed and is retried with backoff; last_error has the code. unsupported: no display adapter template carries text for this charger; reason says why and nothing is sent.One of
pending,applied,failed,unsupported - last_errorstring | nullRequiredError code of the last failed or withheld push, for example dispatch_unconfirmed, message_too_long or no_text_adapter.
- reasonstring | nullRequiredWhy the message is unsupported or failed, in words.
- adapterstring | nullRequiredWhat delivers it: ocpp2-display-message on OCPP 2.x, else the display adapter template with a text section, null when none applies.
- ocpp_message_idintegerRequiredThe message id on OCPP 2.x chargers (SetDisplayMessage id). Never reused on the station and never one of the QR or price ids.
- deletedbooleanRequired
- last_attempt_atstring | nullRequired
- applied_atstring | nullRequired
- created_atstringRequired
- updated_atstringRequired
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/stations/1/evses/1/display/messages" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001" \
-H "Content-Type: application/json" \
-d '{
"text": "Out of order",
"language": "en-US",
"starts_at": "2026-10-23T08:00:00Z",
"ends_at": "2026-10-24T00:00:00Z"
}'{
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"station_id": 1,
"evse_number": 1,
"text": "string",
"language": "string",
"format": "plain",
"starts_at": "2026-09-30T17:00:00Z",
"ends_at": "2026-09-30T17:00:00Z",
"priority": "normal",
"state": "idle",
"status": "pending",
"last_error": "string",
"reason": "string",
"adapter": "string",
"ocpp_message_id": 1,
"deleted": false,
"last_attempt_at": "2026-09-30T17:00:00Z",
"applied_at": "2026-09-30T17:00:00Z",
"created_at": "2026-09-30T17:00:00Z",
"updated_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.



