Set a charging profile (SetChargingProfile)
OCPP 1.6 SetChargingProfile (ChargePointMaxProfile, TxDefaultProfile, TxProfile) or OCPP 2.0.1/2.1 SetChargingProfile (ChargingStationMaxProfile, TxDefaultProfile, TxProfile). purpose charger_max caps the whole station, tx_default every new session on the station or one connector, session one active transaction. unit is W or A; give periods, or time-of-use windows with time_zone and default_limit (a daily recurring schedule). Requires stations:control. result.profile_id names the profile; its state follows the charger's answer (charging_profile.accepted or .rejected webhooks). A refusal by the charging core (OCPP 2.x checks, such as a second profile at the same purpose, EVSE and stack level) rejects the operation with 422 charging_profile_refused and its reason. Offline stations answer station_offline in the rejected operation. The operation succeeds when the core sent the message; result.charger_status then carries the charger's own answer once it arrives (null until then: poll the operation or subscribe to the charging_profile webhooks; it is never resent). Refusals before anything is sent create no operation and leave the Idempotency-Key unused: 409 smart_charging_unsupported when the charger reports smart charging disabled, 422 charging_profile_unsupported for a unit, stack level or period count it reported it cannot take (details.field, details.supported). Like station commands other than stop and unlock, it answers 402 payment_method_required when the project's billing team has no usable payment method for Ivora's usage fee (no operation; a retry with a journaled Idempotency-Key replays it).
Path parameters
- tenant_idintegerRequired
- station_idintegerRequired
Headers
- idempotency-keystringRequired
Request body
- purposeenumRequiredcharger_max: the whole station's ceiling. tx_default: every new session on the station or one connector. session: one active transaction (transaction_id)One of
charger_max,tx_default,session - unitenumRequiredW (power) or A (current, per phase)One of
W,A - connector_idinteger | nulltx_default only: the connector resource ID it applies to (its EVSE on OCPP 2.x). Omit for the whole stationGreater than 0
- transaction_idinteger | nullsession only: transaction resource ID from the transactions API, active on this stationGreater than 0
- stack_levelintegerPrecedence within the purpose: the highest valid stack level wins. On OCPP 1.6 a profile with the same purpose, connector and stack level replaces the earlier oneDefault
0· Minimum 0 · Maximum 100 - kindenum | nullabsolute (from start_at, default now), recurring (daily or weekly from start_at) or relative (from the start of the session). Default: relative for session, recurring with windows, else absoluteOne of
absolute,recurring,relative - recurrencyenum | nullrecurring only; windows are dailyOne of
daily,weekly - start_atstring | nullISO 8601 time with offset the schedule starts (absolute, recurring)Up to 40 characters
- duration_secondsinteger | nullLength of the schedule; omit to keep the last period until the profile endsMinimum 1 · Maximum 604800
- valid_fromstring | nullISO 8601 time with offset; on OCPP 2.x it cannot be in the futureUp to 40 characters
- valid_tostring | nullISO 8601 time with offset after which the charger drops the profileUp to 40 characters
- min_charging_ratenumber | nullThe lowest rate the vehicle charges efficiently at, in the profile's unitGreater than 0
- periodsarray of Period | nullThe schedule. Give periods or windows, not both
Child attributes
- start_offset_secondsintegerRequiredSeconds after the schedule start; the first period starts at 0Minimum 0 · Maximum 604800
- limitnumberRequiredThe limit in the profile's unit (W or A), at most one decimal; 0 pauses charging for the period
- number_phasesinteger | nullAC phases the vehicle may use; omit for the charger's default (3)Minimum 1 · Maximum 3
- windowsarray of Window | nullTime-of-use charging windows: a daily recurring schedule in time_zone with default_limit outside them
Child attributes
- startstringRequiredLocal time of day the window starts, HH:MMPattern
^\d\d:\d\d$ - endstringRequiredLocal time of day the window ends, HH:MM (24:00 for midnight). An end not after the start runs over midnightPattern
^\d\d:\d\d$ - limitnumberRequiredThe limit inside the window, in the profile's unit; 0 pauses charging there
- time_zonestring | nullwindows: the IANA time zone of their times of dayUp to 64 characters
- default_limitnumber | nullwindows: the limit outside every window, in the profile's unit (0 pauses charging there)Minimum 0
- number_phasesinteger | nullwindows: AC phases for every periodMinimum 1 · Maximum 3
Returns · 202
- idstringRequired
- tenant_idintegerRequired
- statusenumRequiredOne of
dispatching,succeeded,rejected,unknown - resultobject | nullRequired
- created_atstringRequired
- updated_atstringRequired
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/stations/1/charging-profiles" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001" \
-H "Content-Type: application/json" \
-d '{
"purpose": "charger_max",
"unit": "W",
"time_zone": "America/Los_Angeles"
}'{
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"status": "dispatching",
"result": {},
"created_at": "2026-09-30T17:00:00Z",
"updated_at": "2026-09-30T17:00:00Z"
}https://api.ivoracharge.com is public. Use the code samples from your application server; Ivora grants production access. Keys are created in Developer tools.