Log inTalk to us

Create a team

post/v1/teams
Requires an API key

Any signed-in user; you become its owner. A team holds projects, members and its own payment method. You create at most 5 teams (409 team_limit). CSMS access: the team inherits it when you own a team with CSMS access in good standing (a card on file, nothing overdue, not suspended), for up to 5 such teams; otherwise it starts without CSMS access (Data Tools only) until Ivora enables it, and creating projects answers 403 csms_not_enabled. Either way the team adds its own payment method before new CSMS setup and control. Replays with the same Idempotency-Key return the same team. Errors: 409 team_limit. See Errors and statuses.

Headers

  • idempotency-keystringRequired

Request body

  • namestringRequired
    The team's name, usually the company's.
    1–200 characters

Returns · 201

  • idstringRequired
    The new team's ID.
  • namestringRequired
  • rolestringRequired
    You are its owner.
  • csmsCsmsAccessRequired
    Child attributes
    • enabledbooleanRequired
      Whether the team's projects reach the CSMS (chargers, sessions, billing and the project API). A team that is not enabled keeps Data Tools and can ask for access (Request access in the dashboard); until Ivora finishes moving personal access grants to teams, its members keep read access to its existing projects.
    • enabled_viaenum | null
      staff: Ivora enabled the team. inherited: the team was created by the owner of an enabled team in good standing. self_serve: the owner enabled it in the self-serve CSMS trial (a charger cap and review-gated features until Ivora reviews it). null while not enabled.
      One of staff, inherited, self_serve
    • inherited_fromstring | null
      The enabled team it inherited from (enabled_via inherited).
    • self_serveenum | null
      The team's place in the self-serve CSMS trial (GET /v1/teams/{team_id}/self-serve), null when it never enrolled.
      One of active, waitlisted, reviewed, suspended
    • changed_atstring | null
    • changed_bystring | null
    • reasonstring | null
      Why the access last changed.
  • csms_inheritanceenumRequired
    inherited: CSMS access is on because you own an enabled team in good standing (a card on file, nothing overdue, not suspended). inherited_limit: you already have 5 inherited-enabled teams, so this one waits for Ivora to approve it. not_eligible: you own no enabled team in good standing; ask Ivora for access.
    One of inherited, inherited_limit, not_eligible
  • payment_method_requiredbooleanRequired
    Always true: a new team adds its own payment method (the card you already use is fine) before new CSMS setup and control.
  • created_atstringRequired
POST /v1/teams
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/teams" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Idempotency-Key: order-2026-09-30-0001" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "bay-01"
}'
Response · 201JSON
{
  "id": "id_0123456789abcdef",
  "name": "bay-01",
  "role": "owner",
  "csms": {
    "enabled": false,
    "enabled_via": "staff",
    "inherited_from": "string",
    "self_serve": "active",
    "changed_at": "2026-09-30T17:00:00Z",
    "changed_by": "string",
    "reason": "string"
  },
  "csms_inheritance": "inherited",
  "payment_method_required": false,
  "created_at": "2026-09-30T17:00:00Z"
}
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.