---
title: "Invite customers"
method: POST
path: "/customers/invitations"
tags: ["Customers"]
---

# Invite customers

`POST /customers/invitations`

Invite specific customers by email or phone to approve a set of your agents, each with its own permissions and limits

## Headers

- `X-Agent-ID` string, nullable
- `X-Instance-ID` string, nullable

## Request body

- object
  - `data` object, required
    - `attributes` object, required
      - `recipients` union[], required — Recipients to invite.
        - union
          - object
            - `type` 'email', required
            - `value` string, email, required — Email address.
          - object
            - `type` 'phone', required
            - `value` string, required — Phone number.
          - object
            - `type` 'party_id', required
            - `value` string, required — Natural party ID (pty_*).
      - `agents` object[], required — Agents to grant access to. Each recipient receives an invitation for every agent listed.
        - `agentId` string, required — Agent ID (agt_*).
        - `permissions` string[], required — Permissions to grant this agent.
        - `limits` object — Transaction limits for this agent.
          - `perTransaction` integer, nullable — Per-transaction cap in integer cents (USD).
      - `expiresAt` string, date-time — When the invitation expires. Defaults to 30 days from now, up to a 90-day maximum.
      - `tags` object — Tags applied to each invitation.
      - `disableNotifications` string[] — Natural notifications to disable for this request. "recipient" silences our message to the counterparty so you can deliver the returned link yourself; the person who initiated the request is always notified. Requires a delegated caller on payments and payment requests, which return 403 otherwise. Omit it, or send an empty array, to have Natural notify as usual.

## Response `201`

Successful Response

- object
  - `data` object[], required — Created invitations.
    - `type` 'agentDelegationInvitation', required
    - `id` string, required — Invitation ID (adi_*).
    - `attributes` object, required — Invitation details.
      - `developerName` string, required — Developer name.
      - `email` string, required — Recipient email.
      - `phone` string, nullable, required — Recipient phone.
      - `url` string, uri, required — Invitation URL. Natural sends it automatically for email invitations; deliver it yourself for phone invitations.
      - `agentName` string, required — Agent name.
      - `permissions` string[], required — Permissions granted on accept.
      - `limits` object, nullable, required — Transaction limits.
        - `perTransaction` integer, nullable — Per-transaction spending limit in cents, or null for no limit.
      - `status` 'PENDING' | 'ACCEPTED' | 'DECLINED' | 'EXPIRED' | 'CANCELED', required — Invitation status.
      - `effectiveStatus` 'PENDING' | 'ACCEPTED' | 'DECLINED' | 'EXPIRED' | 'CANCELED', required — Resolved status.
      - `expiresAt` string, required — When the invitation expires.
      - `acceptedAt` string, nullable, required — When the invitation was accepted.
      - `declinedAt` string, nullable, required — When the invitation was declined.
      - `cancelReason` 'AGENT_RETIRED' | 'DEVELOPER_RETIRED' | 'DEVELOPER_REVOKED', nullable, required — Reason for cancellation.
      - `tags` object, required — Metadata visible to anyone who can read the resource.
      - `createdAt` string, required — When the invitation was created.
      - `updatedAt` string, required — When the invitation was last updated.
    - `relationships` object, required — Related resources.
      - `agent` object, required — The invited agent.
        - `data` object, required — Related resource identifier.
          - `type` 'agent', required
          - `id` string, required
      - `customerParty` object, required — Customer party that accepted the invitation, or null until acceptance.
        - `data` object, nullable, required — Related resource identifier.
          - `type` 'party', required
          - `id` string, required
  - `meta` object, required — Metadata about the batch.
    - `failedRecipients` object[], required — Recipients whose invitations could not be created.
      - `recipient` union, required — Recipient that failed.
        - object
          - `type` 'email', required
          - `value` string, email, required — Email address.
        - object
          - `type` 'phone', required
          - `value` string, required — Phone number.
        - object
          - `type` 'party_id', required
          - `value` string, required — Natural party ID (pty_*).
      - `reason` string, required — Why this recipient's invitations failed.

## Other responses

- `400` — Validation Error
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found. Returned when the resource does not exist, or when it exists but is not accessible to your account. The two cases are intentionally indistinguishable, so that resource IDs cannot be enumerated by probing.
- `409` — Conflict
- `422` — Validation Error
- `428` — Precondition Required
- `429` — Too Many Requests
- `500` — Internal Server Error
- `501` — Not Implemented
- `502` — Bad Gateway
- `503` — Service Unavailable

---

[API](https://skmtc.net/natural/apis/natural-api.md) · [All operations](https://skmtc.net/natural/apis/natural-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/natural/natural-api/versions/9561339ea461/schema)
