| Version | Date | Changes |
|---|---|---|
| 1.1.0 | 01/15/2026 | 📲 Initial OpenAPI documentation for the SMS API v1.1 (migrated from PDF documentation). |
Send SMS messages to one or multiple recipients, or to predefined contact groups.
Useful tool: Use our SMS character counter to check your message length and the number of SMS required based on encoding (GSM 7-bit or Unicode).

Testing: Use Sandbox numbers to test your integration with simulated delivery reports.
Send one or multiple SMS messages to one or multiple recipients.
Character limits:
Important: By default, without a specified strategy, your message will be considered commercial and must comply with authorized days/hours and include a valid unsubscribe mention (STOP SMS).
| dest required | string Recipient phone number(s) in international format.
ℹ️ Immediate sends with more than 500 grouped recipients or 100 personalized recipients will be processed asynchronously. | ||||||||||||||||
| personnalise | integer Default: 0 Enum: 0 1 Enable personalized messages per recipient. When set to Variable substitution:
Format for
Example request:
Result:
Special characters in variables:
ℹ️ Maximum 500 recipients per request recommended. | ||||||||||||||||
| msg required | string The message content to send.
Important: Commercial messages must include a valid unsubscribe mention (STOP SMS). | ||||||||||||||||
| mode required | string Enum: "Standard" "Expert" "Reponse" Sending mode:
| ||||||||||||||||
| strategy | integer Enum: 1 2 3 4 Message type indicator for proper routing:
| ||||||||||||||||
| origine | string <= 11 characters Custom sender name or number (Expert mode only).
| ||||||||||||||||
| coding | string Default: "default" Enum: "default" "unicode" "auto" Character encoding:
ℹ️ Some GSM characters count as double: | ||||||||||||||||
| charset | string Default: "iso-8859-1" Enum: "iso-8859-1" "iso-8859-15" "utf-8" Input encoding of your request parameters. Required if your data is not encoded in ISO-8859-1 (Latin1). | ||||||||||||||||
| max_parts | integer [ 1 .. 8 ] Default: 8 Maximum SMS parts for long messages. If the message requires more parts, it will be truncated. Recommended: Maximum 3 parts for best delivery rates. | ||||||||||||||||
| date | string^\d{2}/\d{2}/\d{4}$ Scheduled send date in DD/MM/YYYY format.
| ||||||||||||||||
| heure | string^\d{2}:\d{2}$ Scheduled send time in HH:MM format (24h).
| ||||||||||||||||
| id | integer Default: 0 Enum: 0 1 Request message reference in response. When set to Example response: | ||||||||||||||||
| callback | integer Default: 0 Enum: 0 1 Enable delivery report callbacks. When set to | ||||||||||||||||
| cvar | string Custom variables to include in delivery report callbacks. Used in conjunction with Example value (before encoding): ℹ️ The value Important: URL-encode the entire cvar value before sending to the API. Final encoded parameter: | ||||||||||||||||
| udh | integer Default: 1 Enum: 0 1 2 User Data Header for message concatenation:
ℹ️ Concatenation reduces available characters per SMS. | ||||||||||||||||
| allow_vocal | integer Default: 0 Enum: 0 1 Enable voice synthesis for landline numbers. When set to ℹ️ Only available in Standard and Expert modes. | ||||||||||||||||
| validity | integer [ 5 .. 1440 ] Message validity period in minutes. After this period, if the message hasn't been delivered, the operator stops trying. Default varies by operator (48-72 hours). ⚠️ Some operators may ignore this value. | ||||||||||||||||
| uniq_period | integer [ 1 .. 24 ] Duplicate prevention period in hours. Prevents sending identical messages (same content + recipient) within the specified period. ⚠️ API returns "ERROR" for duplicate content. | ||||||||||||||||
| day_min | integer [ 1 .. 7 ] First allowed day of week for sending (1=Monday to 7=Sunday). Must be used with ℹ️ Ignored for scheduled sends. | ||||||||||||||||
| day_max | integer [ 1 .. 7 ] Last allowed day of week for sending (1=Monday to 7=Sunday). Must be used with | ||||||||||||||||
| hour_min | integer [ 0 .. 23 ] First allowed hour for sending (0-23, Paris timezone). Must be used with ℹ️ Ignored for scheduled sends. | ||||||||||||||||
| hour_max | integer [ 0 .. 23 ] Last allowed hour for sending (0-23, Paris timezone). Must be used with |
curl --request POST \ --url https://api.smsbox.pro/1.1/api.php \ --header 'Authorization: App <APIKEY>' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data 'dest=33600123456' \ --data 'msg=Hello, this is a test message.' \ --data 'mode=Standard' \ --data 'strategy=4' \ --data 'id=1'
OK
Send an SMS message to a predefined group of recipients.
The group must be created beforehand in your account's contact management section.
Usage: Add action=envoigroupe as a query parameter to the endpoint URL.
POST /1.1/api.php?action=envoigroupe
| action required | string Value: "envoigroupe" Action identifier. Must be set to |
| groupe required | integer Group ID to send the message to. Find the group ID in your account's contact group list. | ||||||||||||||||
| msg required | string The message content to send.
Important: Commercial messages must include a valid unsubscribe mention (STOP SMS). | ||||||||||||||||
| mode required | string Enum: "Standard" "Expert" "Reponse" Sending mode:
| ||||||||||||||||
| strategy | integer Enum: 1 2 3 4 Message type indicator for proper routing:
| ||||||||||||||||
| origine | string <= 11 characters Custom sender name or number (Expert mode only).
| ||||||||||||||||
| coding | string Default: "default" Enum: "default" "unicode" "auto" Character encoding:
ℹ️ Some GSM characters count as double: | ||||||||||||||||
| charset | string Default: "iso-8859-1" Enum: "iso-8859-1" "iso-8859-15" "utf-8" Input encoding of your request parameters. Required if your data is not encoded in ISO-8859-1 (Latin1). | ||||||||||||||||
| max_parts | integer [ 1 .. 8 ] Default: 8 Maximum SMS parts for long messages. If the message requires more parts, it will be truncated. Recommended: Maximum 3 parts for best delivery rates. | ||||||||||||||||
| date | string^\d{2}/\d{2}/\d{4}$ Scheduled send date in DD/MM/YYYY format.
| ||||||||||||||||
| heure | string^\d{2}:\d{2}$ Scheduled send time in HH:MM format (24h).
| ||||||||||||||||
| id | integer Default: 0 Enum: 0 1 Request message reference in response. When set to Example response: | ||||||||||||||||
| callback | integer Default: 0 Enum: 0 1 Enable delivery report callbacks. When set to | ||||||||||||||||
| cvar | string Custom variables to include in delivery report callbacks. Used in conjunction with Example value (before encoding): ℹ️ The value Important: URL-encode the entire cvar value before sending to the API. Final encoded parameter: | ||||||||||||||||
| udh | integer Default: 1 Enum: 0 1 2 User Data Header for message concatenation:
ℹ️ Concatenation reduces available characters per SMS. | ||||||||||||||||
| allow_vocal | integer Default: 0 Enum: 0 1 Enable voice synthesis for landline numbers. When set to ℹ️ Only available in Standard and Expert modes. | ||||||||||||||||
| validity | integer [ 5 .. 1440 ] Message validity period in minutes. After this period, if the message hasn't been delivered, the operator stops trying. Default varies by operator (48-72 hours). ⚠️ Some operators may ignore this value. | ||||||||||||||||
| uniq_period | integer [ 1 .. 24 ] Duplicate prevention period in hours. Prevents sending identical messages (same content + recipient) within the specified period. ⚠️ API returns "ERROR" for duplicate content. | ||||||||||||||||
| day_min | integer [ 1 .. 7 ] First allowed day of week for sending (1=Monday to 7=Sunday). Must be used with ℹ️ Ignored for scheduled sends. | ||||||||||||||||
| day_max | integer [ 1 .. 7 ] Last allowed day of week for sending (1=Monday to 7=Sunday). Must be used with | ||||||||||||||||
| hour_min | integer [ 0 .. 23 ] First allowed hour for sending (0-23, Paris timezone). Must be used with ℹ️ Ignored for scheduled sends. | ||||||||||||||||
| hour_max | integer [ 0 .. 23 ] Last allowed hour for sending (0-23, Paris timezone). Must be used with |
curl --request POST \ --url 'https://api.smsbox.pro/1.1/api.php?action=envoigroupe' \ --header 'Authorization: App <APIKEY>' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data 'groupe=12345' \ --data 'msg=Hello group members, this is a test message.' \ --data 'mode=Standard' \ --data 'strategy=4'
OK
Use sandbox phone numbers starting with +999 to test your integration with simulated delivery reports at reduced cost (0.05 credit per SMS).
Rules:
+999Simulated delivery statuses based on prefix:
| Prefix | Status Flow | Final Status |
|---|---|---|
| +9990XXXXXX | 9 → 0 | Received |
| +9991XXXXXX | 9 → 1 | Transmission failure |
| +9992XXXXXX | 9 → 2 | Rejected |
| +9993XXXXXX | 9 → 3 | Inactive mobile |
| +9994XXXXXX | 9 → 4 | Mobile not responding |
| +9995XXXXXX | 9 → 5 | Reception error |
| +9996XXXXXX | 9 → 6 | Saturated mobile |
| +9997XXXXXX | 9 → 7 | Unknown number |
| +9998XXXXXX | 9 → 8 | Non-routable |
| +9999XXXXXX | → -3 | Refunded |
Sandbox numbers require callback=1 to receive simulated delivery reports.
Manage your sender IDs (names displayed to recipients).
Senders must be registered in your account's "Sender Management" section before use.
Retrieve your default sender ID.
Usage: Add action=emetteur as a query parameter to the endpoint URL.
POST /1.1/api.php?action=emetteur
| action required | string Value: "emetteur" Action identifier. Must be set to |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=emetteur" \ -H "Authorization: App YOUR_API_KEY"
MyCompany
Retrieve all registered sender IDs.
Usage: Add action=emetteur&do=list as query parameters to the endpoint URL.
POST /1.1/api.php?action=emetteur&do=list
| action required | string Value: "emetteur" Action identifier. Must be set to |
| do required | string Value: "list" Operation type. Must be set to |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=emetteur&do=list" \ -H "Authorization: App YOUR_API_KEY"
MyCompany MyBrand Alerts
Set your default sender ID.
Usage: Add action=emetteur&do=set as query parameters to the endpoint URL.
POST /1.1/api.php?action=emetteur&do=set
| action required | string Value: "emetteur" Action identifier. Must be set to |
| do required | string Value: "set" Operation type. Must be set to |
| emetteur required | string <= 11 characters Sender ID to set as default. Must be pre-registered in your account's "Sender Management" section. Maximum 15 digits or 11 alphanumeric characters. |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=emetteur&do=set" \ -H "Authorization: App YOUR_API_KEY" \ -d "emetteur=MyCompany"
MyCompany
Retrieve all contact groups.
Usage: Add action=groupes as a query parameter to the endpoint URL.
POST /1.1/api.php?action=groupes
Add hide_numbers=1 to get only the contact count instead of phone numbers.
| action required | string Value: "groupes" Action identifier. Must be set to |
| hide_numbers | integer Enum: 0 1 Set to |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=groupes" \ -H "Authorization: App YOUR_API_KEY"
1;VIP Clients;33600123456,33600789012 2;Staff;33600111111
Create a new contact group.
Usage: Add action=groupes&do=add as query parameters to the endpoint URL.
POST /1.1/api.php?action=groupes&do=add
| action required | string Value: "groupes" Action identifier. Must be set to |
| do required | string Value: "add" Operation type. Must be set to |
| nom required | string Group name. |
| num required | string Phone numbers to add to the group, separated by commas. Numbers must be in international format (without + or 00 prefix). |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=groupes&do=add" \ -H "Authorization: App YOUR_API_KEY" \ -d "nom=VIP%20Clients&num=33600123456,33600789012"
OK
Edit an existing contact group.
Usage: Add action=groupes&do=edit as query parameters to the endpoint URL.
POST /1.1/api.php?action=groupes&do=edit
| action required | string Value: "groupes" Action identifier. Must be set to |
| do required | string Value: "edit" Operation type. Must be set to |
| id required | integer Group ID to edit. |
| nom required | string New group name. |
| num required | string New phone numbers for the group (replaces existing numbers). Numbers separated by commas in international format. |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=groupes&do=edit" \ -H "Authorization: App YOUR_API_KEY" \ -d "id=123&nom=Premium%20Clients&num=33600123456,33600789012"
OK
Add phone numbers to an existing group.
Usage: Add action=groupes&do=add_numbers as query parameters to the endpoint URL.
POST /1.1/api.php?action=groupes&do=add_numbers
| action required | string Value: "groupes" Action identifier. Must be set to |
| do required | string Value: "add_numbers" Operation type. Must be set to |
| id required | integer Group ID to add numbers to. |
| num required | string Phone numbers to add to the group, separated by commas. Numbers must be in international format (without + or 00 prefix). |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=groupes&do=add_numbers" \ -H "Authorization: App YOUR_API_KEY" \ -d "id=123&num=33600222222,33600333333"
OK
Delete a contact group.
Usage: Add action=groupes&do=del as query parameters to the endpoint URL.
POST /1.1/api.php?action=groupes&do=del
| action required | string Value: "groupes" Action identifier. Must be set to |
| do required | string Value: "del" Operation type. Must be set to |
| id required | integer Group ID to delete. |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=groupes&do=del" \ -H "Authorization: App YOUR_API_KEY" \ -d "id=123"
OK
Get the total number of records in your message history.
Usage: Add action=historique as a query parameter to the endpoint URL.
POST /1.1/api.php?action=historique
| action required | string Value: "historique" Action identifier. Must be set to |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=historique" \ -H "Authorization: App YOUR_API_KEY"
HISTORIQUE 123Retrieve sent message history.
Usage: Add action=historique as a query parameter to the endpoint URL.
POST /1.1/api.php?action=historique
Response format (CSV):
showref=1)Maximum records: 5000 per request (50000 with date filters).
| action required | string Value: "historique" Action identifier. Must be set to |
| from | integer >= 0 Starting record index for extraction. Default: 0 (most recent record). |
| nb | integer [ 1 .. 5000 ] Number of records to retrieve. Default: 10, Maximum: 5000. |
| date_from | string^\d{4}-\d{2}-\d{2}$ Start date for extraction (inclusive). Format: YYYY-MM-DD. Maximum 50000 records will be returned when using date filters. |
| date_to | string^\d{4}-\d{2}-\d{2}$ End date for extraction (inclusive). Format: YYYY-MM-DD. Defaults to current date if |
| id | string Message reference to retrieve. Use this to get history for a specific message. |
| msisdn | string Recipient phone number to filter by. International format (without + or 00 prefix). |
| showref | integer Enum: 0 1 Include message reference in response. Set to |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=historique" \ -H "Authorization: App YOUR_API_KEY" \ -d "from=0&nb=20&showref=1"
20/10/2024 18:15:00;33600123456;MyCompany;0;1;0
Get the total number of scheduled (deferred) messages.
Usage: Add action=differes as a query parameter to the endpoint URL.
GET /1.1/api.php?action=differes
| action required | string Value: "differes" Action identifier. Must be set to |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=differes" \ -H "Authorization: App YOUR_API_KEY"
DIFFERES 50Retrieve scheduled (deferred) messages.
Usage: Add action=differes as a query parameter to the endpoint URL.
POST /1.1/api.php?action=differes
Response format (CSV):
showref=1)Maximum records: 5000 per request.
| action required | string Value: "differes" Action identifier. Must be set to |
| from | integer >= 0 Starting record index for extraction. Default: 0 (most recent record). |
| nb | integer [ 1 .. 5000 ] Number of records to retrieve. Default: 10, Maximum: 5000. |
| showref | integer Enum: 0 1 Include message reference in response. Set to |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=differes" \ -H "Authorization: App YOUR_API_KEY" \ -d "from=0&nb=20&showref=1"
6408047;123456789012;33612345678;;0;12/11/2024 16:30:00;Your appointment is confirmed...
Delete a scheduled (deferred) message.
Usage: Add action=differes&do=del as query parameters to the endpoint URL.
POST /1.1/api.php?action=differes&do=del
| action required | string Value: "differes" Action identifier. Must be set to |
| do required | string Value: "del" Operation type. Must be set to |
| ref required | string Message reference of the scheduled message to delete. You can retrieve this reference by adding |
curl -X POST "https://api.smsbox.pro/1.1/api.php?action=differes&do=del" \ -H "Authorization: App YOUR_API_KEY" \ -d "ref=123456789012"
OK
Delivery Reports (Callbacks)
To receive delivery reports, add the callback=1 parameter to your requests and configure your callback URL in your Customer Area under My settings > My preferences > Callback URLs.
If you are using a firewall, make sure to allow these IPv4 addresses:
Delivery reports are sent to your callback URL when using callback=1 in your send request.
Prerequisites: Configure your callback URL in your Customer Area under My settings > My preferences > Callback URLs (field "Delivery reports (API)").
Method: GET
Example request to your server:
GET https://your-server.com/callback?numero=33600123456&reference=123456789&accuse=0&ts=1705326600
How to respond:
Return HTTP 200 with body OK to confirm successful processing. If processing fails, return ERROR with any non-200 status code.
Automatic retries: Failed callbacks are retried every 15 minutes for up to 12 hours.
⚠️ Warning: HTTP codes 401, 403, and 404 are considered permanent failures and are not retried.
Performance requirement: Respond within 3 seconds. We recommend storing the data immediately and processing it asynchronously. If your script is slow, our system waits before sending the next callback.
| numero | string Recipient's phone number in international format. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| reference | string Internal reference of the sent message. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| accuse | integer Delivery receipt status code. SMS status codes:
Vocalized SMS status codes:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ts | integer Unix (POSIX) timestamp of the status update (Paris time). |
Incoming SMS received on your keyword (shared number), dedicated number, or in response to messages sent via Response mode.
Prerequisites: Configure your callback URL in your Customer Area under My settings > My preferences > Callback URLs (field "SMS-MO / STOP").
Method: GET
Example request to your server:
GET https://your-server.com/callback?modem=33XXXXXXXXX&numero=33600123456&reference=12345678&ts=1705326600&charset=ISO-8859-1&message=Hello+world
How to respond:
Return HTTP 200 with body OK to confirm successful processing. If processing fails, return ERROR with any non-200 status code.
Automatic retries: Failed callbacks are retried every 15 minutes for up to 12 hours.
⚠️ Warning: HTTP codes 401, 403, and 404 are considered permanent failures and are not retried.
Performance requirement: Respond within 3 seconds. We recommend storing the data immediately and processing it asynchronously. If your script is slow, our system waits before sending the next callback.
| modem | string Number that received the message from your correspondent. Blank if not applicable. |
| numero | string Phone number of the sender (your correspondent) in international format. |
| reference | string Internal reference of the received message. ⚠️ This reference does not match the reference of the sent message to which the recipient may have replied. |
| ts | integer Unix (POSIX) timestamp of message reception (Paris time). |
| charset | string Character set used for encoding the message content. |
| keyword | string Keyword used for reception (shared numbers only). |
| message | string Content of the message received from your correspondent. |
| link_reference | string Reference of the last message sent to this phone number from your account. Warning: This is not necessarily the message the person wanted to reply to if you have sent them more than one. |