---
title: "Create Invite"
method: POST
path: "/v2/teams/{team_id}/invites"
tags: ["v2 - Team Invites"]
---

# Create Invite

`POST /v2/teams/{team_id}/invites`

## 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/{team_id}/invites`
- Auth: HTTP bearer

Create an invitation to join the team.

Requires MEMBERS_INVITE permission.
Cannot invite someone who is already a member.
A repeat invite to the same address replaces the pending one (no 409).

## Path parameters

- `team_id` string, required

## 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

- CreateInviteRequest: Request to create a team invitation.
  - `invitee_email` string, required: Email of person to invite
  - `role` string: Role to assign: admin, manager, editor, publisher, reviewer, viewer
  - `custom_permissions` string[], nullable: Custom permission overrides

## Response `201`

Successful Response

- InviteResponse: Response for a team invitation. PRIVACY (founder's rule, 2026-09-25). People are public profiles: inviter the inviter's public profile (team-scoped member_ref). invitee the invitee's public profile, ONLY once the invite is accepted (they are a member then), or for the invitee themself or a platform admin. Before that it is null: showing the account behind a typed address would tell the inviter whether that email has a JubJub account. invitee_email MASKED ("t***@example.com") for everyone except the invitee themself and a platform admin, who see it in full. `invitee_email_masked` says which. inviter_profile_id, inviter_email, invitee_profile_id null unless the caller is that person or a platform admin.
  - `invite_id` string, required
  - `team_id` string, required
  - `team_name` string, required
  - `team_avatar_url` string, nullable
  - `inviter_profile_id` string, nullable
  - `inviter_email` string, nullable
  - `inviter_name` string, nullable
  - `inviter` 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
  - `invitee_email` string, required
  - `invitee_email_masked` boolean
  - `invitee_profile_id` string, nullable
  - `invitee` 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_mine` boolean
  - `is_for_you` boolean
  - `role` string, required
  - `custom_permissions` string[], nullable
  - `status` string, required
  - `created_at` string, date-time, required
  - `expires_at` string, date-time, required
  - `responded_at` string, date-time, nullable
  - `expires_in_days` integer
  - `email_dispatched` boolean, nullable
  - `email_error` string, nullable
  - `email_sent_at` string, date-time, nullable
  - `invite_url` string, 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)
