Bulk SMS
Text2reach API has simple HTTP GET request interface and also JSON-RPC interface. To use JSON-RPC interface, please read the JSON-RPC Specification.
API rate limits
To ensure fair usage and system stability, we enforce rate limits on all API requests.
Requests Allowed: 300 per 10 seconds (per client).
Exceeding these limits will result in a 429 Too Many Requests HTTP error response.
If your application receives a 429 error, you must stop sending requests immediately and wait until the limit resets.
The response will include a standard HTTP header to indicate the required wait time: Retry-After. The time, in seconds, the client should wait before making a new request.
Best Practice: Implement logic in your application that reads the Retry-After header and dynamically pauses subsequent requests for the specified duration.
1. Send SMS
1.1 HTTP interface
To send a bulk message, SP must make a HTTP GET request to address: https://api.text2reach.com/sms/send query string values are specified below in the parameters table. All parameters should be properly url-encoded. The returned HTML body for the request will be a message ID or an error code in plain text format (or a detailed JSON object if requested).
Example: https://api.text2reach.com/sms/send?api_key=XXXXXXXXXXXXX &phone=37126378162&from=29180083&message=Hello+world
1.2 JSON-RPC interface
To send a bulk message, SP must make a JSON-RPC request to address: https://api.text2reach.com/sms/?api_key=XXXXXXXXXXXXXX
Method:
send( from, phone, message, type, unicode, timestamp, report_url, expires, schedule, blacklist )Example:
<?php
require_once 'jsonRPCClient.php';
define("API_KEY", "XXXXXXXXXXXX");
$j = new jsonRPCClient("https://api.text2reach.com/sms/?api_key=" . API_KEY);
$msg_id = $j->send(
'aaaaaaaaaa',
'37125924564',
'Hello world!',
'txt',
false,
0,
'http://www.yoursite.com/sms/report/handler/',
0,
0,
false
);
// save the $msg_id in DB and use it for report requests
?>
1.3 Custom fields
| Name | Description |
| {sms_unsubscribe_link} | Unsubscribe link – This custom field will include a unique link in the message for each recipient where the recipient can unsubscribe from future SMS. The link will take the recipient to a landing page where they will be asked to confirm the unsubscribe process. If the recipient confirms the unsubscribe process, the recipient’s number will be added to the client account blacklist, and future SMS sending to this number will be rejected until the number is removed from the blacklist. Numbers in the blacklist are added as recipient number + sender name, which means that the recipient unsubscribes only from specific sender name / brand messages. |
| {pin:*:6:3600} | PIN / Verification code – this custom field will include unique code in message body which will be sent to recipient. Sent code can be validated over API request. More information about PIN code variables and verification process see section 8. PIN / Verification code |
1.4 Parameters
| Name | Required | Default value | Description |
| api_key | yes | – | Your registered Bulk API key |
| from | yes | – | source address of the message |
| phone | yes | – | destination address in international form |
| message | yes | – | plain text message up to 160 (1071) characters, Unicode message up to 70 (469) characters |
| type | no | txt | message type (“txt” for text, “bin” for binary) |
| unicode | no | true | if set to false, characters not in GSM 7bit alphabet will be converted (ā => a) or removed |
| timestamp | no | 0 | Unix timestamp of a time when end user opted in to receive messages. If parameter is not set the current timestamp is used. |
| report_url | no | false | URL for delivery reports |
| expires | no | 0 | Delivery time in seconds |
| schedule | no | – | Unix timestamp of a time when the message is scheduled for delivery |
| blacklist | no | false | Checks if the number is in blacklist before sending. Returns error -503 if found |
| format | no | – | Response format. If not set, the response will be a message ID or an error code in plain text format. If set to “json”, the response will be in JSON format. If the request was not successful or in case of an error, the ‘success’ field will be set to 0. JSON format: { ‘success’: 1|0, ‘message’: ‘ok’|’error’, ‘data’: { ‘msg_id’: 1234567890, ‘status’: ‘submitted’|’error’, ‘error’: ‘error message’ } } |
1.5 Description
This bulk API call will send the text message to the provided phone number. Your account will be checked for the required funds. If the message cannot be sent, the response will be a negative integer representing the error.
The message will be considered as plain if all the characters are present in the GSM 7bit alphabet (see the table below). It is possible to send up to 1071 characters which will be split into seven parts, 153 characters per part. You will be charged for each part accordingly. 7 characters out of 160 are reserved to identify and concatenate multiple parts and applies only to messages having more than one part. If the message contains unicode characters then you can send up to 469 characters, 63 characters per part, max 7 parts. 7 characters out of 63 are reserved to identify and concatenate multiple parts and applies only to messages having more than one part.
The mandatory parameter “from” can be a telephone number in international format, a short code or a textual sender name. Maximum length of an international number is 15 digits not including “+” or “00” prefix. Maximum length of a textual sender name is 11 alphanumeric characters.
The optional parameter “type” specifies the format of the parameter “message”. In case the type is set to “bin”, parameter “message” should be in hexadecimal format.
The optional parameter “unicode” specifies the encoding used for parameter “message”. If it is set to “false”, then the message will be checked against GSM 7bit alphabet (see the table below) and all the symbols not in the table will be converted to the respective latin characters or completely removed. If the parameter “unicode” is set to “true” and the message contains characters not in the GSM 7bit alphabet, then the message will be considered as utf-8 and reduce the length of the message to 70 (469) characters.
The optional parameter “timestamp” specifies the time when the user opted in to receive the message. If an end user has signed up for your service and has provided a mobile phone number to receive advertisements or informational messages, then you should provide “timestamp” parameter with the sign-up time. If an owner of a mobile phone number is changed, number is closed or operator is changed, then the message will not be sent. If the new owner of a number opts in to receive messages, a new timestamp should be used.
The “report_url” parameter should be used to receive delivery reports for sent messages. Please see below for detailed request specification.
If the “expire” parameter is not specified, the operator default expire time is used. If specified and the message is not delivered in the specified amount of seconds, you will received “expired” status. Exact behavior depends on the end user mobile phone operator validity period of the message and is not guaranteed to match the expire time specified in the parameter.
The “schedule” parameter should be set if you want to delay the delivery of the message. The parameter must be in two weeks range from the current time.
2. Manual delivery reports
You can request a status of the sent message by an api call.
2.1 HTTP interface
To request a status, SP must make a HTTP GET request to address: https://api.text2reach.com/sms/status query string values are specified below in the parameters table. The returned HTTP body will contain a status of the message.
Example:
https://api.text2reach.com/sms/status?api_key=XXXXXXXXXXXX&msg_id=1234567
2.2 JSON-RPC interface
To request a status, SP must make a JSON-RPC request to address: https://api.text2reach.com/sms/?api_key=XXXXXXXXXXXX
Method:
status( msg_id )Example:
<?php
require_once 'jsonRPCClient.php';
define("API_KEY", "XXXXXXXXXXXX");
$j = new jsonRPCClient("https://api.text2reach.com/sms/?api_key=" . API_KEY);
$status = $j->status(1234567);
// save the status in DB for the msg_id=1234567
?>
2.3 Parameters
| Name | Required | Default value | Description |
| api_key | yes | – | your registered Bulk API key |
| msg_id | yes | – | message ID from “bulk send” api call |
3. Automatic delivery reports
Alternatively reports will be delivered to the “report_url” if it is provided in the send bulk api call. Delivery interface will be the same as used in the sending, e.g., if you used json-rpc interface to send a message, then the delivery report will be sent through json-rpc interface, too.
3.1 HTTP interface
SMSGW makes a HTTP GET request to a “report_url” address provided by SP with the parameters found below. The SP handler script must respond with text “OK” or else the report will be retried for a total of 10 times with 2n minutes interval (n – retries counter) and then discarded.
3.2 JSON-RPC interface
To handle report requests through JSON-RPC interface, you must have the minimum implementation as provided below:
<?php
require_once 'jsonRPCServer.php';
class handler {
public function report($msg_id, $status, $retries) {
// handle the report
return true;
}
}
$server = new handler();
jsonRPCServer::handle($server) or die('Invalid request');
?>
3.3 Parameters
| Name | Description |
| msg_id | message id of the message this report belongs to, provided as a result of sending the message |
| status | status of the sent message, delivered – the message was delivered successfully undelivered – the message was not delivered expired – the delivery reached time limit and was considered undelivered canceled – the message was canceled before scheduled sendout rejected – the message was rejected by SMSGW and was not charged pending – the message is not jet delivered (this status is only reported using manual delivery checking) unknown – message status is not known |
| retries | how many times platform tried to deliver report to the “report_url” |
4. Extended delivery report
You can request a details of the sent message by an api call.
4.1 HTTP interface
To request a details, SP must make a HTTP GET request to address: https://api.text2reach.com/sms/details query string values are specified below in the parameters table. The returned HTTP body will contain a status of the message.
4.2 JSON-RPC interface
To request a detailed status, SP must make a JSON-RPC request to address:https://api.text2reach.com/sms/?api_key=XXXXXXXXXXXX
Method:
details( msg_id )Example:
<?php
require_once 'jsonRPCClient.php';
define("API_KEY", "XXXXXXXXXXXX");
$j = new jsonRPCClient("https://api.text2reach.com/sms/?api_key=" . API_KEY);
$status = $j->status(1234567);
// save the status in DB for the msg_id=1234567
?>
4.3 Parameters
| Name | Required | Default value | Description |
| api_key | yes | – | your registered Bulk API key |
| msg_id | yes | – | message ID from “bulk send” api call |
4.4 Returns
Error:
{
"success" : 0,
"message" : "Unknown msg_id",
"data" : []
}Successfull:
{
"success" : 1,
"message" : "ok",
"data" : {
"msg_id" : "1234567",
"source" : "info", // from number/alpha
"destination" : "37129123456", // to number
"country" : {
"name" : "Latvia",
"iso" : "lv",
"mcc" : "247"
},
"operator" : {
"name":"Best Mobile Operator",
"mnc":"10"
},
"created" : "2017-01-01 10:00:00",
"delivered" : "2017-01-01 10:00:03",
"schedule" : "N",
"scheduled" : null,
"message" : "Hello World!",
"multipart" : "N",
"parts" : 1,
"price: : 0.0232,
"sum" : 0.0232,
"status" : "delivered" // statuses: delivered | undelivered | expired | canceled | rejected | pending
}
}5. Cancel SMS
You can cancel pending/scheduled message by an api call.
5.1 HTTP interface
Example:
https://api.text2reach.com/sms/cancel?api_key=XXXXXXXXXXXX&msg_id=1234567
To cancel message sending, SP must make a HTTP GET request to address: https://api.text2reach.com/sms/cancel query string values are specified below in the parameters table. The returned HTTP body will contain a status of the message.
5.2 JSON-RPC interface
To cancel message sending, SP must make a JSON-RPC request to address:https://api.text2reach.com/sms/?api_key=XXXXXXXXXXXX
Method:
cancel( msg_id )Example:
<?php
require_once 'jsonRPCClient.php';
define("API_KEY", "XXXXXXXXXXXX");
$j = new jsonRPCClient("https://api.text2reach.com/sms/?api_key=" . API_KEY);
$result = $j->cancel(1234567);
// result = ok | forbidden | error | unknown
?>
5.3 Parameters
| Name | Required | Default value | Description |
| api_key | yes | – | your registered Bulk API key |
| msg_id | yes | – | message ID from “bulk send” api call |
6. Credits balance
Prepaid customers can request remains of credits on account.
6.1 HTTP interface
To request a balance, SP must make a HTTP GET request to address: https://api.text2reach.com/sms/credit The returned HTTP body will contain a amount of credits.
Example:
https://api.text2reach.com/sms/credit?api_key=XXXXXXXXXXXX
6.2 JSON-RPC interface
To request a status, SP must make a JSON-RPC request to address:https://api.text2reach.com/sms/?api_key=XXXXXXXXXXXX
Method:
credit()Example:
<?php
require_once 'jsonRPCClient.php';
define("API_KEY", "XXXXXXXXXXXX");
$j = new jsonRPCClient("https://api.text2reach.com/sms/?api_key=" . API_KEY);
$prices = $j->credit();
?>6.3 Parameters
| Name | Required | Default value | Description |
| api_key | yes | – | your registered Bulk API key |
7. Prices
7.1 HTTP interface
To get all available prices by countries, SP must make a HTTP GET request to address: https://api.text2reach.com/sms/prices query string values are specified below in the parameters table. The returned HTTP body will contain an json structure.
Example:
https://api.text2reach.com/sms/prices?api_key=XXXXXXXXXXXX&format=json
Are available follows formats (only HTTP interface):
json – Price in JSON format. This is default format.
csv – prices in csv-file with comma delimeter
xls – prices in Excel format file
7.2 JSON-RPC interface
To get all available prices by countries, SP must make a JSON-RPC request to address:https://api.text2reach.com/sms/?api_key=XXXXXXXXXXXX
Method:
prices()Example:
<?php
require_once 'jsonRPCClient.php';
define("API_KEY", "XXXXXXXXXXXX");
$j = new jsonRPCClient("https://api.text2reach.com/sms/?api_key=" . API_KEY);
$prices = $j->prices();
?>
7.3 Parameters
| Name | Required | Default value | Description |
| api_key | yes | – | your registered Bulk API key |
7.4 Returns
Example:
[
...
{
country : "Belgium",
iso : "be",
code : 32,
operator: "Proximus",
mcc : 206,
mnc : 1,
type : "all",
price : 0.123456,
note : null
},
...
]8. PIN / Verification code
Text2Reach API provides functionality to generate PIN code using custom fields in message body. To generate unique PIN code, you need to include custom field in any place of message body when sending SMS.
8.1 Custom field template
{PIN:<TYPE>:<length>:<validity_period>}8.2 Custom field variables
| Variable | Mandatory | Description |
| Type | yes | * – Alpha + numeric PIN code (A1B2) N – Only Numeric PIN code (1234) A – Only Alpha PIN code (ABCD) |
| Length | yes | Symbol count in numeric value |
| Validity period | yes | Validity period in seconds |
8.3 Custom field example
To send PIN code that consists of Alpha and Numeric values, is 8 characters long and is valid for one hour you need to insert following custom fields in any place in message body
{PIN:*:8:3600}8.4 Custom API endpoint
https://api.text2reach.com/sms/pin8.5 Request parameters
| Parameter | Description |
| api_key | API key that was used to request pin code generation |
| phone | Phone number to verify |
| pin | PIN code to verify |
8.6 Request example
https://api.text2reach.com/sms/pin?api_key=XXXXXXXXXXXX&phone=3712123123&pin=A1B2
8.7 Response codes
| Response | Description |
| VALID | PIN code is valid and matches to the one that was sent to phone number. |
| UNKNOWN | PIN code does not match to the one that was sent to phone number. |
| EXPIRED | PIN code has expired |
Error codes
If the message cannot be sent, the return value for msg_id will contain a negative integer which represents an error from the table below:
| Value | Description |
| -10 | Geneal system error |
| -11 | Wrong API KEY for the request |
| -12 | Wrong Message ID |
| -14 | Wrong source address |
| -15 | Wrong destination address |
| -16 | Wrong “type”, must be “txt” or “bin” |
| -17 | Wrong message length (empty) |
| -18 | Wrong message length (too long) |
| -19 | Wrong “schedule” value |
| -20 | Wrong “expires” value |
| -21 | Phone in blacklist |
| -22 | No route destination |
| -34 | Message failed |
| -35 | Client undefined |
GSM 7bit characters
| Hex | Decimal | Character name | Supported character |
|---|---|---|---|
| 0x00 | 0 | COMMERCIAL AT | @ |
| 0x01 | 1 | POUND SIGN | £ |
| 0x02 | 2 | DOLLAR SIGN | $ |
| 0x03 | 3 | YEN SIGN | ¥ |
| 0x04 | 4 | LATIN SMALL LETTER E WITH GRAVE | è |
| 0x05 | 5 | LATIN SMALL LETTER E WITH ACUTE | é |
| 0x06 | 6 | LATIN SMALL LETTER U WITH GRAVE | ù |
| 0x07 | 7 | LATIN SMALL LETTER I WITH GRAVE | ì |
| 0x08 | 8 | LATIN SMALL LETTER O WITH GRAVE | ò |
| 0x09 | 9 | LATIN CAPITAL LETTER C WITH CEDILLA | Ç |
| 0x0A | 10 | LINE FEED | |
| 0x0B | 11 | LATIN CAPITAL LETTER O WITH STROKE | Ø |
| 0x0C | 12 | LATIN SMALL LETTER O WITH STROKE | ø |
| 0x0D | 13 | CARRIAGE RETURN | |
| 0x0E | 14 | LATIN CAPITAL LETTER A WITH RING ABOVE | Å |
| 0x0F | 15 | LATIN SMALL LETTER A WITH RING ABOVE | å |
| 0x10 | 16 | GREEK CAPITAL LETTER DELTA | Δ |
| 0x11 | 17 | LOW LINE | _ |
| 0x12 | 18 | GREEK CAPITAL LETTER PHI | Φ |
| 0x13 | 19 | GREEK CAPITAL LETTER GAMMA | Γ |
| 0x14 | 20 | GREEK CAPITAL LETTER LAMBDA | Λ |
| 0x15 | 21 | GREEK CAPITAL LETTER OMEGA | Ω |
| 0x16 | 22 | GREEK CAPITAL LETTER PI | Π |
| 0x17 | 23 | GREEK CAPITAL LETTER PSI | Ψ |
| 0x18 | 24 | GREEK CAPITAL LETTER SIGMA | Σ |
| 0x19 | 25 | GREEK CAPITAL LETTER THETA | Θ |
| 0x1A | 26 | GREEK CAPITAL LETTER XI | Ξ |
| 0x1B | 27 | ESCAPE TO EXTENSION TABLE | |
| 0x1C | 28 | LATIN CAPITAL LETTER AE | Æ |
| 0x1D | 29 | LATIN SMALL LETTER AE | æ |
| 0x1E | 30 | LATIN SMALL LETTER SHARP S(German) | ß |
| 0x1F | 31 | LATIN CAPITAL LETTER E WITH ACUTE | É |
| 0x20 | 32 | SPACE | |
| 0x21 | 33 | EXCLAMATION MARK | ! |
| 0x22 | 34 | QUOTATION MARK | “ |
| 0x23 | 35 | NUMBER SIGN | # |
| 0x24 | 36 | CURRENCY SIGN | ¤ |
| 0x25 | 37 | PERCENT SIGN | % |
| 0x26 | 38 | AMPERSAND | & |
| 0x27 | 39 | APOSTROPHE | ‘ |
| 0x28 | 40 | LEFT PARENTHESIS | ( |
| 0x29 | 41 | RIGHT PARENTHESIS | ) |
| 0x2A | 42 | ASTERISK | * |
| 0x2B | 43 | PLUS SIGN | + |
| 0x2C | 44 | COMMA | , |
| 0x2D | 45 | HYPHEN-MINUS | – |
| 0x2E | 46 | FULL STOP | . |
| 0x2F | 47 | SOLIDUS(SLASH) | / |
| 0x30 | 48 | DIGIT ZERO | 0 |
| 0x31 | 49 | DIGIT ONE | 1 |
| 0x32 | 50 | DIGIT TWO | 2 |
| 0x33 | 51 | DIGIT THREE | 3 |
| 0x34 | 52 | DIGIT FOUR | 4 |
| 0x35 | 53 | DIGIT FIVE | 5 |
| 0x36 | 54 | DIGIT SIX | 6 |
| 0x37 | 55 | DIGIT SEVEN | 7 |
| 0x38 | 56 | DIGIT EIGHT | 8 |
| 0x39 | 57 | DIGIT NINE | 9 |
| 0x3A | 58 | COLON | : |
| 0x3B | 59 | SEMICOLON | ; |
| 0x3C | 60 | LESS-THAN SIGN | < |
| 0x3D | 61 | EQUALS SIGN | = |
| 0x3E | 62 | GREATER-THAN SIGN | > |
| 0x3F | 63 | QUESTION MARK | ? |
| 0x40 | 64 | INVERTED EXCLAMATION MARK | ¡ |
| 0x41 | 65 | LATIN CAPITAL LETTER A | A |
| 0x42 | 66 | LATIN CAPITAL LETTER B | B |
| 0x43 | 67 | LATIN CAPITAL LETTER C | C |
| 0x44 | 68 | LATIN CAPITAL LETTER D | D |
| 0x45 | 69 | LATIN CAPITAL LETTER E | E |
| 0x46 | 70 | LATIN CAPITAL LETTER F | F |
| 0x47 | 71 | LATIN CAPITAL LETTER G | G |
| 0x48 | 72 | LATIN CAPITAL LETTER H | H |
| 0x49 | 73 | LATIN CAPITAL LETTER I | I |
| 0x4A | 74 | LATIN CAPITAL LETTER J | J |
| 0x4B | 75 | LATIN CAPITAL LETTER K | K |
| 0x4C | 76 | LATIN CAPITAL LETTER L | L |
| 0x4D | 77 | LATIN CAPITAL LETTER M | M |
| 0x4E | 78 | LATIN CAPITAL LETTER N | N |
| 0x4F | 79 | LATIN CAPITAL LETTER O | O |
| 0x50 | 80 | LATIN CAPITAL LETTER P | P |
| 0x51 | 81 | LATIN CAPITAL LETTER Q | Q |
| 0x52 | 82 | LATIN CAPITAL LETTER R | R |
| 0x53 | 83 | LATIN CAPITAL LETTER S | S |
| 0x54 | 84 | LATIN CAPITAL LETTER T | T |
| 0x55 | 85 | LATIN CAPITAL LETTER U | U |
| 0x56 | 86 | LATIN CAPITAL LETTER V | V |
| 0x57 | 87 | LATIN CAPITAL LETTER W | W |
| 0x58 | 88 | LATIN CAPITAL LETTER X | X |
| 0x59 | 89 | LATIN CAPITAL LETTER Y | Y |
| 0x5A | 90 | LATIN CAPITAL LETTER Z | Z |
| 0x5B | 91 | LATIN CAPITAL LETTER A WITH DIAERESIS | Ä |
| 0x5C | 92 | LATIN CAPITAL LETTER O WITH DIAERESIS | Ö |
| 0x5D | 93 | LATIN CAPITAL LETTER N WITH TILDE | Ñ |
| 0x5E | 94 | LATIN CAPITAL LETTER U WITH DIAERESIS | Ü |
| 0x5F | 95 | SECTION SIGN | § |
| 0x60 | 96 | INVERTED QUESTION MARK | ¿ |
| 0x61 | 97 | LATIN SMALL LETTER A | a |
| 0x62 | 98 | LATIN SMALL LETTER B | b |
| 0x63 | 99 | LATIN SMALL LETTER C | c |
| 0x64 | 100 | LATIN SMALL LETTER D | d |
| 0x65 | 101 | LATIN SMALL LETTER E | e |
| 0x66 | 102 | LATIN SMALL LETTER F | f |
| 0x67 | 103 | LATIN SMALL LETTER G | g |
| 0x68 | 104 | LATIN SMALL LETTER H | h |
| 0x69 | 105 | LATIN SMALL LETTER I | i |
| 0x6A | 106 | LATIN SMALL LETTER J | j |
| 0x6B | 107 | LATIN SMALL LETTER K | k |
| 0x6C | 108 | LATIN SMALL LETTER L | l |
| 0x6D | 109 | LATIN SMALL LETTER M | m |
| 0x6E | 110 | LATIN SMALL LETTER N | n |
| 0x6F | 111 | LATIN SMALL LETTER O | o |
| 0x70 | 112 | LATIN SMALL LETTER P | p |
| 0x71 | 113 | LATIN SMALL LETTER Q | q |
| 0x72 | 114 | LATIN SMALL LETTER R | r |
| 0x73 | 115 | LATIN SMALL LETTER S | s |
| 0x74 | 116 | LATIN SMALL LETTER T | t |
| 0x75 | 117 | LATIN SMALL LETTER U | u |
| 0x76 | 118 | LATIN SMALL LETTER V | v |
| 0x77 | 119 | LATIN SMALL LETTER W | w |
| 0x78 | 120 | LATIN SMALL LETTER X | x |
| 0x79 | 121 | LATIN SMALL LETTER Y | y |
| 0x7A | 122 | LATIN SMALL LETTER Z | z |
| 0x7B | 123 | LATIN SMALL LETTER A WITH DIAERESIS | ä |
| 0x7C | 124 | LATIN SMALL LETTER O WITH DIAERESIS | ö |
| 0x7D | 125 | LATIN SMALL LETTER N WITH TILDE | ñ |
| 0x7E | 126 | LATIN SMALL LETTER U WITH DIAERESIS | ü |
| 0x7F | 127 | LATIN SMALL LETTER A WITH GRAVE | à |
Extended GSM 7bit characters 1
| Hex | Decimal | Character name | Supported character |
|---|---|---|---|
| 0x1B65 | 27 101 | EURO SIGN | € |
| 0x1B0A | 27 10 | FORM FEED | <FF> |
| 0x1B3C | 27 60 | LEFT SQUARE BRACKET | [ |
| 0x1B2F | 27 47 | REVERSE SOLIDUS(BACKSLASH) | \ |
| 0x1B3E | 27 62 | RIGHT SQUARE BRACKET | ] |
| 0x1B14 | 27 20 | CIRCUMFLEX ACCENT | ^ |
| 0x1B28 | 27 40 | LEFT CURLY BRACKET | { |
| 0x1B40 | 27 64 | VERTICAL BAR | | |
| 0x1B29 | 27 41 | RIGHT CURLY BRACKET | } |
| 0x1B3D | 27 61 | TILDE | ~ |
1 – These additional characters, known as the Extended GSM character set, require two standard GSM characters for each extended GSM character because they use the escape character prefix.