Invitations
Bring people into the org by email.
List open invitations
/api/v1/org/invitesThe org's open invitations, newest first. Admins only.
An API key carrying the scope named here, or a signed-in session.
- Scope
org:read- Key kinds
- Organization
- Access
- The caller must administer the organization.
Required and optional fields, allowed values and errors, as the page shows them.
Examples
curl "https://liviamatch.com/api/v1/org/invites" \
-H "Authorization: Bearer $LIVIA_API_KEY"Responses
The open invitations.
{
"data": [
{
"id": "a4d7f0b3-1c68-4e92-8b5d-6a3c9e1f2d70",
"email": "sam@hearthandkey.example",
"role": "member",
"createdAt": "2026-10-02T09:15:00.000Z",
"expiresAt": "2026-10-05T09:15:00.000Z"
}
]
}Fields (6)
| Field | Type | Description |
|---|---|---|
data | object[] | |
data[].id | string (uuid) | |
data[].email | string | |
data[].role | string | |
data[].createdAt | string (date-time) | |
data[].expiresAt | string (date-time) |
Errors
| Status | Code | When |
|---|---|---|
| 403 | forbidden | The caller does not administer the org. |
Any call of this kind can also answer401 unauthenticated401 invalid-api-key403 insufficient-scope429 rate-limited429 monthly-cap-reached500 internal
Invite someone
/api/v1/org/invitesInvites a person by email and mails them the join link. An invitation grants member or admin, never owner. It expires after 3 days. A failed send still returns the invitation; sending a fresh one recovers it. An address already on the team, or the caller's own, is refused before anything is mailed. The org may send 30 invitations a day, across Settings and the API.
An API key carrying the scope named here, or a signed-in session.
- Scope
members:write- Key kinds
- Organization
- Access
- The caller must administer the organization.
Required and optional fields, allowed values and errors, as the page shows them.
Request body
Who, and as what.
Fields (2)
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Required | Who to invite. Lowercased and trimmed; not your own address and not someone already on the team. |
role | string | Optional | member or admin. Never owner: that seat moves only by transfer, in Settings.default "member" |
{
"email": "sam@hearthandkey.example",
"role": "member"
}Examples
curl -X POST "https://liviamatch.com/api/v1/org/invites" \
-H "Authorization: Bearer $LIVIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "sam@hearthandkey.example",
"role": "member"
}'Responses
The invitation.
{
"data": {
"id": "a4d7f0b3-1c68-4e92-8b5d-6a3c9e1f2d70",
"email": "sam@hearthandkey.example",
"role": "member",
"createdAt": "2026-10-02T09:15:00.000Z",
"expiresAt": "2026-10-05T09:15:00.000Z"
}
}Fields (6)
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string (uuid) | |
data.email | string | |
data.role | string | |
data.createdAt | string (date-time) | |
data.expiresAt | string (date-time) |
Errors
| Status | Code | When |
|---|---|---|
| 403 | forbidden | The caller does not administer the org. |
| 400 | invalid | The body failed validation; issues names each field. |
| 400 | invalid-json | The body is empty or not JSON. |
| 429 | invite-cap-reached | The org sent its most invitations for the UTC day. |
Any call of this kind can also answer401 unauthenticated401 invalid-api-key403 insufficient-scope429 rate-limited429 monthly-cap-reached500 internal
Revoke an invitation
/api/v1/org/invites/{inviteId}Cancels one of the org's open invitations so its link stops working.
An API key carrying the scope named here, or a signed-in session.
- Scope
members:write- Key kinds
- Organization
- Access
- The caller must administer the organization.
Required and optional fields, allowed values and errors, as the page shows them.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inviteId | Path | string (uuid) | Required | The invitation's id: id from GET /api/v1/org/invites. |
Examples
curl -X DELETE "https://liviamatch.com/api/v1/org/invites/a4d7f0b3-1c68-4e92-8b5d-6a3c9e1f2d70" \
-H "Authorization: Bearer $LIVIA_API_KEY"Responses
The invitation is revoked.
{
"data": {
"id": "a4d7f0b3-1c68-4e92-8b5d-6a3c9e1f2d70",
"revoked": true
}
}Fields (3)
| Field | Type | Description |
|---|---|---|
data | object | |
data.id | string (uuid) | |
data.revoked | true |
Errors
| Status | Code | When |
|---|---|---|
| 403 | forbidden | The caller does not administer the org. |
| 404 | not-found | No such open invitation in the org. |
Any call of this kind can also answer401 unauthenticated401 invalid-api-key403 insufficient-scope429 rate-limited429 monthly-cap-reached500 internal