---
title: "Create Team"
method: POST
path: "/v2/teams"
tags: ["v2 - Teams"]
---

# Create Team

`POST /v2/teams`

## Request

- Base URL: `https://api.jubjubapp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.jubjubapp.com/v2/teams`
- Auth: HTTP bearer

Create a new team.

The authenticated user becomes the owner of the team.

## Headers

- `Authorization` string
- `X-JubJub-Service-Key` string
- `X-JubJub-Agent-Key` string
- `X-JubJub-Platform-Key` string
- `Origin` string
- `Referer` string
- `X-JubJub-Trial-Token` string

## Request body

- CreateTeamRequest: Request to create a new team.
  - `name` string, required
  - `description` string, nullable
  - `avatar_url` string, nullable

## Response `201`

Successful Response

- TeamResponse: Full team response with all details.
  - `team_id` string, required
  - `name` string, required
  - `description` string, nullable
  - `avatar_url` string, nullable
  - `owner_member_ref` string, nullable
  - `owner` PublicPersonResponse: Another person as anyone may see them (founder's rule, 2026-09-25). Never a profile ID, never an email. `member_ref` is the opaque, per-context handle routes accept for this person (null where there is no context to mint one in). `display_name` is a public name or, with none, the person's role and team where the response knows them ("Admin (via Kong)"), else "Member" (2026-10-08; never "JubJub member").
    - `member_ref` string, nullable
    - `display_name` string, required
    - `avatar_url` string, nullable
    - `handle` string, nullable
    - `is_you` boolean
    - `role` string, nullable
    - `via_team` string, nullable
  - `is_owner` boolean
  - `my_role` string, nullable
  - `owner_display_name` string, nullable
  - `owner_avatar_url` string, nullable
  - `owner_email` string, nullable
  - `members` TeamMemberResponse[]
    - `member_ref` string, required
    - `email` string, nullable
    - `display_name` string, required
    - `avatar_url` string, nullable
    - `role` string, required
    - `joined_at` string, date-time, required
    - `invited_by` string, nullable
    - `is_you` boolean
  - `stats` TeamStatsResponse, required: Response DTO for team statistics.
    - `member_count` integer
    - `workspace_count` integer
    - `shared_credential_count` integer
    - `total_contents` integer
    - `total_launches` integer
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, nullable
  - `default_split_mode` string, nullable
  - `default_custom_splits` object[], nullable
  - `pending_invite_split` object, nullable
  - `requested_platforms` string[]
  - `catalogue_contract_address` string, nullable
  - `minted_allocation` object[], nullable
  - `split_locked` boolean
  - `split_locked_reason` string, nullable
  - `saved_split_matches_minted` boolean, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/jubjubapp/apis/jubjub-api.md) - [All operations](https://skmtc.dev/jubjubapp/apis/jubjub-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jubjubapp/apis/jubjub-api/revisions/353157b296f2?raw)
