## Create

**post** `/teams/{teamId}/members`

Add a member to the team

### Path Parameters

- `teamId: string`

### Body Parameters

- `email: string`

  The email of the user you want to add to your team

- `projectIds: optional array of string`

  The project IDs for which the user is invited

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

  The role you want to give the user

  - `"admin"`

  - `"member"`

### Returns

- `team: object { id, context, createdAt, 10 more }`

  - `id: string`

    The team ID (example: "eyVcnFJcR92BxBkz7N6g5w")

  - `context: object { invitationsCount, keysCount, userRole, usersCount }`

    The context of the team for the current authenticated user

    - `invitationsCount: number`

      The number of invitations on this team

    - `keysCount: number`

      The number of API keys on this team

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

      The authenticated user's role for this team

      - `"admin"`

      - `"key"`

      - `"member"`

    - `usersCount: number`

      The number of users on this team

  - `createdAt: string`

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

  - `name: string`

    The team name (example: "Scenario")

  - `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.

  - `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")

  - `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.

### Example

```http
curl https://api.cloud.scenario.com/v1/teams/$TEAM_ID/members \
    -H 'Content-Type: application/json' \
    -u "$SCENARIO_SDK_API_KEY:SCENARIO_SDK_API_SECRET" \
    -d '{
          "email": "email"
        }'
```

#### Response

```json
{
  "team": {
    "id": "id",
    "context": {
      "invitationsCount": 0,
      "keysCount": 0,
      "userRole": "admin",
      "usersCount": 0
    },
    "createdAt": "createdAt",
    "name": "name",
    "plan": "cu-basic",
    "projects": [
      {
        "id": "id",
        "createdAt": "createdAt",
        "name": "name",
        "updatedAt": "updatedAt",
        "avatar": {
          "assetId": "assetId",
          "url": "url"
        },
        "disableIpDetection": true,
        "qualityGateAutoDetect": true
      }
    ],
    "type": "personal",
    "updatedAt": "updatedAt",
    "avatar": {
      "assetId": "assetId",
      "url": "url"
    },
    "byok": {
      "markupMultiplier": 0,
      "updatedAt": "updatedAt",
      "updatedBy": "updatedBy"
    },
    "defaultUserMaxConsumption": 0,
    "ipDetectionEnforcement": "active-fail-closed",
    "qualityGateAutoDetect": true
  }
}
```
