Introduction
Send and track SMS through your own Android gateway devices over a simple REST API.
All endpoints are authenticated with a Bearer **API key**. Create one in your
dashboard under **Developers → API keys**, then send it in the `Authorization`
header: `Authorization: Bearer YOUR_API_KEY`.
Sending an SMS does **not** require a device id — the message is sent from your
active gateway device automatically. Every message counts as one SMS.
**For AI agents:** every response uses `{ "success", "data", "message" }`;
validation errors return `422 { "message", "errors" }`, a missing/invalid key
returns `401`, and Premium-only features return `403 { "upgrade": true }`. On
`POST /api/sms` you can pass `my_id` (your own reference) and `callback_url` (we
POST the final delivery result there). A machine-readable summary built for LLMs
lives at [`/llms.txt`](/llms.txt) and [`/llms-full.txt`](/llms-full.txt); the
full OpenAPI spec is at [`/docs.openapi`](/docs.openapi).
<aside>Code examples for each endpoint appear on the right; switch the language with the tabs at the top.</aside>
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer YOUR_API_KEY".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
Create an API key in your dashboard under Developers → API keys, then send it as Authorization: Bearer YOUR_API_KEY.
API Keys
Create and revoke the API keys used to authenticate API requests.
List the user's API keys (never returns the plaintext token).
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/tokens" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/tokens"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/tokens';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/tokens'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": [
{
"id": 5,
"name": "Production server",
"abilities": [
"*"
],
"last_used_at": "2026-06-08T10:00:00.000000Z",
"created_at": "2026-06-01T09:00:00.000000Z"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new API key. The plaintext token is returned ONCE.
requires authentication
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/tokens" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"b\",
\"abilities\": [
\"architecto\"
]
}"
const url = new URL(
"https://api.mobsms.cloud/api/tokens"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "b",
"abilities": [
"architecto"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/tokens';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'b',
'abilities' => [
'architecto',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/tokens'
payload = {
"name": "b",
"abilities": [
"architecto"
]
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201):
{
"success": true,
"message": "API key created. Copy it now — it will not be shown again.",
"data": {
"id": 6,
"name": "Production server",
"token": "6|aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789",
"created_at": "2026-06-08T10:00:00.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Revoke (delete) an API key the user owns.
requires authentication
Example request:
curl --request DELETE \
"https://api.mobsms.cloud/api/tokens/architecto" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/tokens/architecto"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/tokens/architecto';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/tokens/architecto'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"message": "API key revoked"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Account
Account overview: balance, usage and spend.
Display the authenticated user's account overview.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/account" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/account"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/account';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/account'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"user": {
"id": 1,
"name": "Ali",
"email": "ali@example.com"
},
"balance": 0,
"sms_rate": 100,
"usage": {
"total_sms": 1200,
"total_spent": 120000,
"today_sms": 8,
"today_spent": 800,
"month_sms": 240,
"month_spent": 24000
},
"stats": {
"total_sent": 1100,
"total_delivered": 1050,
"total_failed": 50,
"total_pending": 0,
"total_received": 30,
"devices": 2,
"active_devices": 1
},
"subscription": {
"plan": "premium",
"is_premium": true,
"premium_expires_at": "2027-06-08T00:00:00.000000Z",
"prices": {
"monthly": 5,
"yearly": 50,
"currency": "USD"
},
"features": [
"api",
"webhooks",
"bulk"
]
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display the authenticated user's account overview.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/balance" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/balance"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/balance';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/balance'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"user": {
"id": 1,
"name": "Ali",
"email": "ali@example.com"
},
"balance": 0,
"sms_rate": 100,
"usage": {
"total_sms": 1200,
"total_spent": 120000,
"today_sms": 8,
"today_spent": 800,
"month_sms": 240,
"month_spent": 24000
},
"stats": {
"total_sent": 1100,
"total_delivered": 1050,
"total_failed": 50,
"total_pending": 0,
"total_received": 30,
"devices": 2,
"active_devices": 1
},
"subscription": {
"plan": "premium",
"is_premium": true,
"premium_expires_at": "2027-06-08T00:00:00.000000Z",
"prices": {
"monthly": 5,
"yearly": 50,
"currency": "USD"
},
"features": [
"api",
"webhooks",
"bulk"
]
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
App
Self-update feed for the Android gateway app. The app polls latest on
launch (and periodically) and installs the APK when the server build is
newer than its own version code.
Latest gateway-app release.
Returns the newest active release. The app compares version_code
against its own build number and prompts an update when this is higher.
data is null when no release is published.
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/app/latest" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/app/latest"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/app/latest';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/app/latest'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"version_name": "1.0.1",
"version_code": 2,
"release_notes": "Bug fixes and a faster send queue.",
"mandatory": false,
"apk_url": "https://api.mobsms.cloud/api/app/download/3",
"apk_size": 27418624
}
}
Example response (200, no release published):
{
"success": true,
"data": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Authentication
Obtain a token for the dashboard/app. For server-to-server API access, create a long-lived API key under "API Keys" instead.
Login
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/login" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"you@example.com\",
\"password\": \"secret123\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/login"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "you@example.com",
"password": "secret123"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/login';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => 'you@example.com',
'password' => 'secret123',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/login'
payload = {
"email": "you@example.com",
"password": "secret123"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": true,
"data": {
"token": "9|aBcDeF...plaintext",
"user": {
"id": 1,
"name": "Ali",
"email": "you@example.com"
},
"token_type": "Bearer"
},
"message": "Login successful"
}
Example response (401):
{
"success": false,
"message": "Invalid credentials"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST api/register
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/register" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Ali Valiyev\",
\"email\": \"ali@example.com\",
\"password\": \"secret123\",
\"password_confirmation\": \"secret123\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/register"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Ali Valiyev",
"email": "ali@example.com",
"password": "secret123",
"password_confirmation": "secret123"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/register';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'Ali Valiyev',
'email' => 'ali@example.com',
'password' => 'secret123',
'password_confirmation' => 'secret123',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/register'
payload = {
"name": "Ali Valiyev",
"email": "ali@example.com",
"password": "secret123",
"password_confirmation": "secret123"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201):
{
"success": true,
"data": {
"token": "10|aBcDeF...plaintext",
"user": {
"id": 2,
"name": "Ali Valiyev",
"email": "ali@example.com"
},
"token_type": "Bearer"
},
"message": "Registration successful"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sign in with Google (GIS / ID-token flow).
The frontend obtains an ID token from Google Identity Services and posts it here. We verify it against Google's tokeninfo endpoint (validates the signature + expiry), check the audience/issuer, then link-by-email or create the user and issue a Sanctum token.
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/auth/google" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"id_token\": \"architecto\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/auth/google"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id_token": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/auth/google';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'id_token' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/auth/google'
payload = {
"id_token": "architecto"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": true,
"data": {
"token": "11|aBcDeF...plaintext",
"user": {
"id": 3,
"name": "Ali",
"email": "ali@gmail.com"
},
"token_type": "Bearer"
},
"message": "Login successful"
}
Example response (401):
{
"success": false,
"message": "Invalid Google token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Logout user
requires authentication
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/logout" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/logout"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/logout';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/logout'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"message": "Logout successful"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get authenticated user
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/user" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/user"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/user';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/user'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"id": 1,
"name": "Ali",
"email": "ali@example.com",
"plan": "premium",
"premium_expires_at": "2027-06-08T00:00:00.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Contacts
Manage your address book. Contacts can belong to one or more groups and are used as bulk-SMS recipients.
Bulk-import contacts (e.g. from a parsed CSV).
requires authentication
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/contacts/import" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"contacts\": [
{
\"name\": \"Ali\",
\"phone_number\": \"+998901112233\"
}
],
\"group_id\": 10
}"
const url = new URL(
"https://api.mobsms.cloud/api/contacts/import"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"contacts": [
{
"name": "Ali",
"phone_number": "+998901112233"
}
],
"group_id": 10
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/contacts/import';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
$o = [
clone (\Symfony\Component\VarExporter\Internal\Registry::$prototypes['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
],
null,
[
'stdClass' => [
'name' => [
'Ali',
],
'phone_number' => [
'+998901112233',
],
],
],
[
'contacts' => [
$o[0],
],
'group_id' => 10,
],
[]
),
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/contacts/import'
payload = {
"contacts": [
{
"name": "Ali",
"phone_number": "+998901112233"
}
],
"group_id": 10
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201):
{
"success": true,
"data": {
"imported": 42,
"skipped": 3
},
"message": "Imported 42 contacts"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Devices
List your gateway devices. Sending does not require a device id — it's used only if you want to target a specific device.
Display a listing of the resource.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/devices" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/devices"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/devices';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/devices'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": [
{
"id": 5,
"device_id": "abc123",
"device_name": "Pixel 7",
"phone_number": "+998901234567",
"is_active": true,
"is_default": true,
"sms_rate": 100,
"send_delay_seconds": 0,
"default_sim_slot": 0
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Set the user's default device (used when an API send omits device_id).
requires authentication
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/devices/default-device" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"device_id\": \"architecto\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/devices/default-device"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"device_id": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/devices/default-device';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'device_id' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/devices/default-device'
payload = {
"device_id": "architecto"
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": true,
"data": {
"id": 5,
"device_name": "Pixel 7",
"is_default": true
},
"message": "Default device updated successfully"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
SMS
Send SMS and read message history & delivery status.
Send bulk SMS
requires authentication
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/sms/bulk" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"message\": \"Hi {name}, your code is 1234\",
\"recipients\": [
\"+998901234567\"
],
\"device_id\": \"active\",
\"price\": 27,
\"my_id\": \"campaign-7\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/sms/bulk"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"message": "Hi {name}, your code is 1234",
"recipients": [
"+998901234567"
],
"device_id": "active",
"price": 27,
"my_id": "campaign-7"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/bulk';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'message' => 'Hi {name}, your code is 1234',
'recipients' => [
'+998901234567',
],
'device_id' => 'active',
'price' => 27,
'my_id' => 'campaign-7',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/bulk'
payload = {
"message": "Hi {name}, your code is 1234",
"recipients": [
"+998901234567"
],
"device_id": "active",
"price": 27,
"my_id": "campaign-7"
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201):
{
"success": true,
"data": [
{
"id": 201,
"message_id": "uuid-1",
"recipient_number": "+998901112233",
"status": "pending",
"price": 100,
"is_charged": false,
"direction": "outbound"
}
],
"message": "Bulk SMS queued for sending"
}
Example response (422):
{
"success": false,
"message": "No active device available"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delivery statistics
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/sms/delivery-stats" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/sms/delivery-stats"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/delivery-stats';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/delivery-stats'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"today": {
"sent": 8,
"delivered": 7,
"failed": 1,
"delivery_rate": 87.5
},
"this_week": {
"sent": 40,
"delivered": 38,
"delivery_rate": 95
},
"this_month": {
"sent": 240,
"delivered": 230,
"delivery_rate": 95.8
}
},
"message": "Delivery statistics retrieved successfully"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List outbound (sent) messages.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/sms/outbox" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/sms/outbox"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/outbox';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/outbox'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"current_page": 1,
"data": [
{
"id": 101,
"recipient_number": "+998901234567",
"message": "Hello",
"status": "delivered",
"price": 100,
"is_charged": false,
"created_at": "2026-06-08T10:00:00.000000Z"
}
],
"per_page": 50,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List inbound (received) messages.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/sms/inbox" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/sms/inbox"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/inbox';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/inbox'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"current_page": 1,
"data": [
{
"id": 55,
"sender_number": "+998907778899",
"message": "Reply text",
"status": "received",
"direction": "inbound",
"created_at": "2026-06-08T09:00:00.000000Z"
}
],
"per_page": 50,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Cancel a pending outbound message.
requires authentication
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/sms/architecto/cancel" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/sms/architecto/cancel"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/architecto/cancel';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/architecto/cancel'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"id": 101,
"status": "cancelled"
},
"message": "SMS cancelled successfully"
}
Example response (422):
{
"success": false,
"message": "Only pending messages can be cancelled"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List messages
requires authentication
Paginated message history (newest first), filterable.
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/sms?direction=outbound&status=delivered&device_id=5&page=1" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/sms"
);
const params = {
"direction": "outbound",
"status": "delivered",
"device_id": "5",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'direction' => 'outbound',
'status' => 'delivered',
'device_id' => '5',
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms'
params = {
'direction': 'outbound',
'status': 'delivered',
'device_id': '5',
'page': '1',
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"success": true,
"data": {
"current_page": 1,
"data": [
{
"id": 101,
"message_id": "9f1c-uuid",
"recipient_number": "+998901234567",
"sender_number": "+998901112233",
"message": "Hello",
"direction": "outbound",
"status": "delivered",
"price": 100,
"is_charged": false,
"sent_at": "2026-06-08T10:00:01.000000Z",
"delivered_at": "2026-06-08T10:00:05.000000Z",
"created_at": "2026-06-08T10:00:00.000000Z"
}
],
"per_page": 50,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Send an SMS
requires authentication
Queues a single SMS to be sent from your active gateway device.
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/sms" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"message\": \"Your code is 1234\",
\"recipient_number\": \"+998901234567\",
\"device_id\": \"active\",
\"price\": 39,
\"my_id\": \"order-42\",
\"callback_url\": \"https:\\/\\/example.com\\/sms\\/callback\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/sms"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"message": "Your code is 1234",
"recipient_number": "+998901234567",
"device_id": "active",
"price": 39,
"my_id": "order-42",
"callback_url": "https:\/\/example.com\/sms\/callback"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'message' => 'Your code is 1234',
'recipient_number' => '+998901234567',
'device_id' => 'active',
'price' => 39,
'my_id' => 'order-42',
'callback_url' => 'https://example.com/sms/callback',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms'
payload = {
"message": "Your code is 1234",
"recipient_number": "+998901234567",
"device_id": "active",
"price": 39,
"my_id": "order-42",
"callback_url": "https:\/\/example.com\/sms\/callback"
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (201):
{
"success": true,
"message": "SMS queued for sending",
"data": {
"id": 101,
"message_id": "9f1c...uuid",
"recipient_number": "+998901234567",
"status": "pending",
"price": 100,
"is_charged": false,
"direction": "outbound",
"callback_url": "https://example.com/sms/callback"
}
}
Example response (422):
{
"success": false,
"message": "No active device available"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a message
requires authentication
Fetch one message by numeric id or by its message_id UUID (poll delivery status).
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/sms/architecto" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/sms/architecto"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/architecto';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/architecto'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"id": 101,
"message_id": "9f1c-uuid",
"recipient_number": "+998901234567",
"status": "delivered",
"price": 100,
"is_charged": false,
"sent_at": "2026-06-08T10:00:01.000000Z",
"delivered_at": "2026-06-08T10:00:05.000000Z",
"error_message": null,
"callback_url": null
}
}
Example response (404):
{
"message": "No query results for model [SmsMessage]."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a message
requires authentication
Example request:
curl --request PUT \
"https://api.mobsms.cloud/api/sms/architecto" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"status\": \"received\",
\"error_message\": \"architecto\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/sms/architecto"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"status": "received",
"error_message": "architecto"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/architecto';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'status' => 'received',
'error_message' => 'architecto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/architecto'
payload = {
"status": "received",
"error_message": "architecto"
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": true,
"data": {
"id": 101,
"status": "delivered"
},
"message": "SMS updated successfully"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a message
requires authentication
Example request:
curl --request DELETE \
"https://api.mobsms.cloud/api/sms/architecto" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/sms/architecto"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/sms/architecto';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/sms/architecto'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"message": "SMS deleted successfully"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Settings
Account-level preferences.
Show the authenticated user's settings.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/settings" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/settings"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/settings';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/settings'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"keep_inbound": true
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the authenticated user's settings.
requires authentication
Example request:
curl --request PUT \
"https://api.mobsms.cloud/api/settings" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"keep_inbound\": false
}"
const url = new URL(
"https://api.mobsms.cloud/api/settings"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"keep_inbound": false
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/settings';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'keep_inbound' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/settings'
payload = {
"keep_inbound": false
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": true,
"data": {
"keep_inbound": false
},
"message": "Settings updated successfully"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Subscription
Premium plan status, pricing, crypto-payment details, and promo-code redemption.
Get the authenticated user's subscription status, pricing and payment info.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/subscription" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/subscription"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/subscription';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/subscription'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"plan": "premium",
"is_premium": true,
"premium_expires_at": "2027-06-08T00:00:00.000000Z",
"prices": {
"monthly": 5,
"yearly": 50,
"currency": "USD"
},
"features": [
"api",
"webhooks",
"bulk"
],
"payment": {
"wallet_address": "UQCGj7fXHlxD5H_uwbrJSE9N6NPMQ62pz_eoxViCdNYCF5Gh",
"asset": "USDT (TON)",
"network": "TON",
"admin_telegram": "@dev_murod"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Redeem a promo code to unlock Premium for free.
requires authentication
Example request:
curl --request POST \
"https://api.mobsms.cloud/api/subscriptions/redeem-promo" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"code\": \"PDAFTAR\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/subscriptions/redeem-promo"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"code": "PDAFTAR"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/subscriptions/redeem-promo';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'code' => 'PDAFTAR',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/subscriptions/redeem-promo'
payload = {
"code": "PDAFTAR"
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": true,
"message": "Promo code redeemed — Premium activated.",
"data": {
"plan": "premium",
"is_premium": true,
"premium_expires_at": "2027-06-08T00:00:00.000000Z",
"prices": {
"monthly": 5,
"yearly": 50,
"currency": "USD"
},
"features": [
"api",
"webhooks",
"bulk"
]
}
}
Example response (422):
{
"success": false,
"message": "This promo code is invalid or no longer available."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Webhooks
Register callback URLs to receive incoming-SMS and delivery-status events.
Display the authenticated user's webhook URLs.
requires authentication
Example request:
curl --request GET \
--get "https://api.mobsms.cloud/api/webhooks" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.mobsms.cloud/api/webhooks"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/webhooks';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/webhooks'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": true,
"data": {
"webhook_url_incoming": "https://example.com/incoming",
"webhook_url_status": "https://example.com/status"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the authenticated user's webhook URLs.
requires authentication
Example request:
curl --request PUT \
"https://api.mobsms.cloud/api/webhooks" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"webhook_url_incoming\": \"https:\\/\\/example.com\\/incoming\",
\"webhook_url_status\": \"https:\\/\\/example.com\\/status\"
}"
const url = new URL(
"https://api.mobsms.cloud/api/webhooks"
);
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"webhook_url_incoming": "https:\/\/example.com\/incoming",
"webhook_url_status": "https:\/\/example.com\/status"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://api.mobsms.cloud/api/webhooks';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'webhook_url_incoming' => 'https://example.com/incoming',
'webhook_url_status' => 'https://example.com/status',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api.mobsms.cloud/api/webhooks'
payload = {
"webhook_url_incoming": "https:\/\/example.com\/incoming",
"webhook_url_status": "https:\/\/example.com\/status"
}
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": true,
"data": {
"webhook_url_incoming": "https://example.com/incoming",
"webhook_url_status": "https://example.com/status"
},
"message": "Webhooks updated successfully"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.