---
title: "Create invitation link"
method: POST
path: "/customers/invitation-links"
tags: ["Invitation Links"]
---

# Create invitation link

`POST /customers/invitation-links`

Create a shareable link offering your agents, with the permissions and limits you set, to any customer who opens it

## Headers

- `X-Instance-ID` string, nullable

## Request body

- object
  - `data` object, required
    - `attributes` object, required
      - `proposedAgents` object[], required — Agents to offer, with the permissions and limits granted on approval.
        - `agentId` string, required — Agent ID (agt_*).
        - `permissions` string[], required — Permissions granted to this agent when a customer approves.
        - `limits` object — Spending limits for this agent. Only `perTransaction` is supported, in cents.
          - `perTransaction` integer, nullable — Positive per-transaction limit in cents. Null means no per-transaction limit.
      - `expiresAt` string, date-time — RFC 3339 timestamp when the link stops accepting new customers. Omit for a link that never expires.
      - `name` string, required — Label for this link.
      - `tags` object — Key-value metadata stored on the resource. At most 30 keys; keys 1-128 characters, alphanumeric and underscores; values 1-256 characters. Visible to anyone who can read the resource; do not include sensitive data.

## Response `201`

Successful Response

- object
  - `data` object, required
    - `type` 'invitationLink', required — Resource type. Always `invitationLink`.
    - `id` string, required — Invitation link ID (ivl_*).
    - `attributes` object, required
      - `proposedAgents` object[], required — Agents offered to customers who open this link.
        - `agentId` string, required — Agent ID (agt_*).
        - `permissions` string[], required — Permissions granted to this agent when a customer approves.
        - `limits` object, nullable, required — Transaction limits
      - `status` 'ACTIVE' | 'REVOKED', required — Link status.
      - `createdAt` string, required — RFC 3339 timestamp when this link was created.
      - `name` string, required — Label for this link.
      - `expiresAt` string, nullable, required — RFC 3339 timestamp when this link stops accepting new customers, or null when it never expires.
      - `tags` object, required — Metadata visible to anyone who can read the resource.
      - `token` string, required — Link token. Returned only when the link is created; list and get return `maskedToken`.
      - `url` string, required — Shareable URL for this link. Returned only when the link is created.
    - `relationships` object, required
      - `delegateeParty` object, required — Party that created this link.
        - `data` object, nullable, required — Related resource identifier.
          - `type` 'party', required — Resource type. Always `party`.
          - `id` string, required

## 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. The response contains one error object for each invalid request value.
- `428` — Precondition Required
- `429` — Too Many Requests
- `500` — Internal Server Error
- `501` — Not Implemented
- `502` — Bad Gateway
- `503` — Service Unavailable

## Changes

- **2026-09-19** `6e52d1bd0054` — 2 warning, 2 info
  - added the new `voice_sessions.create` enum value to the `data/attributes/proposedAgents/items/permissions/items/` response property for the response status `201`
  - added the new `voice_sessions.read` enum value to the `data/attributes/proposedAgents/items/permissions/items/` response property for the response status `201`
  - added the new `voice_sessions.create` enum value to the request property `data/attributes/proposedAgents/items/permissions/items/`
  - added the new `voice_sessions.read` enum value to the request property `data/attributes/proposedAgents/items/permissions/items/`
- **2026-09-19** `7dd2420be291` — 3 warning, 3 info
  - added the new `chargebacks.respond` enum value to the `data/attributes/proposedAgents/items/permissions/items/` response property for the response status `201`
  - added the new `disputes.create` enum value to the `data/attributes/proposedAgents/items/permissions/items/` response property for the response status `201`
  - added the new `disputes.read` enum value to the `data/attributes/proposedAgents/items/permissions/items/` response property for the response status `201`
  - added the new `chargebacks.respond` enum value to the request property `data/attributes/proposedAgents/items/permissions/items/`
  - …2 more
- …earlier changes not shown

[Full history](https://skmtc.dev/natural/apis/natural-api/changes/customers/invitation-links/post.md)

---

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