---
title: "Set the boards' team setup"
url: https://docs.gleap.ai/en/reference/rest-api/set-team-setup
method: POST
path: "/teams/setup"
api: "API Reference"
tag: "Team"
operationId: "SetTeamSetup"
updatedAt: "2026-11-01T18:40:15.677Z"
language: en
---

# Set the boards' team setup

`POST https://api.gleap.io/v3/teams/setup`

Turn team routing on or off, set the default team and each board's team (`default`, `team` with a team id, or `nobody`). `assignOpenUnowned` also gives today's open tickets nobody owns to their board's team. Off: assignment works exactly as before; the boards keep their picks.

## Authorization

- `Authorization` (header, required): `Bearer <token>`

## Headers

- `project` (string, required)

## Request body (`application/json`, required)

- `enabled` (boolean)
- `defaultTeam` (string | null)
- `boards` (object[]): Each board's team (`assignTo`) and, Kai re-release, whether Kai Support's escalated stage works its tickets ("Kai investigates here": the board's team takes Kai Support as its first agent there). Either field may come alone.
  - `kaiInvestigates` (boolean)
  - `assignTo` (object)
    - `team` (string | null)
    - `mode` (enum<string>, required): One of: `default`, `team`, `nobody`.
  - `type` (string, required)
- `escalationBoard` (string | null): Where an escalated conversation lands (a board type; bugs always land on Bugs). Null: Conversations.
- `escalationLimits` (object): Kai Support's escalated stage: escalated tickets a day, and a monthly budget in USD cents (null: none).
  - `monthlyBudgetMinor` (number<double> | null)
  - `dailyCap` (number<double>)
- `assignOpenUnowned` (boolean): Also give today's open tickets nobody owns to their board's team (only with `enabled: true`).

## Example request

```bash
curl --request POST \
  --url https://api.gleap.io/v3/teams/setup \
  --header 'Authorization: Bearer <token>' \
  --header 'project: <project>' \
  --header 'Content-Type: application/json' \
  --data '{
  "enabled": true,
  "defaultTeam": "<defaultTeam>",
  "escalationBoard": "<escalationBoard>",
  "assignOpenUnowned": true
}'
```

## Responses

### 200 (`application/json`)

Ok

- `escalationBoard` (string, required)
- `escalationLimits` (object, required)
  - `reached` (any, required)
  - `today` (any, required)
  - `monthlyBudgetMinor` (any, required)
  - `dailyCap` (any, required)
- `kaiSupport` (object, required)
  - `planAllows` (boolean, required)
  - `live` (boolean, required)
  - `installed` (boolean, required)
  - `agentId` (string, required)
- `openUnowned` (number<double>, required)
- `boards` (object[], required)
  - `suggestion` (object, required): A board's suggested team while off: from its last 30 days (`history`), else by name (`names`).
    - `source` (enum<string>, required): One of: `history`, `names`.
    - `share` (number<double> | null, required)
    - `teamId` (string, required)
  - `teamId` (string, required)
  - `assignTo` (any, required)
  - `icon` (any, required)
  - `name` (string, required)
  - `type` (string, required)
  - `kaiInvestigatesAvailable` (boolean, required)
  - `kaiInvestigates` (boolean, required)
- `defaultTeam` (string, required)
- `enabledAt` (any, required)
- `enabled` (boolean, required)
- `scheduled` (number<double>, required)

```json
{
  "escalationBoard": "string",
  "escalationLimits": {},
  "kaiSupport": {
    "planAllows": true,
    "live": true,
    "installed": true,
    "agentId": "string"
  },
  "openUnowned": 0,
  "boards": [
    {
      "suggestion": {
        "source": "history",
        "share": 0,
        "teamId": "string"
      },
      "teamId": "string",
      "name": "string",
      "type": "string",
      "kaiInvestigatesAvailable": true,
      "kaiInvestigates": true
    }
  ],
  "defaultTeam": "string",
  "enabled": true,
  "scheduled": 0
}
```
