---
title: "Invite a member"
method: POST
path: "/v1/members/invitations"
tags: ["Members"]
---

# Invite a member

`POST /v1/members/invitations`

## Request

- Base URL: `https://api.rumoro.dev`
- URL: `https://api.rumoro.dev/v1/members/invitations`
- Auth: HTTP bearer

Invites an address by email as admin or member. Invitations expire after 48 hours. Repeating it for a pending address returns that invitation with 200 and sends nothing. Existing members get 409 already_member. Needs a signed-in owner or admin (dashboard session or MCP sign-in token). API keys get 403.

## Request body

- object
  - `email` string, email, required: Address that receives the join link.
  - `role` 'admin' | 'member': The role they get when they join. Ownership can only be given in the dashboard.

## Response `200`

The pending invitation for this address

- Invitation
  - `id` string, required: The invitation's id (inv_...).
  - `email` string, required: The email address invited, in lowercase.
  - `role` 'owner' | 'admin' | 'member', required: The role they get when they join.
  - `invitedBy` object, nullable, required: The member who sent it. Invitations sent with an API key come from the oldest owner.
    - `id` string, required
    - `email` string, required
    - `name` string, nullable, required
  - `expiresAt` string, required: When the invitation expires, 48 hours after it was sent. Expired invitations are not listed.
  - `createdAt` string, required: When it was sent.

## Other responses

- `201`: The invitation that was emailed
- `401`: The API key is missing or not valid
- `403`: An API key was used, or the signed-in user is not an owner or admin
- `409`: This address belongs to a member already (already_member)

---

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