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

Push Feedback

Append feedback items to a source's field: single calls for steady trickles, bulk + async status for backfills, or a CSV/XLSX upload. Structured items support external_id dedup (retries never double-write), occurred_at back-dating, ratings, and per-item metadata.

Push feedback items to a field

post

Partner-vocabulary variant of /content/push: append feedback items to one field on a source. Accepts the same payload with feedback_group_id / source_id / field.field_id naming and responds in the same vocabulary. Idempotent via the Idempotency-Key header (24h window).

Requires permission: push or create 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.

Header parameters
Idempotency-Keystring · max: 255Optional

Opaque client-supplied key for safe retries (24h window).

Body
feedback_group_idstringRequired

Target feedback group id

source_idstringRequired

Target source id within the group

source_referencestring · max: 255 · nullableOptional

Free-form identifier attached to the push for downstream tracking.

Default: null
Responses
200

Success

application/json
post/api/input/feedback/push
POST /api/input/feedback/push HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 327

{
  "feedback_group_id": "1842",
  "source_id": "9021",
  "field": {
    "field_id": "31245",
    "content": [
      "The new dashboard is great, but exports are slow.",
      {
        "text": "Support resolved my issue in one call.",
        "external_id": "ticket-58121",
        "customer_id": "cus_310",
        "channel": "support",
        "language": "en",
        "rating": 5,
        "occurred_at": "2026-07-12T09:30:00Z"
      }
    ]
  }
}
{
  "status": "success",
  "feedback_group_id": 1842,
  "source_id": 9021,
  "field_id": 31245,
  "inserted": 2,
  "rows_accepted": 2,
  "aps_deducted": 2,
  "skipped_duplicates": 0,
  "duplicate_external_ids": []
}

Submit a bulk feedback push (async)

post

Partner-vocabulary variant of /content/push/bulk: queue a multi-field feedback batch for async processing. Returns 202 with a task_id and partner-path status_url. Idempotent via Idempotency-Key header (24h window).

Requires permission: push or create 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.

Header parameters
Idempotency-Keystring · max: 255Optional

Opaque retry key (24h window).

Body
feedback_group_idstringRequired
source_idstringRequired
source_referencestring · max: 255 · nullableOptionalDefault: null
Responses
202

Accepted — task queued for async processing

application/json
post/api/input/feedback/push/bulk
POST /api/input/feedback/push/bulk HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 195

{
  "feedback_group_id": "1842",
  "source_id": "9021",
  "fields": [
    {
      "field_id": "31245",
      "content": [
        "First comment",
        "Second comment"
      ]
    },
    {
      "field_id": "31246",
      "content": [
        {
          "text": "9",
          "external_id": "rev-4471"
        }
      ]
    }
  ]
}
{
  "status": "accepted",
  "task_id": "3fa2b7c8-6d1e-4f90-9a55-0c8e2d7b4a11",
  "feedback_group_id": 1842,
  "source_id": 9021,
  "status_url": "/api/input/feedback/push/bulk/status/3fa2b7c8-6d1e-4f90-9a55-0c8e2d7b4a11"
}

Poll the status of a bulk feedback push

get

Partner-vocabulary variant of /content/push/bulk/status/{task_id}. 202 while pending/processing, 200 on completed or failed (the status field is the discriminator). 404 when the task id is unknown for the calling org.

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
task_idstringRequired
Responses
200

Success

application/json
get/api/input/feedback/push/bulk/status/{task_id}
GET /api/input/feedback/push/bulk/status/{task_id} HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "task_id": "3fa2b7c8-6d1e-4f90-9a55-0c8e2d7b4a11",
  "status": "completed",
  "progress": 100,
  "progress_message": "Inserted 2400 items",
  "created_at": "2026-07-12T09:31:02Z",
  "completed_at": "2026-07-12T09:31:44Z",
  "feedback_group_id": 1842,
  "source_id": 9021,
  "result": {
    "status": "success",
    "feedback_group_id": 1842,
    "source_id": 9021,
    "total_inserted": 2400,
    "total_rows_accepted": 2412,
    "total_aps_deducted": 2412,
    "fields": [
      {
        "field_id": 31245,
        "inserted": 2398,
        "status": "success"
      },
      {
        "field_id": 31246,
        "inserted": 2,
        "status": "success"
      }
    ]
  }
}

Upload a CSV/XLSX of feedback (async ingest)

post

Multipart upload: file (.csv or .xlsx) plus feedback_group_id, source_id and field_id form fields. The text column is picked with column (header name; defaults to the first column). Optional <key>_column fields (external_id_column, customer_id_column, channel_column, language_column, rating_column, occurred_at_column) map spreadsheet columns onto the structured ingest metadata, including external-ID dedup. Returns 202 with a task_id; poll the bulk status endpoint. Idempotent via the Idempotency-Key header (24h window) — a retried upload of the same file replays the original 202 instead of re-ingesting the rows.

Requires permission: push or create 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.

Header parameters
Idempotency-Keystring · max: 255Optional

Opaque client-supplied key for safe retries (24h window).

Responses
202

Accepted — task queued for async processing

application/json
post/api/input/feedback/upload
POST /api/input/feedback/upload HTTP/1.1
Host: app.boundary-ai.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "accepted",
  "task_id": "3fa2b7c8-6d1e-4f90-9a55-0c8e2d7b4a11",
  "feedback_group_id": 1842,
  "source_id": 9021,
  "rows_submitted": 2400,
  "status_url": "/api/input/feedback/push/bulk/status/3fa2b7c8-6d1e-4f90-9a55-0c8e2d7b4a11"
}

Last updated