## Retrieve

**get** `/teams/{teamId}`

Get the details of a team

### Path Parameters

- `teamId: string`

### Returns

- `team: object { id, createdAt, invitations, 17 more }`

  - `id: string`

    The team ID (example: "eyVcnFJcR92BxBkz7N6g5w")

  - `createdAt: string`

    The team creation date as an ISO string (example: "2023-02-03T11:19:41.579Z")

  - `invitations: array of object { createdAt, email, role, 3 more }`

    The list of pending invitations

    - `createdAt: string`

      The user creation date as an ISO string (example: "2023-02-03T11:19:41.579Z")

    - `email: string`

      The invited user email (example: "herve@scenario.com")

    - `role: "admin" or "key" or "member"`

      The role of the invited user inside the team

      - `"admin"`

      - `"key"`

      - `"member"`

    - `status: "accepted" or "expired" or "pending" or "withdrawn"`

      The status of the invitation

      - `"accepted"`

      - `"expired"`

      - `"pending"`

      - `"withdrawn"`

    - `url: string`

      The link the invited user opens to accept the invitation, as sent by email

    - `projectIds: optional array of string`

      The list of project IDs for which the user is invited

  - `keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }`

    The list of API keys

    - `id: string`

      The key's member id (its API user id, `apiu_...`), taken by the member and
      usage routes (example: "apiu_eyVcnFJcR92BxBkz7N6g5w")

    - `apiKeyId: string`

      The API key id (`api_...`), taken by the api-keys routes (example:
      "api_eyVcnFJcR92BxBkz7N6g5w")

    - `apiKeyStatus: "active" or "inactive"`

      The status of the API key

      - `"active"`

      - `"inactive"`

    - `createdAt: string`

      The API key creation date as an ISO string (example: "2023-02-03T11:19:41.579Z")

    - `name: string`

      The API key name (example: "eurv-scenario")

    - `scope: "project" or "team"`

      The scope of the API key: 'project' for project-scoped keys, 'team' for team-scoped keys

      - `"project"`

      - `"team"`

    - `updatedAt: string`

      The API key last update date as an ISO string (example: "2023-02-03T11:19:41.579Z")

    - `authorId: optional string`

      The member who created the key: a human, or the member id (`apiu_...`) of
      the team API key that created it.

    - `consumption: optional number`

      Consumption (CU) used by this key over the current billing period.

    - `lastUsedAt: optional string`

      The date the API key was last used to authenticate a request, as an ISO
      string (example: "2023-02-03T11:19:41.579Z"). Absent if the key has never
      been used.

    - `maxConsumption: optional number`

      The key's effective consumption (CU) cap for the period (per-key override,
      else the team-wide default). Absent when the key is uncapped.

    - `ownerId: optional string`

      For a PROJECT key: the project it was created on (the team id on some
      legacy keys). Absent for team keys.

    - `projects: optional array of object { projectId, role }`

      For a PROJECT key: the projects it has access to and its role on each.
      Empty when the key is currently not a member of any (live) project.
      Absent for team keys.

      - `projectId: string`

        The project the key has a role on

      - `role: string`

        The key's role on this project: a built-in role (`admin`/`editor`/`reader`)
        or a custom `;`-separated scope list (example: `"asset.read;model.read"`).

    - `role: optional string`

      The key's role. For a TEAM key: its effective team-plane scopes as a
      `;`-separated list (e.g. `"team.read;team.usage.read"`). Project keys
      carry their project-plane role(s) per project in `projects` instead.

  - `name: string`

    The team name (example: "Scenario")

  - `paymentStatus: "failed" or "succeeded"`

    The paymentStatus for the team

    - `"failed"`

    - `"succeeded"`

  - `plan: "cu-basic" or "cu-creator" or "cu-max" or 9 more`

    The team plan

    - `"cu-basic"`

    - `"cu-creator"`

    - `"cu-max"`

    - `"cu-pro"`

    - `"cu-pro-q3-25"`

    - `"cu-team"`

    - `"cu-team-v2"`

    - `"enterprise"`

    - `"essential"`

    - `"free"`

    - `"premium"`

    - `"pro"`

  - `projects: array of object { id, createdAt, name, 4 more }`

    Projects of the team

    - `id: string`

    - `createdAt: string`

    - `name: string`

    - `updatedAt: string`

    - `avatar: optional object { assetId, url }`

      - `assetId: optional string`

        ID of the asset used as thumbnail if provided, otherwise undefined

      - `url: optional string`

        Signed URL of the assetId or free url if assetId is undefined

    - `disableIpDetection: optional boolean`

      When true, IP detection is switched off for this project.

    - `qualityGateAutoDetect: optional boolean`

      Whether Quality Gate auto-detection runs on generation for this project.

  - `searchHost: string`

    The search host for the team

  - `searchIndexes: object { assets, models, workflows }`

    The search indexes for the team

    - `assets: object { private, public }`

      - `private: string`

        The private search index for the team

      - `public: string`

        The public search index for the team

    - `models: object { private, public }`

      - `private: string`

        The private search index for the team

      - `public: string`

        The public search index for the team

    - `workflows: object { private, public }`

      - `private: string`

        The private search index for the team

      - `public: string`

        The public search index for the team

  - `type: "personal" or "shared"`

    The team type

    - `"personal"`

    - `"shared"`

  - `updatedAt: string`

    The team update date as an ISO string (example: "2023-02-03T11:19:41.579Z")

  - `users: array of object { id, createdAt, email, 5 more }`

    The list of teams members and their role

    - `id: string`

      The user ID (example: "eyVcnFJcR92BxBkz7N6g5w")

    - `createdAt: string`

      The user creation date as an ISO string (example: "2023-02-03T11:19:41.579Z")

    - `email: string`

      The user email (example: "herve@scenario.com")

    - `role: "admin" or "key" or "member"`

      The role of the user inside the team

      - `"admin"`

      - `"key"`

      - `"member"`

    - `updatedAt: string`

      The user last update date as an ISO string (example: "2023-02-03T11:19:41.579Z")

    - `avatar: optional object { assetId, url }`

      The user's avatar

      - `assetId: optional string`

        ID of the asset used as thumbnail if provided, otherwise undefined

      - `url: optional string`

        Signed URL of the assetId or free url if assetId is undefined

    - `consumption: optional number`

      Consumption (CU) used by this member over the current billing period.

    - `maxConsumption: optional number`

      The member's effective consumption (CU) cap for the period (per-user
      override, else the team-wide default). Absent when the member is uncapped.

  - `avatar: optional object { assetId, url }`

    The team's avatar

    - `assetId: optional string`

      ID of the asset used as thumbnail if provided, otherwise undefined

    - `url: optional string`

      Signed URL of the assetId or free url if assetId is undefined

  - `byok: optional object { markupMultiplier, updatedAt, updatedBy }`

    BYOK pricing override. Admin-only — omitted for non-admin callers.

    - `markupMultiplier: number`

    - `updatedAt: optional string`

      ISO timestamp of the last update. Optional — legacy rows may lack it.

    - `updatedBy: optional string`

      Human-readable handle of who last updated the markup (display name).

  - `defaultUserMaxConsumption: optional number`

    Team-wide default max consumption (CU) applied to every member over the
    billing period, unless overridden per member. Absent when no team-wide
    default is set.

  - `ipDetectionEnforcement: optional "active-fail-closed" or "active-fail-open" or "disabled"`

    The IP detection enforcement posture for the team.
    'disabled': IP detection is not performed.
    'active-fail-open': IP detection runs; on detector error the request is allowed through.
    'active-fail-closed': IP detection runs; on detector error the request is blocked.

    - `"active-fail-closed"`

    - `"active-fail-open"`

    - `"disabled"`

  - `qualityGateAutoDetect: optional boolean`

    Quality Gate auto-detection default for the team.

  - `settings: optional object { homepage }`

    Team settings. Returned on `GET` and `PUT /teams/{teamId}`, absent from
    the teams list.

    - `homepage: optional map[unknown]`

      Published homepage layout.

  - `subscriptionStatus: optional "active" or "inactive" or "paused"`

    The subscriptionStatus for the team

    - `"active"`

    - `"inactive"`

    - `"paused"`

