---
title: "Invite someone"
method: POST
path: "/invites"
tags: ["Invites"]
---

# Invite someone

`POST /invites`

## Request

- Base URL: `https://api.spectate.net/v1`
- URL: `https://api.spectate.net/v1/invites`
- Auth: HTTP bearer

Emails them a link to join the team. Someone who is a member already, or has a pending
invite, can't be invited again (`422`); an expired invite to the address is replaced. Over
the plan's member limit, counting pending invites, the request fails with `403`
`PLAN_LIMIT_REACHED`.

## Request body

- CreateInvite: Someone to invite to the team.
  - `email` string, email, required: Their email address; disposable addresses aren't accepted
  - `role` 'owner' | 'manager' | 'admin' | 'member' | 'billing': A member's role in the team: what they may do. | | |---| | `owner` <br/> Everything, including billing and deleting the team. One per team. | | `manager` <br/> Everything but billing and deleting the team. | | `admin` <br/> Configure monitoring, alerting, incidents and status pages; can't manage members or API tokens. | | `member` <br/> Read everything; manage monitors and incidents, acknowledge alerts. | | `billing` <br/> Billing and support only. |

## Response `201`

The invite.

- Invite: An invite to join the team, sent by email. The invitee accepts it in the dashboard with an account for that address.
  - `id` string, uuid, required: Invite ID
  - `email` string, email, required: The invitee's email address
  - `role` 'owner' | 'manager' | 'admin' | 'member' | 'billing', required: A member's role in the team: what they may do. | | |---| | `owner` <br/> Everything, including billing and deleting the team. One per team. | | `manager` <br/> Everything but billing and deleting the team. | | `admin` <br/> Configure monitoring, alerting, incidents and status pages; can't manage members or API tokens. | | `member` <br/> Read everything; manage monitors and incidents, acknowledge alerts. | | `billing` <br/> Billing and support only. |
  - `expired` boolean, required: Whether it expired without being accepted. Expired invites don't count towards the member limit and can be sent again
  - `expires_at` string, date-time, required: When it expires, 7 days after it was sent
  - `created_at` string, date-time, required: When it was sent

## Other responses

- `401`: `UNAUTHENTICATED`: no token was sent. `INVALID_TOKEN`: the token is unknown or revoked. `TOKEN_EXPIRED`: the token has expired.
- `403`: `PLAN_LIMIT_REACHED`: the plan doesn't allow another one; `details.feature` names the limit. `FORBIDDEN`: the token lacks an ability this endpoint requires (listed in `details.required_abilities`). `TEAM_PENDING_DELETION`: the team is scheduled for deletion. `TEAM_SUSPENDED`: Spectate suspended the team.
- `422`: `VALIDATION_FAILED`: the request is invalid; `details.errors` lists the fields.
- `429`: `RATE_LIMITED`: too many requests for this token. Wait for the number of seconds in `Retry-After`.

---

[API](https://skmtc.dev/spectate/apis/spectate-api.md) - [All operations](https://skmtc.dev/spectate/apis/spectate-api/llms.txt) - [OpenAPI document](https://skmtc.dev/spectate/apis/spectate-api/revisions/9b1a233997de?raw)
