All pages

Developer docs

Invite a teammate

View as Markdown

Ask to invite someone to the team. The account owner must confirm the invitation on the website before anything happens: until then no invitation is sent and no seat is used. The owner sees the request on the website and is normally notified by email. Asking again for the same address returns the open request. Only the account owner's API keys and connected apps can ask, while the plan includes team seats.

POSThttps://uetr.ai/api/v1/team/members
  • MCP tool: invite_team_member
  • Access: a key or connection with read and write access
  • Only the account owner's keys and connections

Request body

FieldTypeRequiredDescription
emailstring (email, at most 255 characters)YesThe address to invite.

Response

FieldTypeRequiredDescription
statusstringYesNothing has taken effect yet: the account owner must confirm the request.
requestobjectYes
request.idstring (uuid)Yes
request.kindteam_invite, record_share, webhook_endpointYesteam_invite: an invitation to the team. record_share: a payment record link. webhook_endpoint: a webhook endpoint that receives status changes.
request.statuspending, confirmed, declined, expiredYespending: waiting for the account owner. confirmed: the owner approved it and it took effect. declined: the owner refused it. expired: nobody answered within seven days, or a later request for the same transfer with different settings replaced it.
request.created_atstringYes
request.expires_atstringYes
request.decided_atstring or nullYes
request.invite_emailstring or nullYesFor a team invite: the address to invite.
request.uetrstring or nullYesFor a record share: the transfer's UETR.
request.record_urlstring or nullYesFor a confirmed record share: the payment record link, while the record still has that link. Null otherwise.
request.endpoint_urlstring or nullYesFor a webhook endpoint: its host and a masked path. Null otherwise.
detailstringYesPlain English to pass on to the person behind the request.

Example

curl -X POST "https://uetr.ai/api/v1/team/members" \
  -H "Authorization: Bearer $UETR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"teammate@example.com"}'

The answer:

{
  "status": "pending_owner_confirmation",
  "request": {
    "id": "2e5a8d1b-6c9f-4d2a-b4e7-0f3c6d9a2b5e",
    "kind": "team_invite",
    "status": "pending",
    "created_at": "2026-10-14T09:30:00.000Z",
    "expires_at": "2026-10-21T09:30:00.000Z",
    "decided_at": null,
    "invite_email": "teammate@example.com",
    "uetr": null,
    "record_url": null,
    "endpoint_url": null
  },
  "detail": "The account owner must confirm the invitation to teammate@example.com on the website before it takes effect. They have been notified by email."
}

Refusals

Besides the access refusals every call can meet, this call can answer: