Start here
Your first request in four steps
Create an account and copy the API key from the dashboard.
Install the mobile app and confirm that the device is online.
Send one test SMS with the /sendsms/ endpoint.
Store the returned message ID to correlate logs and delivery status.
Official mobile application
The secure bridge between your phone, dashboard and API.
SMS and call operations pass through the official SMSMobileAPI app installed on your connected phone. The app securely pairs the device with your account, synchronizes authorized events and links the mobile network to the dashboard and REST API.
- Signed releases distributed through the official Google Play and Apple App Store listings
- Google and Apple platform review, signing and distribution controls
- Secure device pairing, HTTPS transport and authenticated API access
- Only the permissions required for the mobile features you enable
WEBHOOK V2 FOR THIS API
Subscribe only to the mobile events your workflow needs.
One destination can receive everything, or you can separate production systems, analytics and operational alerts. Every event has a precise name so your application can handle it predictably.
sms.api.submittedSMS submitted through API
An API request created an SMS sending job. Useful for acknowledging that the request entered the platform.
sms.sentSMS sent
The connected mobile confirmed the SMS sending operation.
sms.failedSMS failed
The connected mobile returned an SMS sending error.
sms.receivedSMS received
A connected mobile synchronized an incoming SMS.
sms.mobile.sentSMS sent from mobile
An SMS was sent manually from the connected mobile.
Authentication
Keep credentials on your server
Every request accepts an API key through the apikey parameter. OAuth2 client credentials are also available for server-to-server integrations. Never expose a production key in browser code, public repositories or support messages.
History management
Clear history safely: preview, delete, follow progress
These endpoints clear the selected server history for your API key, not messages on phones or external services. They do not provide account erasure. New activity can appear after deletion.
Read the request_id and retry guide
By default, linked or processing records remain visible. Only use include_linked=1 if you accept that integrations or ongoing processing may stop working.
How request_id works
- Preview the counts with action=preview. No request_id is needed and no records are deleted.
- Generate a unique request_id for a new deletion, for example a UUID. Save it before sending action=delete.
- For retries, timeouts or HTTP 202, reuse the same API key, history endpoint, request_id and include_linked value. Never generate a new ID automatically after an error.
- When completed=true, the operation is finished. Reusing its ID returns the same result instead of deleting newly arrived records. Use a new ID only for a deliberately new cleanup.
request_id identifies your deletion operation, not an individual SMS. Allowed format: 16–128 ASCII letters, digits, hyphens or underscores. A UUID generated with crypto.randomUUID() is suitable.
Deletion runs in batches. HTTP 202 with continue_required=true means you must repeat action=delete after 3 seconds. There is no background cron. action=status only reads progress, even when its HTTP status is 200.
Deletion and status examples
Replace the sample request_id with your own unique value before starting. The following delete requests change real account history; they are not previews.
curl -X POST "https://api.smsmobileapi.com/delete-history-sms-api/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-sms-api/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-sms-api/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"GET also accepts action=preview or action=delete. POST is recommended: URL parameters can leak into browser history and server logs. Never place a deletion URL in a public link, image or prefetch.
For POST, send all parameters in the form body or a JSON object, never in the query string. Unknown parameters are rejected; date or mobile filters are not supported.
Authentication for history endpoints
Use apikey or an Authorization: Bearer access token issued by SMSMobileAPI OAuth2. Do not send a refresh token or an API key as a Bearer token. Expired tokens are refused.
When scopes are set, history:read allows preview/status and history:delete also allows deletion. Restrictions on both the token and OAuth client apply. Legacy tokens without scopes retain their existing account access.
OAuth2 selects the unique primary API key. If several primary keys exist, also provide apikey to select one belonging to the account. Secondary keys never grant access to the primary key history.
Read the response before continuing
count_delete is the cumulative number removed by this operation. selected_at_start is the initial selection; protected_at_start counts excluded records. Use preview.linked_or_processing to count linked records even when include_linked=1.
{
"result": {
"error": 0,
"history": "sms-api",
"action": "delete",
"request_id": "6d54ac58-41f1-4fbc-9a39-6e6c86089451",
"status": "processing",
"completed": false,
"count_delete": 100,
"total_before": 250,
"selected_at_start": 200,
"protected_at_start": 50,
"include_linked": 0,
"continue_required": true,
"message": "Repeat GET or POST with the same request_id and include_linked to continue. Status requests do not run deletion."
}
}- 200 with completed=true: finished. A 200 preview or status response alone does not prove completion.
- 400 INVALID_REQUEST_ID: check the format. 404 REQUEST_NOT_FOUND: no operation exists for this ID, API key and history.
- 401: invalid or expired credentials. 403: insufficient OAuth scope or unauthorized account.
- 409 HISTORY_BUSY: another cleanup is running; continue it from the original client. 409 INCLUDE_LINKED_CONFLICT: restore the original include_linked value.
- 409 OAUTH_ACCOUNT_AMBIGUOUS: provide an API key belonging to this account.
- 503 or network interruption: some batches may already be completed. Check configuration, then retry with the original request_id. Do not create a replacement operation automatically.
POST · GET
Send an SMS
https://api.smsmobileapi.com/sendsms/Queues a message on a connected phone. POST is recommended when the message is long or contains special characters.
Use this for transactional messages, reminders, alerts and application-generated SMS.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
recipients |
phone | Required | Destination number in international format. |
message |
string | Required | Message body. URL-encode it when using GET. |
port |
1 | 2 | Optional | SIM port on compatible Android devices; leave empty for automatic selection. |
sIdentifiant |
string | Optional | Specific connected phone SID; leave empty for the first available device. |
shorturl |
0 | 1 | Optional | Set to 1 to shorten URLs found in the message. |
sendsms |
0 | 1 | Optional | SMS channel flag. Defaults to 1 when omitted. |
sendwa |
0 | 1 | Optional | Also request WhatsApp delivery when the account supports it. |
encrypt_message |
yes | Optional | Encrypt the message for recipient-side protected reading. |
schedule_timestamp |
Unix seconds | Optional | UTC time from which the message may be sent. |
Request example
curl -X POST "https://api.smsmobileapi.com/sendsms/" \
-d "apikey=YOUR_API_KEY" \
-d "recipients=+1234567890" \
--data-urlencode "message=Your appointment is confirmed for tomorrow."
Example response
{
"result": {
"error": 0,
"sent": "1",
"id": "c319d3b35e8f8712cde20dae39ac3c19f86eda25",
"note": "sent by mobile",
"datetime": "2026-03-20T21:07:44Z",
"port": null,
"send_with_whatsapp": "0"
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- A successful API response means the message was accepted by the platform; keep the returned id for later tracking.
- Carrier delivery and mobile processing can happen after the HTTP response.
POST · GET
Resend an unsent SMS
https://api.smsmobileapi.com/resend/Retries a message that is currently in an error state.
Use this after checking the sent log and confirming that a failed message is eligible for another attempt.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
guid |
string | Required | The message GUID returned by the send or log endpoint. |
Request example
curl "https://api.smsmobileapi.com/resend/?apikey=YOUR_API_KEY&guid=GUID_OF_THE_MESSAGE"
Example response
{
"result": {
"error": "0",
"sms": "resent with successfully",
"attempt": 1
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- Only messages with an error status can be resent.
GET
List SMS sent from the API
https://api.smsmobileapi.com/log/sent/sms/Returns messages submitted through the SMS API with queue, mobile and error information.
Use it for delivery monitoring, support diagnostics and reconciliation.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
guid_message |
string | Optional | Return one message by its unique GUID. |
before |
timestamp or reference | Optional | Return messages before the supplied cursor or timestamp. |
error_api |
0 | 1 | Optional | Set to 1 to return API processing errors only. |
error_mobile |
0 | 1 | Optional | Set to 1 to return mobile sending errors only. |
keyword |
string | Optional | Search the recipient number or message text. |
Request example
curl "https://api.smsmobileapi.com/log/sent/sms/?apikey=YOUR_API_KEY&guid_message=MESSAGE_GUID"
Example response
{
"result": {
"error": "0",
"sms": [{
"sIdentifiantPhone": "508b004b4aadacc4",
"recipients": "+1234567890",
"sms": "Test message",
"guid_message": "MESSAGE_GUID",
"send_from_mobile": 1,
"error_api": "",
"send_from_mobile_erreur": ""
}]
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑
GET
List SMS synchronized from a phone
https://api.smsmobileapi.com/log/sent/frommobile/Lists SMS physically sent by a mobile and synchronized with the platform.
Use it when messages may originate on the phone as well as through the API.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
date |
YYYY-MM-DD | Optional | Filter one exact date. |
date_from |
YYYY-MM-DD | Optional | Start of a date range. |
date_to |
YYYY-MM-DD | Optional | End of a date range. |
period |
enum | Optional | today, yesterday, last_24h, last_3days or last_7days. |
number |
phone | Optional | Filter by recipient. |
sIdentifiant |
string | Optional | Filter by connected mobile SID. |
message |
string | Optional | Filter by message content. |
search |
string | Optional | Global search across mobile, number, message and timestamps. |
sort_by |
enum | Optional | sIdentifiant, number, message, mobile_date_ms, mobile_date_formatted or synchro_time. |
sort_order |
ASC | DESC | Optional | Sort direction. |
limit |
integer | Optional | Maximum 200 records. |
Request example
curl "https://api.smsmobileapi.com/log/sent/frommobile/?apikey=YOUR_API_KEY&period=last_7days&limit=200"
Example response
{
"result": {
"error": "0",
"count": 1,
"history_limit_days": 7,
"sms": [{
"sIdentifiant": "508b004b4aadacc4",
"number": "+15551234567",
"message": "Appointment confirmed.",
"mobile_date_ms": 1774041004692,
"synchro_time": "2026-03-20 21:10:05"
}]
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- Requires Android app 4.1.20 or newer and must be enabled in the app.
- This endpoint returns a maximum of seven days of synchronized history.
GET
List received SMS
https://api.smsmobileapi.com/getsms/Returns incoming SMS synchronized from connected phones.
Use it to build an inbox, poll for replies or recover messages after a webhook interruption.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
sIdentifiantPhone |
string | Optional | Filter by the phone that received the SMS. |
after_timestamp_unix |
Unix seconds | Optional | Return messages received after this timestamp. |
onlyunread |
yes | Optional | Return only messages not marked as read in API state. |
Request example
curl "https://api.smsmobileapi.com/getsms/?apikey=YOUR_API_KEY&onlyunread=yes"
Example response
{
"result": {
"error": "",
"sms": [{
"id": 466340,
"sIdentifiantPhone": "508b004b4aadacc4",
"timestamp_unix": 1774041814,
"message": "Please call us back.",
"number": "+15551234567",
"guid": "6BFD7DC7-3492-422D-8D02-4AF4E614F122",
"alias": null
}]
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑
POST · GET
Mark a received SMS as read
https://api.smsmobileapi.com/getsms/set-read/Marks one received message as read in SMSMobileAPI API state.
Use this after your application has processed an incoming message.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
guid_message |
string | Required | GUID of the received SMS. |
Request example
curl "https://api.smsmobileapi.com/getsms/set-read/?apikey=YOUR_API_KEY&guid_message=MESSAGE_GUID"
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- This does not change the read state inside the phone messaging application.
POST · GET
Update a received SMS alias
https://api.smsmobileapi.com/getsms/update/Adds, changes or clears the alias associated with a received SMS.
Use aliases to attach a contact name or application label to a message.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
guid |
string | Required | GUID of the received SMS. |
alias |
string | Required | New alias. Send an empty value to clear it. |
Request example
curl "https://api.smsmobileapi.com/getsms/update/?apikey=YOUR_API_KEY&guid=MESSAGE_GUID&alias=John%20Doe"
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑
POST · GET
Delete SMS server logs
https://api.smsmobileapi.com/deletesms/Deletes SMS records from the SMSMobileAPI server log.
Use it for retention workflows or removal of a specific logged message.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
guid_message |
string | Optional | Delete one message by GUID. |
date_start |
YYYY-MM-DD | Optional | Delete records from this date. |
date_end |
YYYY-MM-DD | Optional | With date_start, limits the deletion range. |
Request example
curl "https://api.smsmobileapi.com/deletesms/?apikey=YOUR_API_KEY&guid_message=MESSAGE_GUID"
Example response
{
"result": {
"error": null,
"count_delete": 1
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- This deletes server log entries only. It does not delete messages stored on the mobile device.
- Treat this operation as destructive and verify filters before calling it.
GET
List SMS conversations
https://api.smsmobileapi.com/conversation/sms/list/Groups incoming and outgoing messages into conversations by phone number.
Use it for chat views, recent conversation widgets and support timelines.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
origineConversation |
received | sent | Required | Dataset used to identify the starting conversations. |
numero |
phone | Optional | Return one phone-number conversation. |
date_from |
date or datetime | Optional | Start of the message range. |
date_to |
date or datetime | Optional | End of the message range. |
sort |
ASC | DESC | Optional | Conversation order; default DESC. |
limit |
integer | Optional | Conversation limit when numero is omitted; default 20. |
resume |
0 | 1 | Optional | Set to 1 to return only the latest messages per conversation. |
resume_line_how |
integer | Optional | Number of messages per conversation when resume=1. |
Request example
curl "https://api.smsmobileapi.com/conversation/sms/list/?apikey=YOUR_API_KEY&origineConversation=received&resume=1&resume_line_how=3"
Example response
{
"success": true,
"origineConversation": "received",
"conversations": [{
"phone_number": "+15551234567",
"contact_alias": "John Doe",
"messages": [{
"direction": "incoming",
"message_id": "msg_1001",
"timestamp_utc": "2026-03-13T08:45:12Z",
"message": "I need more information.",
"status": "received",
"mobile_sid": "device_sid_1"
}]
}]
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑
GET
List connected mobiles
https://api.smsmobileapi.com/gateway/mobile/list/Lists phones connected to the SMS gateway account.
Use it to select a sender, display device status or audit a gateway fleet.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
sid |
string | Optional | Return one exact mobile SID. |
search |
string | Optional | Search SID, date, battery, version, label and related fields. |
Request example
curl "https://api.smsmobileapi.com/gateway/mobile/list/?apikey=YOUR_API_KEY"
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑
POST · GET
Update a connected mobile
https://api.smsmobileapi.com/gateway/mobile/update/Updates the human-readable label or phone number of a connected device.
Use it to keep device labels meaningful in multi-phone installations.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
sid |
string | Required | The device SID. |
label |
string | Required | New label; it may be intentionally empty. |
phone_number |
phone | Optional | New phone-number metadata. |
Request example
curl "https://api.smsmobileapi.com/gateway/mobile/update/?apikey=YOUR_API_KEY&sid=DEVICE_SID&label=OfficePhone"
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑
POST · GET
Delete a connected mobile
https://api.smsmobileapi.com/gateway/mobile/delete/Removes a connected mobile and its gateway history rows.
Use only when a phone must be permanently removed from the account.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Required | Your account API key. |
sid |
string | Required | SID of the device to remove. |
Request example
curl "https://api.smsmobileapi.com/gateway/mobile/delete/?apikey=YOUR_API_KEY&sid=DEVICE_SID"
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- This operation removes device history associated with the SID. Confirm the device before calling it.
INBOUND POST
Receive SMS by webhook
Your HTTPS endpointSMSMobileAPI sends a JSON request to your configured URL whenever an SMS is received.
Use webhooks for real-time processing instead of frequent polling.
Receiver example
<?php
$payload = json_decode(file_get_contents('php://input'), true);
if (!is_array($payload) || empty($payload['guid'])) {
http_response_code(400);
exit('Invalid payload');
}
// Queue the event, then acknowledge quickly.
http_response_code(200);
echo 'OK';
Example response
{
"date": "2026-03-20",
"hour": "10:15:00",
"time_received": "2026-03-20 10:14:50",
"message": "Hello, this is a test.",
"number": "+123456789",
"guid": "abcde12345"
}
This endpoint receives events at your own HTTPS URL. Use the receiver example above, then send an SMS to your connected phone to test it.
- Configure the public HTTPS URL in Dashboard → Webhook Settings.
- Return HTTP 200 quickly and process the event asynchronously.
- Deduplicate retries using guid.
POST · GET
Clear API SMS history
https://api.smsmobileapi.com/delete-history-sms-api/Clears server records of SMS submitted through the API. It does not recall a message already collected by a phone.
Use preview first, check the counts, then explicitly request deletion. This clears the entire selected history for the API key, without date, phone or message filters.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Optional | Required without OAuth2. With OAuth2, optionally select an API key belonging to the same account. |
action |
preview | delete | status | Optional | preview counts without deleting; delete starts or continues deletion; status reads progress without continuing. The API defaults to delete; this tester defaults to preview. |
include_linked |
0 | 1 | Optional | Default 0: keep linked or processing records. Set 1 to include them, with a risk of breaking integrations. Keep this value unchanged when continuing a deletion. |
request_id |
string | Optional | Required for delete and status, optional for preview. Use 16 to 128 letters, digits, hyphens or underscores. Generate one unique ID per new deletion and keep it for every retry. This is not a message ID or an API key. |
Request example
curl -X POST "https://api.smsmobileapi.com/delete-history-sms-api/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=preview" -d "include_linked=0"
Deletion and status examples
Replace the sample request_id with your own unique value before starting. The following delete requests change real account history; they are not previews.
curl -X POST "https://api.smsmobileapi.com/delete-history-sms-api/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-sms-api/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-sms-api/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Example response
{
"result": {
"error": 0,
"history": "sms-api",
"action": "preview",
"total": 120,
"simple": 100,
"linked_or_processing": 20,
"selected": 100,
"include_linked": 0,
"operation_in_progress": false,
"active_include_linked": null
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- The example above is a preview, not a deletion. Counts are illustrative; the definitive selection is fixed when deletion starts.
- include_linked=1 may disrupt GHL, Zapier, automations, unsubscribe links or delivery tracking. It never bypasses account ownership or storage integrity checks.
POST · GET
Clear mobile SMS history
https://api.smsmobileapi.com/delete-history-sms-mobile/Clears synchronized records of SMS sent from mobiles, not the messages stored on the phones.
Use preview first, check the counts, then explicitly request deletion. This clears the entire selected history for the API key, without date, phone or message filters.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Optional | Required without OAuth2. With OAuth2, optionally select an API key belonging to the same account. |
action |
preview | delete | status | Optional | preview counts without deleting; delete starts or continues deletion; status reads progress without continuing. The API defaults to delete; this tester defaults to preview. |
include_linked |
0 | 1 | Optional | Default 0: keep linked or processing records. Set 1 to include them, with a risk of breaking integrations. Keep this value unchanged when continuing a deletion. |
request_id |
string | Optional | Required for delete and status, optional for preview. Use 16 to 128 letters, digits, hyphens or underscores. Generate one unique ID per new deletion and keep it for every retry. This is not a message ID or an API key. |
Request example
curl -X POST "https://api.smsmobileapi.com/delete-history-sms-mobile/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=preview" -d "include_linked=0"
Deletion and status examples
Replace the sample request_id with your own unique value before starting. The following delete requests change real account history; they are not previews.
curl -X POST "https://api.smsmobileapi.com/delete-history-sms-mobile/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-sms-mobile/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-sms-mobile/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Example response
{
"result": {
"error": 0,
"history": "sms-mobile",
"action": "preview",
"total": 120,
"simple": 100,
"linked_or_processing": 20,
"selected": 100,
"include_linked": 0,
"operation_in_progress": false,
"active_include_linked": null
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- The example above is a preview, not a deletion. Counts are illustrative; the definitive selection is fixed when deletion starts.
- include_linked=1 may disrupt GHL, Zapier, automations, unsubscribe links or delivery tracking. It never bypasses account ownership or storage integrity checks.
POST · GET
Clear received SMS history
https://api.smsmobileapi.com/delete-history-sms-received/Clears server records of incoming SMS. Integration and automation records are protected by default.
Use preview first, check the counts, then explicitly request deletion. This clears the entire selected history for the API key, without date, phone or message filters.
Parameters
| Name | Type | Requirement | Description |
|---|---|---|---|
apikey |
string | Optional | Required without OAuth2. With OAuth2, optionally select an API key belonging to the same account. |
action |
preview | delete | status | Optional | preview counts without deleting; delete starts or continues deletion; status reads progress without continuing. The API defaults to delete; this tester defaults to preview. |
include_linked |
0 | 1 | Optional | Default 0: keep linked or processing records. Set 1 to include them, with a risk of breaking integrations. Keep this value unchanged when continuing a deletion. |
request_id |
string | Optional | Required for delete and status, optional for preview. Use 16 to 128 letters, digits, hyphens or underscores. Generate one unique ID per new deletion and keep it for every retry. This is not a message ID or an API key. |
Request example
curl -X POST "https://api.smsmobileapi.com/delete-history-sms-received/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=preview" -d "include_linked=0"
Deletion and status examples
Replace the sample request_id with your own unique value before starting. The following delete requests change real account history; they are not previews.
curl -X POST "https://api.smsmobileapi.com/delete-history-sms-received/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-sms-received/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-sms-received/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Example response
{
"result": {
"error": 0,
"history": "sms-received",
"action": "preview",
"total": 120,
"simple": 100,
"linked_or_processing": 20,
"selected": 100,
"include_linked": 0,
"operation_in_progress": false,
"active_include_linked": null
}
}
Want to run this request? Connect your API key at the top of the page to unlock the interactive tester.
Connect key ↑- The example above is a preview, not a deletion. Counts are illustrative; the definitive selection is fixed when deletion starts.
- include_linked=1 may disrupt GHL, Zapier, automations, unsubscribe links or delivery tracking. It never bypasses account ownership or storage integrity checks.
Troubleshooting
Errors and safe retries
Read the HTTP status and the JSON error field before retrying. Do not retry validation or authentication failures without correcting the request first.
| HTTP | Code | What to do |
|---|---|---|
| 400 | missing_parameter | A required parameter is empty or absent. Check the parameter table for the endpoint. |
| 403 | invalid_apikey | The API key is unknown, expired or not authorized for the requested feature. |
| 429 | too_many_requests | Requests are arriving too quickly. Wait, then retry with exponential backoff. |
| 500 | server_error | The service could not complete the request. Keep the response and contact support if it persists. |
Need help?
Bring the request context—not your secrets.
Share the endpoint, timestamp, HTTP status and sanitized response. Never include API keys, tokens or private message content.


