AgentMessage
Complaints

List complaints

GET
/v1/complaints

Returns a paginated list of complaints filed against your organization's numbers, campaigns, or messages, newest first. Complaints originate from recipient reports (STOP/HELP and free- form reply text), carrier 7726 callbacks, and staff-filed entries on behalf of recipients who contacted support.

Cursor pagination uses meta.next_cursor, which is null on the last page. Filter by status (new, triage, resolved) and category (unwanted_contact, phishing_fraud, unsolicited_marketing, opt_out_not_honored, wrong_recipient, content_concern, other). Unknown values for either filter return 422 VALIDATION_FAILED.

Requires the complaints:read scope, which is granted to every customer role.

AuthorizationBearer <token>

Authenticate by sending your API key as a bearer token: Authorization: Bearer am_live_.... Every request is automatically scoped to the organization that owns the key and to the scopes granted to that key.

In: header

Query Parameters

cursor?string
limit?integer
Default20
Range1 <= value <= 100
status?string
Value in"new" | "triage" | "resolved"
category?string
Value in"unwanted_contact" | "phishing_fraud" | "unsolicited_marketing" | "opt_out_not_honored" | "wrong_recipient" | "content_concern" | "other"

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/complaints"
{
  "success": true,
  "error": {
    "code": "string",
    "message": "string",
    "request_id": "string",
    "details": {
      "property1": "string",
      "property2": "string"
    }
  },
  "meta": {
    "total": 0,
    "limit": 0,
    "offset": 0,
    "next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wNC0yNlQxMjowMDowMFoiLCJpZCI6IjAxOTAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMSJ9",
    "last_event_at": "2019-08-24T14:15:22Z"
  },
  "data": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",
      "status": "new",
      "category": "unwanted_contact",
      "source": "recipient",
      "reporter_number": "string",
      "phone_number_id": "54afc7b8-17df-415a-9fb0-21ee66219576",
      "campaign_id": "78614b6c-fe7c-41e2-8e25-c9b3a3c91904",
      "outbound_message_id": "3db989cc-324b-4650-a9bc-35d2585ac32a",
      "inbound_message_id": "cde17d2a-c068-4d7b-a58a-742a73ce1dd6",
      "excerpt": "string",
      "resolution_note": "string",
      "resolved_at": "2019-08-24T14:15:22Z",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z"
    }
  ]
}
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "authentication failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "missing required scope",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "validation failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
    "details": {
      "to": "must be E.164",
      "body": "must be 1..1600 chars"
    }
  }
}