# GET /api/twilio/sms-log

Lists outbound SMS delivery records for the caller's scope, newest first, with cursor-based paging.

Each row is one outbound message and carries its current lifecycle status, updated in place as
Twilio reports delivery progress. Tenant and merchant scoping is enforced server-side from the
caller's operating context: merchant-scoped users see only their own merchant, while a caller
holding `SmsLog.ViewAllMerchants` may target a specific merchant or leave the scope open.


Recipient and sender numbers are returned masked to their last four digits; the full values never
leave the server on this surface.


Paging is cursor-based, not skip/take. Pass `NextContinuationToken` from the previous response
back as `ContinuationToken`; a `null` token in the response means there are no further
pages. Sorting supports the send timestamp only and defaults to newest first.

**Operation ID:** `GET_api_twilio_sms-log`

## Authorization

Requires: Twilio.SmsLog.View, merchant scope.

Required permissions:
- `Twilio.SmsLog.View`

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| MaxResultCount | query | no | integer(int32) | Maximum rows per page. The app service caps this at 100. |
| ContinuationToken | query | no | string | Opaque cursor returned by a prior call. `null` for the first page. |
| IncludeDeleted | query | no | boolean | Disables the soft-delete filter. Honoured only for callers with the relevant permission. |
| IncludeInactive | query | no | boolean | Disables the IsActive filter. Honoured only for callers with the relevant permission. |
| Sorting.Field | query | no | string |  |
| Sorting.Descending | query | no | boolean |  |
| Filter.Logic | query | no | PhoenixAbpCoreDataFilteringFilterLogic |  |
| Filter.Rules | query | no | array<PhoenixAbpCoreDataFilteringFilterRule> |  |
| Filter.Groups | query | no | array<PhoenixAbpCoreDataFilteringFilterGroup> |  |
| MerchantId | query | no | string(uuid) | Caller-requested merchant scope. Honoured only when the caller holds  `SmsLog.ViewAllMerchants`; otherwise the app service substitutes the operating-context  merchant. |
| suppressNulls | query | no | boolean | If true, omit properties with null values. |

## Responses

### 200

OK

**Content type:** `text/plain`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfPhoeniXGateTwilioSmsLogSmsLogDto`

**Content type:** `application/json`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfPhoeniXGateTwilioSmsLogSmsLogDto`

**Content type:** `text/json`

Schema: `PhoenixAbpCoreApplicationContractsContinuationPagedResultDtoOfPhoeniXGateTwilioSmsLogSmsLogDto`

### 403

Forbidden

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 401

Unauthorized

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 400

Bad Request

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 404

Not Found

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 501

Not Implemented

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### 500

Internal Server Error

**Content type:** `text/plain`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

**Content type:** `text/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

### default

The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.

**Content type:** `application/json`

Schema: `WinkPGHttpRemoteServiceErrorResponse`

## See also

- [All documentation](https://docs.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
