---
title: "Invite a team member"
method: POST
path: "/team_invitations"
tags: ["Team"]
---

# Invite a team member

`POST /team_invitations`

## Request

- Base URL: `https://api.llmpulse.ai/api/v1`
- URL: `https://api.llmpulse.ai/api/v1/team_invitations`
- Auth: API key in header `Authorization`

Invites someone to the account team with the same rules as the Team Members settings page, and sends them the invitation email (email_sent is false when the email provider refused it; the invitation still exists, so revoke it and invite again once the address is fixed). Send project_ids, or all_projects: true for every project (for a team member inviting, every project they can access). The account owner and co-owners choose the access with permission_role: full_access (default), view_only, custom (with permissions, feature key to verbs) or account_role (with account_role_id). A team member with permission to invite cannot choose access: leave those fields out and the invitation copies their own permissions. Only the account owner can set account_admin (co-owner) or billing_access. An address already registered on the platform, or with an invitation pending, is refused with ERR_INVALID_PARAM (revoke the pending one first). An account that cannot add more team members, or that reached its daily limit of invitations sent through the API and MCP (revoked ones count), answers ERR_LIMIT_REACHED; the message says which. Requires a `read_write` scope API key.

## Request body

- object
  - `email` string, required
  - `project_ids` integer[]: Projects the member can access. Send this or all_projects true.
  - `all_projects` boolean: Access to every project, including future ones
  - `permission_role` 'full_access' | 'view_only' | 'custom' | 'account_role': Default full_access. Owner and co-owners only.
  - `account_role_id` integer: One of the account's roles, with permission_role account_role
  - `permissions` object: With permission_role custom: feature key to the verbs granted (read, create, update, delete), for example {"overview": ["read"], "prompts": ["read", "create"]}
  - `account_admin` boolean: Make the member a co-owner. Account owner only.
  - `billing_access` boolean: Access to Billing and Plans. Account owner only.

## Response `201`

Created. The invitation, as GET /team_invitations lists it, and whether the email went out.

- object
  - `id` integer, required: Kept by the member once they accept, when they move to GET /team_members.
  - `email` string, required
  - `permission_role` 'full_access' | 'view_only' | 'custom' | 'account_role', required
  - `account_role` TeamAccountRole, nullable, required: The account role the person follows, when permission_role is account_role; null otherwise.
    - `id` integer, required
    - `name` string, required
  - `permissions` TeamPermissions, nullable, required: What the person can do, feature key to the verbs granted (read, create, update, delete), resolved from their role. Null for the account owner, who can do everything.
  - `account_admin` boolean, required
  - `billing_access` boolean, required
  - `all_projects` boolean, required
  - `project_ids` integer[], required
  - `invited_at` string, date-time, nullable: When the invitation email was last sent.
  - `expires_at` string, date-time, nullable: When the invitation link stops working.
  - `created_at` string, date-time
  - `email_sent` boolean, required: False when the email provider refused the invitation email
  - `request_id` string

## Other responses

- `401`: Authentication failed
- `403`: A key limited to some projects answers ERR_KEY_PROJECT_SCOPED, since the team belongs to the whole account. A team member without the Team Members permission, or asking for something only the owner or a co-owner can do, answers ERR_INSUFFICIENT_PERMISSION, and a write with a read-only key ERR_INSUFFICIENT_SCOPE, with the same status
- `404`: Resource not found
- `422`: Invalid parameters

## Changes

- **2026-10-11** `82f2d44c22e5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/llmpulse/apis/llm-pulse-api/changes/team_invitations/post.md)

---

[API](https://skmtc.dev/llmpulse/apis/llm-pulse-api.md) - [All operations](https://skmtc.dev/llmpulse/apis/llm-pulse-api/llms.txt) - [OpenAPI document](https://skmtc.dev/llmpulse/apis/llm-pulse-api/revisions/38a31f123641?raw)
