Ask Ivora to review a self-serve team
post/v1/teams/{team_id}/self-serve/review
Requires an API key
Owners and admins: ask Ivora to lift the charger cap and the review gates (more chargers, OCPI publishing, custom domains, enterprise invoicing), with an optional note. Ivora is told; asking again keeps the first request.
Path parameters
- team_idstringRequiredPattern
^team_[0-9a-f]{32}$
Request body
- notestring | nullWhat you need reviewed, such as more chargers, OCPI publishing or a custom domain.Up to 1000 characters
Returns · 200
- team_idstringRequired
- trial_enabledbooleanRequiredWhether new teams may enable CSMS access themselves here now. Teams already in the trial keep their limits either way.
- stateenum | nullRequiredactive: CSMS access is on, with the charger cap, review-gated features and rate limits. waitlisted: the trial is full; the team waits in order (waitlist_position). reviewed: Ivora reviewed the team and lifted the cap and gates. suspended: Ivora turned its CSMS access off. null: the team never enrolled.One of
active,waitlisted,reviewed,suspended - csms_enabledbooleanRequired
- enabled_viaenum | nullRequiredOne of
staff,inherited,self_serve - card_okbooleanRequiredWhether the team has a usable card on file (billing status active: not expired, nothing overdue, not suspended).
- billing_statusstringRequiredThe team's usage-fee status, as the billing profile's status.
- waitlist_positioninteger | nullRequired1 for the next team to join, while waitlisted.
- charger_capinteger | nullRequiredStations the team may have across its projects until Ivora reviews it; null when not capped.
- chargersinteger | nullRequiredStations the team has now (counted up to one past the cap), while capped; null otherwise or when the charging core could not be read.
- review_gatedarray of stringRequiredFeatures that wait for Ivora's review while the team is capped: ocpi_publish, ocpp_domain, payment_domain, qr_domain, enterprise_invoicing, migration.
- review_requested_atstring | nullRequired
- requested_atstring | nullRequired
- enabled_atstring | nullRequired
- reviewed_atstring | nullRequired
- suspended_atstring | nullRequired
- team_limitintegerRequiredTeams the trial takes; later ones are waitlisted.
- slots_usedintegerRequiredTeams that took a place in the trial so far (active, reviewed and suspended).
POST /v1/teams/{team_id}/self-serve/review
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/teams/team_0123456789abcdef0123456789abcdef/self-serve/review" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Response · 200JSON
{
"team_id": "team_0123456789abcdef",
"trial_enabled": false,
"state": "active",
"csms_enabled": false,
"enabled_via": "staff",
"card_ok": false,
"billing_status": "string",
"waitlist_position": 1,
"charger_cap": 1,
"chargers": 1,
"review_gated": [
"string"
],
"review_requested_at": "2026-09-30T17:00:00Z",
"requested_at": "2026-09-30T17:00:00Z",
"enabled_at": "2026-09-30T17:00:00Z",
"reviewed_at": "2026-09-30T17:00:00Z",
"suspended_at": "2026-09-30T17:00:00Z",
"team_limit": 1,
"slots_used": 1
}Requires an approved production API keyProduction access starts with a request, a short meeting with Ivora and a card on file, after which Ivora staff grant your account access. How to request access
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.



