For the complete documentation index, see llms.txt. This page is also available as Markdown.

Invites

Trigger personalized survey-invite emails from the API using the template designed in the dashboard. Requires the send key permission and a verified sending domain.

Get an invite distribution's status

get

Lifecycle + counts for one API-triggered send. status is the discriminator: pending/sending are in flight; sent/partial/failed are terminal. Subscribe to the invites.completed webhook event instead of polling.

Response envelope migration: during the current migration window, 2xx responses carry the bare payload shown in the example (the value of the schema's data property, without the {"data": ...} wrapper). The Deprecation and Sunset headers on every 2xx announce this envelope migration — they do not deprecate the endpoint itself. After the Sunset date, responses will be wrapped as {"data": ...} exactly as the schema declares.

Authorizations
AuthorizationstringRequired

API key authentication: pass your key in the Authorization header as Bearer inpk_live_... (or inpk_test_... for a test-environment key). Create and manage keys in the dashboard under Integrations Hub -> API Keys. Each key carries a permission scope (push, create, send, mcp_read, or all) and a per-minute rate limit.

Path parameters
distribution_idinteger · int64Required
Responses
200

Success

application/json
get/api/input/invites/{distribution_id}
GET /api/input/invites/{distribution_id} HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "distribution_id": 7301,
  "survey_id": 9021,
  "status": "sent",
  "total": 1000,
  "sent": 991,
  "failed": 4,
  "skipped": 5,
  "created_at": "2026-07-12T10:00:00Z",
  "finished_at": "2026-07-12T10:06:31Z"
}

List a distribution's recipients (cursor-paginated)

get

Per-recipient outcomes: send status, ESP delivery status (populated asynchronously from delivery events), and your external_id for correlation. Pass next_cursor back as cursor for the next page.

Response envelope migration: during the current migration window, 2xx responses carry the bare payload shown in the example (the value of the schema's data property, without the {"data": ...} wrapper). The Deprecation and Sunset headers on every 2xx announce this envelope migration — they do not deprecate the endpoint itself. After the Sunset date, responses will be wrapped as {"data": ...} exactly as the schema declares.

Authorizations
AuthorizationstringRequired

API key authentication: pass your key in the Authorization header as Bearer inpk_live_... (or inpk_test_... for a test-environment key). Create and manage keys in the dashboard under Integrations Hub -> API Keys. Each key carries a permission scope (push, create, send, mcp_read, or all) and a per-minute rate limit.

Path parameters
distribution_idinteger · int64Required
Query parameters
cursorstringOptional
limitinteger · min: 1 · max: 200OptionalDefault: 50
Responses
200

Success

application/json
get/api/input/invites/{distribution_id}/recipients
GET /api/input/invites/{distribution_id}/recipients HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "items": [
    {
      "id": 1,
      "email": "jamie@example.com",
      "external_id": "cus_310",
      "status": "sent",
      "delivery_status": "delivered",
      "error": null
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Inspect the source's invite template + sending readiness

get

What an integration needs before calling the send endpoint: whether a template is configured in the platform, which variable keys it can personalize with, whether the org's sender domain is verified (required for API sends), and the current daily quota usage.

Response envelope migration: during the current migration window, 2xx responses carry the bare payload shown in the example (the value of the schema's data property, without the {"data": ...} wrapper). The Deprecation and Sunset headers on every 2xx announce this envelope migration — they do not deprecate the endpoint itself. After the Sunset date, responses will be wrapped as {"data": ...} exactly as the schema declares.

Authorizations
AuthorizationstringRequired

API key authentication: pass your key in the Authorization header as Bearer inpk_live_... (or inpk_test_... for a test-environment key). Create and manage keys in the dashboard under Integrations Hub -> API Keys. Each key carries a permission scope (push, create, send, mcp_read, or all) and a per-minute rate limit.

Path parameters
survey_idinteger · int64Required

The source id

Responses
200

Success

application/json
get/api/input/sources/{survey_id}/invite-template
GET /api/input/sources/{survey_id}/invite-template HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "configured": true,
  "subject": "How did we do, {{first_name}}?",
  "variables": [
    "first_name",
    "order_id"
  ],
  "sender_domain_verified": true,
  "sending_enabled": true,
  "daily_quota": 2000,
  "daily_quota_used": 150
}

Send survey invites by email (transactional)

post

Emails the survey to the supplied recipients using the invite template designed in the platform. Recipients are appended to the source's respondent list (each gets a personalized survey link, so responses join back to the contact). Addresses that already received this survey are skipped unless resend is true; suppressed addresses (unsubscribed / bounced) are never emailed. Requires a send-scoped API key AND the org's own verified sending domain — the shared BAI Analytics sender is reserved for dashboard sends. Set dry_run to preview the rendered emails without sending. Returns 202 + a distribution_id to poll; subscribe to invites.completed and invite.bounced webhook events for the outcomes.

Requires permission: send or all.

Response envelope migration: during the current migration window, 2xx responses carry the bare payload shown in the example (the value of the schema's data property, without the {"data": ...} wrapper). The Deprecation and Sunset headers on every 2xx announce this envelope migration — they do not deprecate the endpoint itself. After the Sunset date, responses will be wrapped as {"data": ...} exactly as the schema declares.

Authorizations
AuthorizationstringRequired

API key authentication: pass your key in the Authorization header as Bearer inpk_live_... (or inpk_test_... for a test-environment key). Create and manage keys in the dashboard under Integrations Hub -> API Keys. Each key carries a permission scope (push, create, send, mcp_read, or all) and a per-minute rate limit.

Path parameters
survey_idinteger · int64Required

The source id

Header parameters
Idempotency-Keystring · max: 255Optional

Opaque retry key (24h window). Strongly recommended for send calls.

Body
resendbooleanOptional

Re-invite addresses that already received this survey (default: they are skipped).

Default: false
dry_runbooleanOptional

Render previews for the first recipients and send nothing.

Default: false
Responses
200

Success

application/json
post/api/input/sources/{survey_id}/invites
POST /api/input/sources/{survey_id}/invites HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 156

{
  "recipients": [
    {
      "email": "jamie@example.com",
      "external_id": "cus_310",
      "variables": {
        "first_name": "Jamie",
        "order_id": "A-1042"
      }
    }
  ],
  "resend": false,
  "dry_run": false
}
{
  "data": {
    "status": "text",
    "previews": [
      {
        "email": "text",
        "subject": "text",
        "body_html": "text",
        "error": "text"
      }
    ],
    "would_accept": 1,
    "skipped_already_invited": [
      "text"
    ],
    "invalid": [
      "text"
    ]
  }
}

Last updated