List sender profiles
Lists the sender profiles under your organization, newest first, paginated with page and page_size.
Each entry is the same document GET /v3/sender-profiles/{id} returns, with one difference: compliance.documents at the profile root is absent. Working out which documents a market holds means a catalog lookup and a document read per market, and doing that for every profile on a page would turn one request into dozens to answer a question you did not ask. Read a single profile for that. Brand and campaign are still included when they exist.
compliance.documents being absent is not the same as it being an empty list. Absent means the documents were not fetched here; an empty list means the profile holds none.
api_key is never returned. It is shown once, by create.
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v3/sender-profiles?page=1&page_size=20"{
"success": true,
"data": {
"sender_profiles": [
{
"id": "770e8400-e29b-41d4-a716-446655440002",
"organization_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Example Retail",
"short_name": "EXAMPLE",
"description": null,
"billing": {
"inherit": false
},
"channels": {
"sms": [
{
"country": "US",
"number_type": "TEN_DLC",
"sender_value": "+12125550100",
"status": "ACTIVE",
"note": "This market's sender is live and can carry traffic."
}
],
"whatsapp": null,
"rcs": null,
"mms": []
},
"compliance": {
"brand": {
"inherit": false,
"legal_name": "Example Retail Inc",
"entity_type": "PRIVATE_PROFIT",
"country": "US"
},
"campaign": {
"inherit": false,
"description": "Order and delivery updates for customers who opted in at checkout."
}
},
"created_at": "2025-01-15T00:00:00+00:00"
},
{
"id": "880e8400-e29b-41d4-a716-446655440003",
"organization_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Demo Brand",
"short_name": "DEMO",
"description": null,
"billing": {
"inherit": true
},
"channels": {
"sms": [
{
"country": "US",
"number_type": "TEN_DLC",
"sender_value": "+12125550101",
"status": "ACTIVE",
"note": "This market's sender is live and can carry traffic."
}
],
"whatsapp": null,
"rcs": null,
"mms": []
},
"created_at": "2025-03-10T00:00:00+00:00"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total_count": 2,
"total_pages": 1,
"has_more": false,
"cursors": null
}
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2025-06-01T12:00:00+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_001",
"message": "page_size must be between 1 and 100",
"details": null,
"doc_url": "https://docs.sent.dm/reference/api/error-catalog"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2025-06-01T12:00:00+00:00",
"version": "v3"
}
}{
"success": true,
"error": {
"code": "string",
"message": "string",
"details": {
"property1": [
"string"
],
"property2": [
"string"
]
},
"doc_url": "string"
},
"meta": {
"request_id": "string",
"timestamp": "2019-08-24T14:15:22Z",
"version": "string"
}
}Delete a template DELETE
Deletes a template by ID. Optionally, you can also delete the template from WhatsApp/Meta by setting delete_from_meta=true.
Get a sender profile GET
Reads one of your sender profiles. The document mirrors `POST /v3/sender-profiles`, with three differences that follow from this being a read rather than a request. `channels.sms` is a **list**. Create takes the one market a profile starts in; a profile can go on to send in several, and this reports all of them, each with its own `status`. `compliance.brand` comes back **in full, with `inherit` saying whose it is**. On a request `{ "inherit": true }` carries no data because there is nothing to send; here it carries the data, because the point of a read is to say what the profile actually sends under. **There is no `campaigns` array.** Brand, campaign, and compliance documents are reported at the profile root in `compliance`. A profile running on your organization's campaign is asked for none of the campaign fields, so `compliance.campaign` carries `{ "inherit": true }` with no campaign data. `api_key` is **never** returned here. It is shown once, by create. A profile belonging to another organization reads as `404`, not `403`: saying which of the two it is would confirm the id exists.