---
title: "Invite Member"
method: POST
path: "/v1/teams/{team_id}/invitations"
tags: ["teams"]
---

# Invite Member

`POST /v1/teams/{team_id}/invitations`

## Request

- Base URL: `https://api.pioneer.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pioneer.ai/v1/teams/{team_id}/invitations`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/pioneer/apis/brain-api/docs/v1/teams/:team_id/invitations/post.ts> (a function with typed inputs; its response is checked against the schema)

Invite a team member.

Args:
    team_id: Team identifier.
    request: Invitation payload.
    auth: Authenticated caller.
    service: Team service.

Returns:
    Created invitation.

## Path parameters

- `team_id` string, required

## Request body

- TeamInvitationCreate: Request model for inviting a member to a team.
  - `email` string, email, required: Email address of the person to invite
  - `role` 'owner' | 'billing' | 'admin' | 'editor' | 'viewer': Team member roles with hierarchical permissions. Wire DTO mirror of the ORM ``TeamRoleType`` enum. Used only for API request/response serialization; authorization decisions route through the ORM matrix (``database_tables.permissions``), never this enum.

## Response `200`

Successful Response

- TeamInvitationResponse: Response model for a team invitation.
  - `id` string, required
  - `team_id` string, required
  - `team_name` string, required
  - `email` string, required
  - `role` 'owner' | 'billing' | 'admin' | 'editor' | 'viewer', required: Team member roles with hierarchical permissions. Wire DTO mirror of the ORM ``TeamRoleType`` enum. Used only for API request/response serialization; authorization decisions route through the ORM matrix (``database_tables.permissions``), never this enum.
  - `status` 'pending' | 'accepted' | 'declined' | 'expired', required: Status of a team invitation.
  - `invited_by` string, required
  - `inviter_name` string, nullable
  - `inviter_email` string, nullable
  - `created_at` string, required
  - `expires_at` string, required
  - `email_sent` boolean: Whether the invitation email was successfully handed off to SendGrid. Only meaningful on the create-invite response; list endpoints do not track historical delivery and default to True.

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-24** `0e5e86e2bae5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/pioneer/apis/brain-api/changes/v1/teams/:team_id/invitations/post.md)

---

[API](https://skmtc.dev/pioneer/apis/brain-api.md) - [All operations](https://skmtc.dev/pioneer/apis/brain-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pioneer/apis/brain-api/revisions/0e5e86e2bae5?raw)