### Example

```http
curl https://api.cloud.scenario.com/v1/teams/$TEAM_ID \
    -u "$SCENARIO_SDK_API_KEY:SCENARIO_SDK_API_SECRET"
```

#### Response

```json
{
  "team": {
    "id": "id",
    "createdAt": "createdAt",
    "invitations": [
      {
        "createdAt": "createdAt",
        "email": "email",
        "role": "admin",
        "status": "accepted",
        "url": "url",
        "projectIds": [
          "string"
        ]
      }
    ],
    "keys": [
      {
        "id": "id",
        "apiKeyId": "apiKeyId",
        "apiKeyStatus": "active",
        "createdAt": "createdAt",
        "name": "name",
        "scope": "project",
        "updatedAt": "updatedAt",
        "authorId": "authorId",
        "consumption": 0,
        "lastUsedAt": "lastUsedAt",
        "maxConsumption": 0,
        "ownerId": "ownerId",
        "projects": [
          {
            "projectId": "projectId",
            "role": "role"
          }
        ],
        "role": "role"
      }
    ],
    "name": "name",
    "paymentStatus": "failed",
    "plan": "cu-basic",
    "projects": [
      {
        "id": "id",
        "createdAt": "createdAt",
        "name": "name",
        "updatedAt": "updatedAt",
        "avatar": {
          "assetId": "assetId",
          "url": "url"
        },
        "disableIpDetection": true,
        "qualityGateAutoDetect": true
      }
    ],
    "searchHost": "searchHost",
    "searchIndexes": {
      "assets": {
        "private": "private",
        "public": "public"
      },
      "models": {
        "private": "private",
        "public": "public"
      },
      "workflows": {
        "private": "private",
        "public": "public"
      }
    },
    "type": "personal",
    "updatedAt": "updatedAt",
    "users": [
      {
        "id": "id",
        "createdAt": "createdAt",
        "email": "email",
        "role": "admin",
        "updatedAt": "updatedAt",
        "avatar": {
          "assetId": "assetId",
          "url": "url"
        },
        "consumption": 0,
        "maxConsumption": 0
      }
    ],
    "avatar": {
      "assetId": "assetId",
      "url": "url"
    },
    "byok": {
      "markupMultiplier": 0,
      "updatedAt": "updatedAt",
      "updatedBy": "updatedBy"
    },
    "defaultUserMaxConsumption": 0,
    "ipDetectionEnforcement": "active-fail-closed",
    "qualityGateAutoDetect": true,
    "settings": {
      "homepage": {
        "foo": "bar"
      }
    },
    "subscriptionStatus": "active"
  }
}
```
