All pages

Developer docs

List requests waiting for the owner

View as Markdown

List the team invitations, payment record shares and webhook endpoints that API keys and connected apps asked for on this account, newest first, with whether the account owner confirmed, declined or has not answered yet. A confirmed record share carries the record link while it still works. Only the account owner's API keys and connected apps can list them. Reading changes nothing.

GEThttps://uetr.ai/api/v1/pending-access
  • MCP tool: list_pending_access
  • Access: any key or connection
  • Only the account owner's keys and connections

Response

FieldTypeRequiredDescription
requestsarray of objectYes
requests[].idstring (uuid)Yes
requests[].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.
requests[].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.
requests[].created_atstringYes
requests[].expires_atstringYes
requests[].decided_atstring or nullYes
requests[].invite_emailstring or nullYesFor a team invite: the address to invite.
requests[].uetrstring or nullYesFor a record share: the transfer's UETR.
requests[].record_urlstring or nullYesFor a confirmed record share: the payment record link, while the record still has that link. Null otherwise.
requests[].endpoint_urlstring or nullYesFor a webhook endpoint: its host and a masked path. Null otherwise.

Example

curl -X GET "https://uetr.ai/api/v1/pending-access" \
  -H "Authorization: Bearer $UETR_API_KEY"

The answer:

{
  "requests": [
    {
      "id": "4c7e1a3b-8d2f-4b6e-a9c5-3f6b9e2d5a8c",
      "kind": "webhook_endpoint",
      "status": "pending",
      "created_at": "2026-10-14T09:35:00.000Z",
      "expires_at": "2026-10-21T09:35:00.000Z",
      "decided_at": null,
      "invite_email": null,
      "uetr": null,
      "record_url": null,
      "endpoint_url": "hooks.slack.com/services/••••"
    },
    {
      "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
    },
    {
      "id": "1d4f7a2c-5b8e-4c1f-a3d6-9e2b5c8f1a4d",
      "kind": "record_share",
      "status": "confirmed",
      "created_at": "2026-10-14T09:25:00.000Z",
      "expires_at": "2026-10-21T09:25:00.000Z",
      "decided_at": "2026-10-14T09:41:00.000Z",
      "invite_email": null,
      "uetr": "eb6305c9-1f7f-49de-aed0-16487c27b42d",
      "record_url": "https://uetr.ai/p/0f1e2d3c4b5a69788796a5b4c3d2e1f0",
      "endpoint_url": null
    }
  ]
}

Refusals

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