diff --git a/docs/extra.css b/docs/extra.css
index 89afa6ed..af562fc2 100644
--- a/docs/extra.css
+++ b/docs/extra.css
@@ -165,6 +165,12 @@
#sidebar-nav #nav-item-sms-and-fax:hover {
background-image: url('https://netstorage.ringcentral.com/dpw/api-reference/icons/group_icon_messaging_hover.svg');
}
+#sidebar-nav #nav-item-global-business-sms {
+ background-image: url('https://netstorage.ringcentral.com/dpw/api-reference/icons/group_icon_messaging.svg?v=2020032620200227-0720');
+}
+#sidebar-nav #nav-item-global-business-sms:hover {
+ background-image: url('https://netstorage.ringcentral.com/dpw/api-reference/icons/group_icon_messaging_hover.svg');
+}
#sidebar-nav #nav-item-team-messaging {
background-image: url('https://netstorage.ringcentral.com/dpw/api-reference/icons/group_icon_glip.svg?v=2020032620200227-0720');
}
diff --git a/docs/global SMS/delivery-report.md b/docs/global SMS/delivery-report.md
new file mode 100644
index 00000000..e7c19d06
--- /dev/null
+++ b/docs/global SMS/delivery-report.md
@@ -0,0 +1,209 @@
+# Delivery Report
+
+Delivery reports are a way to track if your messages are getting sent properly.
+
+---
+
+## What is a delivery report?
+
+After receiving a message, the handset responds to the operator with Delivery Report (DLR) to indicate if and when the message was delivered.
+
+Each time you send a message, we generate an ID that is unique to this particular message.
+
+!!! note
+ There are 2 ways you can get the status of the sent messages:
+
+ * Add a callback URL to your message. The service will make a POST request with the relevant information to the callback any time the message status changes (suggested option).
+ * You can request a delivery report by manually making a call to the API.
+
+!!! tip
+ The easiest way to use the Global Business SMS API is with our [official libraries](development-libraries.md). They will take care of authentication, request validation and response handling automatically.
+
+---
+
+## Option 1. Add a callback URL to the message
+
+A HTTP POST request is made to the URL in dlr_url property for every status update.
+
+### Callback URL
+
+The provided Delivery report URL (dlr_url) endpoint should respond with a HTTP status code within the range 200-399, otherwise the DRL will be considered undelivered.
+
+To validate the authenticity of callback request, you can use the X-Messente-Signature header.
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/get-dlr.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/get-dlr.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/get-dlr.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/get-dlr.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/get-dlr.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/get-dlr.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/get-dlr.sh !}
+ ```
+
+### Report structure in callback request
+
+Example of a successful message.
+
+```json
+{
+ "status": "DELIVRD",
+ "sender": "MySender",
+ "err": 0,
+ "message_id": "3e28ec48-d620-4191-a96e-d91ba8ecc949",
+ "to": "+3725555555",
+ "channel": "sms",
+ "error": null,
+ "omnimessage_id": "d7248cda-6c1a-4436-acf5-aaf249bb67d3",
+ "timestamp": "2020-02-04T08:09:42.389630",
+ "price_info": {
+ "part_price": "0.1",
+ "parts_count": 2,
+ "total_price": "0.2"
+ }
+}
+```
+
+---
+
+## Option 2. Make an API call
+
+For most cases using dlr_url is a more suitable approach. Sometimes it's useful (usually for debugging purposes) to request the status of a specific message. In that case you can make a request to the API with the Omnimessage ID you need status of.
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/get-sync-dlr.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/get-sync-dlr.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/get-sync-dlr.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/get-sync-dlr.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/get-sync-dlr.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/get-sync-dlr.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/get-sync-dlr.sh !}
+ ```
+
+!!! danger "Caution"
+ Requesting regular updates for every message via API calls is very resource-heavy and costly approach. Before implementing, please consider using Option 1.
+
+### Report structure in API response
+
+Example of a successful message.
+
+```json
+{
+ "omnimessage_id": "6e29aeef-f43d-4dc0-bd12-195374c845fa",
+ "statuses": [
+ {
+ "status": "DELIVRD",
+ "sender": "MySender",
+ "err": 0,
+ "message_id": "3e28ec48-d620-4191-a96e-d91ba8ecc949",
+ "to": "+3725555555",
+ "channel": "sms",
+ "error": null,
+ "omnimessage_id": "d7248cda-6c1a-4436-acf5-aaf249bb67d3",
+ "timestamp": "2020-02-04T08:09:42.389630",
+ "price_info": {
+ "part_price": "0.1",
+ "parts_count": 2,
+ "total_price": "0.2"
+ }
+ }
+ ],
+ "to": "RECIPIENT"
+}
+```
+
+### Difference between `omnimessage_id` and `message_id`
+`message_id` is a unique identifier for a single message and `omnimessage_id` groups messages that are sent with multi-channel fallback.
+
+Although the API can easily be used to send single messages we've built it with multi-channel capabilities in mind. To allow easy migration between the two we add `omnimessage_id` to every message.
+
+---
+
+## List of Message Statuses
+
+There can be various reasons why a message wasn't delivered or hasn't been delivered yet.
+
+| Status Constant | Description |
+| --- | --- |
+| ACK | Operator has accepted the message for delivery |
+| DELIVRD | The message has been successfully delivered to the handset |
+| UNDELIV | Unable to deliver message to the handset |
+| FAILED | Failed to deliver message to the handset |
+| UNKNOWN | Unknown status has been reported by the operator |
+| ACCEPTD | Message has been accepted for the delivery and is in the operators's delivery queue |
+| REJECTD | The message was rejected by the operator |
+| EXPIRED | Delivery of the message expired |
+| NACK | The message delivery has been rejected |
+| SEEN | The message has been seen by the recipient |
+
+
+## Our IP Addresses
+
+For security reasons, you might want to restrict access to your callback URL. Here is the list of IP addresses we use to send requests from, which you can whitelist:
+
+* 95.216.221.43
+* 159.69.33.20
diff --git a/docs/global SMS/development-libraries.md b/docs/global SMS/development-libraries.md
new file mode 100644
index 00000000..dfa91e00
--- /dev/null
+++ b/docs/global SMS/development-libraries.md
@@ -0,0 +1,156 @@
+# Development Libraries
+
+Develop with our API libraries to get the fastest integration experience.
+
+---
+
+!!! warning
+ To get started contact [Developer Relations](https://developers.ringcentral.com/sms-api#requestinfo).
+
+## Install a library
+
+We have API libraries for various programming languages. Select your preferred programming language and follow the instructions.
+
+=== "Python"
+
+ ### With PIP
+
+ To install the API client library, simply execute:
+
+ ```bash
+ pip install messente-api
+ ```
+
+ ### Or with Setuptools
+
+ To install the API client library, simply execute:
+
+ ```bash
+ python setup.py install --user
+ ```
+
+ then import the package:
+
+ ```python
+ import messente_api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-python) and [PyPI](https://pypi.org/project/messente-api) pages.
+
+=== "Node"
+
+ ### Install with npm
+
+ ```bash
+ npm i messente_api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-node) and [npm](https://www.npmjs.com/package/messente_api) pages.
+
+=== "PHP"
+
+ ### Install with composer
+
+ ```bash
+ composer require messente/messente-api-php
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-php) and [packagist](https://packagist.org/packages/messente/messente-api-php) pages.
+
+=== "Java"
+
+ ### Maven users
+
+ Allow fetching messente-api from jcenter by placing a settings.xml file to ~/.m2 maven folder containing the following:
+
+ ```xml
+
+
+
+
+ bintray
+
+
+ central
+ bintray
+ https://jcenter.bintray.com
+
+ false
+
+
+
+
+
+
+ bintray
+
+
+ ```
+
+ To install the API client library to your local Maven repository, add the dependency to your project's POM:
+
+ ```xml
+
+ com.messente.api
+ messente-api
+ 4.2.0
+
+ ```
+
+ Now, you can install the library by running:
+
+ ```bash
+ mvn clean install
+ ```
+
+ ### Gradle users
+
+ Add jcenter repository to your project's build file:
+
+ ```groovy
+ repositories { jcenter() }
+ ```
+
+ Also add the dependency to your project's build file:
+
+ ```groovy
+ dependencies { implementation 'com.messente.api:messente-api' }
+ ```
+
+ ### Others
+
+ Firstly, generate the JAR by executing:
+
+ ```bash
+ mvn package -Dmaven.javadoc.skip=true
+ ```
+
+ Then manually install the following JARs:
+
+ * target/messente-api-$VERSION_NUMBER.jar
+ * target/messente-api-$VERSION_NUMBER-sources.jar
+ * target/lib/*.jar
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-java) and [Bintray](https://bintray.com/messente/messente-api/messente-api) pages.
+
+=== "Ruby"
+
+ ### Install using gem
+
+ ```bash
+ gem install messente_api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-ruby) page and [RubyGems](https://rubygems.org/gems/messente_api) pages.
+
+=== ".NET"
+
+ ### Install using NuGet
+
+ ```powershell
+ Install-Package com.Messente.Api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-csharp) and [NuGet](https://www.nuget.org/packages/com.Messente.Api) pages.
diff --git a/docs/global SMS/inbound-messages.md b/docs/global SMS/inbound-messages.md
new file mode 100644
index 00000000..595abf80
--- /dev/null
+++ b/docs/global SMS/inbound-messages.md
@@ -0,0 +1,55 @@
+---
+id: inbound-messages
+title: Inbound Messages
+slug: /omnichannel-api/inbound-messages
+---
+
+# Inbound Messages
+
+Handling inbound SMS for two-way communication.
+
+---
+
+!!! tip
+ The easiest way to use Global Business SMS is with our [official libraries](development-libraries.md). Libraries will take care of authentication, request validation and response handling.
+
+## Inbound Message Callback
+
+We makes a HTTP POST request with JSON content to configured Inbound Number Callback URL with the following request parameters:
+
+* msg_id
+* sub_msg_id
+* channel
+* recipient
+* time
+* text
+* sender
+
+### Example request
+```json
+POST / HTTP/1.1
+Content-Type: application/json
+X-Messente-Signature: 9a398f4a9ce4f96077e70b65d208420640aabb158c224bd0f29391d673ba6b3d
+
+{
+ "msg_id": "1f5197ec-b4d7-4d5f-8bba-e005d1cadba1",
+ "sub_msg_id": "d276e75e-e9f5-4b44-88aa-d5c7b38a1e4a",
+ "channel": "sms",
+ "recipient": "1234",
+ "time": "2021-02-23T14:51:13.000000Z",
+ "text": "This is a test message content",
+ "sender": "+44000000000"
+}
+```
+
+## Validating the request authenticity
+
+Every request is provided with a signature calculated using [HMAC](https://en.wikipedia.org/wiki/HMAC). The signature is calculated using the Shared Secret, available in the Inbound Numbers section of the Developers view.
+
+Calculated signature is provided in the HTTP headers called `X-Messente-Signature`.
+
+### Signature calculation formula
+
+```php
+HMAC_SHA256("$shared_secret", "$http_request_body")
+```
diff --git a/docs/global SMS/index.md b/docs/global SMS/index.md
new file mode 100644
index 00000000..0c557d10
--- /dev/null
+++ b/docs/global SMS/index.md
@@ -0,0 +1,46 @@
+
+# Introduction to Global Business SMS
+
+!!! info "Independent Account Required: To get started contact [developer relations](https://developers.ringcentral.com/sms-api#requestinfo)"
+
+
+## What You Can Build
+Global Business SMS is ideal for high-volume, global bulk messaging with smart routing across 190+ countries. You can send notifications, verification codes (2FA), and marketing campaigns across multiple conversational platforms using a single, unified payload.
+
+| Channel | Core Capabilities | Best For |
+| :--- | :--- | :--- |
+| **SMS** | Global reach, carrier-level routing, fallback protection. | 2FA codes, critical alerts, urgent notifications. |
+| **WhatsApp** | Rich media (images, PDFs), interactive buttons, verified business profiles. | Customer support, delivery tracking, rich marketing. |
+| **RCS** | Branded carousels, suggested actions, high-engagement native Android messaging. | Interactive product showcases, deep link click-throughs. |
+| **Viber** | Long-form text (up to 1,000 characters), images, CTA buttons, cost-effective routing. | European and Asian market campaigns, transactional receipts. |
+
+---
+
+## Key Features for Developers
+
+* **Smart Fallback Routing:** If a rich message (like WhatsApp or Viber) fails to deliver due to connectivity or app availability, the API can automatically fall back to standard SMS within seconds to guarantee delivery.
+* **Global Compliance Built-In:** Built-in tools to manage sender IDs, templates, and local country regulations automatically, ensuring high deliverability rates.
+* **Unified Analytics:** Track delivery statuses, open rates, and conversion metrics across all channels via webhooks or the dashboard.
+* **Number lookup:** Check number validity and identify mobile vs. landline phones.
+
+---
+
+## Ready to Explore?
+
+To begin testing or moving your high-volume messaging workloads to Ring Central, please reach out to their team to get your API keys and sandbox environment provisioned.
+
+### Implementation Flow
+
+1. **Request an Account**
+ Contact [developer relations](https://developers.ringcentral.com/sms-api#requestinfo) and register for a business account
+
+2. **Explore the API Reference** *(Authentication & Endpoints)*
+ Review the documentation for authentication protocols and base URLs.
+
+3. **Configure Webhooks** *(Real-time Delivery Status)*
+ Set up your server endpoints to listen for live delivery receipts (DLRs) and incoming user replies.
+
+---
+
+### Behind the Scenes: What's Next?
+We are actively designing a unified developer experience where you will eventually be able to manage your RingCentral UCaaS/CCaaS APIs and Global Bussiness SMS messaging tools from a single login, contract, and credential set. Stay tuned to our developer newsletter for integration timelines!
diff --git a/docs/global SMS/keep b/docs/global SMS/keep
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/docs/global SMS/keep
@@ -0,0 +1 @@
+
diff --git a/docs/global SMS/number-lookup.md b/docs/global SMS/number-lookup.md
new file mode 100644
index 00000000..49eed6ec
--- /dev/null
+++ b/docs/global SMS/number-lookup.md
@@ -0,0 +1,114 @@
+# Number Lookup
+
+REST API to find out statuses and network info of phone numbers.
+
+
+
+
+
+---
+
+## Setup
+
+This tutorial will guide you through the setup of the Number Lookup API.
+
+!!! info "Independent Account Required: To get started contact [developer relations](https://developers.ringcentral.com/sms-api#requestinfo)"
+
+
+## API request authentication
+
+### API endpoint
+
+Number Lookup API requests are made to the following server:
+
+```text
+https://api.messente.com
+```
+
+### Authentication
+
+Authentication is done using HTTP Basic Authentication using your API username and password.
+
+### Request and response body
+
+All request and response bodies for the API calls are JSON encoded strings according to the specification.
+
+### Response HTTP status codes
+
+API call responses have status codes according to REST specifications.
+
+Always set Accept and Content-Type headers to application/json as well.
+
+Only 2xx response codes indicate a successful response.
+
+### Number Lookup Call
+
+Request to lookup a number will be made to the following URL:
+
+```text
+POST https://api.messente.com/v1/hlr/sync
+```
+
+### Request Headers
+
+| HTTP header | Value | Required |
+| :--- | :--- | :--- |
+| Content-Type | application/json | Yes |
+| Accept | application/json | Yes |
+
+### Example request
+
+```bash
+curl -X POST \
+ https://api.messente.com/v1/hlr/sync \
+ -u YOUR_MESSENTE_API_USERNAME:YOUR_MESSENTE_API_PASSWORD \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "numbers": [
+ "+37251000000",
+ "+37251000001"
+ ]
+ }'
+```
+
+### Result fields
+
+| Field | Description | Example |
+| :--- | :--- | :--- |
+| `number` | Number queried in e.164 format | e.g. `+15073040148` |
+| `currentNetwork` | Detailed network information object | — |
+| `currentNetwork.mccmnc` | Mobile Country Code and Network Code (e.g., 310 = USA, 170 = AT&T) | e.g. `310170` |
+| `currentNetwork.networkName` | Mobile network name | e.g. `AT&T Mobility` |
+| `currentNetwork.countryName` | Country name | e.g. `United States` |
+| `currentNetwork.countryPrefix` | Country dialling prefix | e.g. `+1` |
+| `currentNetwork.countryCode` | Country code | e.g. `USA` |
+| `ported` | Indicates if a number is ported | `true`, `false` |
+| `portedNetwork` | Network information for the network the number was ported to | `null` / e.g. `T-Mobile` |
+| `roaming` | Indicates if a number is roaming | `true`, `false` |
+| `roamingNetwork` | Network information for the network the number is roaming on | `null` / e.g. `Vodafone` |
+| `status` | Status of phone number. *(Live Toll-Free numbers not text-enabled show as `INVALID`)* | `ON`, `OFF`, `INVALID`, `UNKNOWN` |
+| `type` | Indicates SMS capability: `MOBILE` (Mobiles/text-enabled landlines) or `LANDLINE` (Cannot receive SMS) | `MOBILE`, `LANDLINE` |
+
+#### Example response
+
+```"numbers": [
+ {
+ "number": "+15713152421",
+ "currentNetwork": {
+ "mccmnc": "310160",
+ "networkName": "T-Mobile US",
+ "countryName": "United States",
+ "countryPrefix": "+1",
+ "countryCode": "USA"
+ },
+ "ported": true,
+ "portedNetwork": null,
+ "originalNetwork": null,
+ "roaming": false,
+ "roamingNetwork": null,
+ "status": "ON",
+ "type": "MOBILE"
+ }
+```
+---
+
diff --git a/docs/global SMS/overview.md b/docs/global SMS/overview.md
new file mode 100644
index 00000000..ddb13c67
--- /dev/null
+++ b/docs/global SMS/overview.md
@@ -0,0 +1,307 @@
+# Getting Started
+
+To get started contact [Developer Relations](https://developers.ringcentral.com/sms-api#requestinfo)
+
+!!! tip
+ Upon sign up we will add you some free credits so you can test out the service immediately. With it you can send a few test messages.
+
+## Install a library
+
+The fastest way to get started with the API is to use our official libraries.
+
+Select your preferred programming language and follow the instructions.
+
+=== "Python"
+
+ ### With PIP
+
+ To install the API client library, simply execute:
+
+ ```bash
+ pip install messente-api
+ ```
+
+ ### Or with Setuptools
+
+ To install the API client library, simply execute:
+
+ ```bash
+ python setup.py install --user
+ ```
+
+ then import the package:
+
+ ```python
+ import messente_api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-python) and [PyPI](https://pypi.org/project/messente-api) pages.
+
+=== "Node"
+
+ ### Install with npm
+
+ ```bash
+ npm i messente_api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-node) and [npm](https://www.npmjs.com/package/messente_api) pages.
+
+=== "PHP"
+
+ ### Install with composer
+
+ ```bash
+ composer require messente/messente-api-php
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-php) and [packagist](https://packagist.org/packages/messente/messente-api-php) pages.
+
+=== "Java"
+
+ ### Maven users
+
+ Allow fetching messente-api from jcenter by placing a settings.xml file to ~/.m2 maven folder containing the following:
+
+ ```xml
+
+
+
+
+ bintray
+
+
+ central
+ bintray
+ https://jcenter.bintray.com
+
+ false
+
+
+
+
+
+
+ bintray
+
+
+ ```
+
+ To install the API client library to your local Maven repository, add the dependency to your project's POM:
+
+ ```xml
+
+ com.messente.api
+ messente-api
+ 4.2.0
+
+ ```
+
+ Now, you can install the library by running:
+
+ ```bash
+ mvn clean install
+ ```
+
+ ### Gradle users
+
+ Add jcenter repository to your project's build file:
+
+ ```groovy
+ repositories { jcenter() }
+ ```
+
+ Also add the dependency to your project's build file:
+
+ ```groovy
+ dependencies { implementation 'com.messente.api:messente-api' }
+ ```
+
+ ### Others
+
+ Firstly, generate the JAR by executing:
+
+ ```bash
+ mvn package -Dmaven.javadoc.skip=true
+ ```
+
+ Then manually install the following JARs:
+
+ * target/messente-api-$VERSION_NUMBER.jar
+ * target/messente-api-$VERSION_NUMBER-sources.jar
+ * target/lib/*.jar
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-java) and [Bintray](https://bintray.com/messente/messente-api/messente-api) pages.
+
+=== "Ruby"
+
+ ### Install using gem
+
+ ```bash
+ gem install messente_api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-ruby) page and [RubyGems](https://rubygems.org/gems/messente_api) pages.
+
+=== ".NET"
+
+ ### Install using NuGet
+
+ ```powershell
+ Install-Package com.Messente.Api
+ ```
+
+ Take a look at the library's [GitHub](https://github.com/messente/messente-api-csharp) and [NuGet](https://www.nuget.org/packages/com.Messente.Api) pages.
+
+
+
+## Send a single SMS
+
+Use the following example to send an SMS using Omnichannel API.
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/send-single-sms.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/send-single-sms.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/send-single-sms.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/send-single-sms.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/send-single-sms.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/send-single-sms.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/send-single-sms.sh !}
+ ```
+
+## Get delivery reports
+
+[Status updates](delivery-report.md) are reported back to you.
+
+To be able to view the status, you must add a callback URL to the message. We will use this URL to make HTTP POST requests, if there is a status update.
+
+Here is a code snippet for you to test it out quickly.
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/get-dlr.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/get-dlr.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/get-dlr.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/get-dlr.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/get-dlr.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/get-dlr.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/get-dlr.sh !}
+ ```
+
+[Learn more about the delivery status](delivery-report.md)
+
+## Send an SMS with Omnichannel API
+
+You can also use the Global Business API to send an SMS message directly.
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/send-fallback.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/send-fallback.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/send-fallback.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/send-fallback.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/send-fallback.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/send-fallback.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/send-fallback.sh !}
+ ```
+
+## Next steps
+
+Integrating SMS to your application should never take more than a day.
+Now that you have things set up it's time to get yourself a proper [sender name](sender-name.md).
diff --git a/docs/global SMS/requests-and-authentication.md b/docs/global SMS/requests-and-authentication.md
new file mode 100644
index 00000000..335ec0a6
--- /dev/null
+++ b/docs/global SMS/requests-and-authentication.md
@@ -0,0 +1,60 @@
+---
+id: requests-and-authentication
+title: Requests & Authentication
+slug: /omnichannel-api/requests-and-authentication
+---
+
+# Requests & Authentication
+
+Learn the basics of how to make a request and authenticate yourself.
+
+---
+
+!!! tip
+ The easiest way to use Global Business API is with our [official libraries](development-libraries.md). They will take care of authentication, request validation and response handling automatically.
+
+## Request
+
+### Authentication
+
+Authentication is done using HTTP Basic Authentication with your API username and password. Contact [developer relations](https://developers.ringcentral.com/sms-api#requestinfo) to get started
+
+### Making a Request
+
+API requests are made to the following server:
+
+```text
+https://api.messente.com
+```
+
+You need to pass the Content-Type headers to the API so the response would be in the correct format.
+
+```text
+Accept: application/json
+Content-Type: application/json
+```
+
+!!! warning
+ You need to pass Content-Type and Authentication headers with every request.
+
+Basic request example:
+
+```bash
+curl -X POST \
+ 'https://api.messente.com/v1/omnimessage' \
+ -u MESSENTE_API_USERNAME:MESSENTE_API_PASSWORD \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -d '{ "to": "RECIPIENT_PHONE_NUMBER", "messages": [{ "channel": "sms", "sender": "YOUR_PHONE_NUMBER", "text": "Happy messaging!" }] }, "dlr_url": "YOUR_WEBHOOK_URL"'
+```
+
+### IP Address Whitelisting
+
+We recommend configuring your account to allow API requests only from certain IPs.
+
+If you do not have a fixed IP address, you can also specify the IP address ranges in CIDR notation.
+
+If you need to disable IP address validation, you can set the value to 0.0.0.0/0 (enable all IPv4 addresses).
+
+!!! danger "Security Warning"
+ It is strongly encouraged to whitelist only IP addresses that are used to make HTTP calls to the Global SMS API.
diff --git a/docs/global SMS/scheduled-messages.md b/docs/global SMS/scheduled-messages.md
new file mode 100644
index 00000000..1d081c10
--- /dev/null
+++ b/docs/global SMS/scheduled-messages.md
@@ -0,0 +1,116 @@
+---
+id: scheduled-messages
+title: Scheduled Messages
+slug: /omnichannel-api/scheduled-messages
+---
+
+# Scheduled Messages
+
+Schedule messages to be sent for later.
+
+---
+
+!!! tip
+ The easiest way to use the Global Business SMS API is with our [official libraries](development-libraries.md). They will take care of authentication, request validation and response handling automatically.
+
+## Schedule a message
+
+Send a message with `time_to_send` parameter to schedule it for later. Learn how to compose a message in our [quickstart guide](index.md).
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/schedule-message.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/schedule-message.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/schedule-message.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/schedule-message.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/schedule-message.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/schedule-message.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/schedule-message.sh !}
+ ```
+
+!!! note "Time format"
+ * Time must be specified in the ISO 8601 format.
+ * Default timezone is UTC.
+
+ For example, both of the cases below are allowed:
+
+ * `2019-06-22T09:05` - UTC is set as timezone
+ * `2019-06-22T09:05:07+04:00` - Default timezone is ignored and UTC+4 is used
+
+
+## Cancel a scheduled message
+
+To cancel a scheduled message you need to know the omnimessage_id that you got when you sent out the message.
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/cancel-message.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/cancel-message.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/cancel-message.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/cancel-message.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/cancel-message.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/cancel-message.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/cancel-message.sh !}
+ ```
diff --git a/docs/global SMS/sender-name.md b/docs/global SMS/sender-name.md
new file mode 100644
index 00000000..da72dd1e
--- /dev/null
+++ b/docs/global SMS/sender-name.md
@@ -0,0 +1,37 @@
+---
+id: sender-name
+title: Sender Name
+slug: /omnichannel-api/sender-name
+---
+
+# Sender Name
+
+Identify yourself with a telephone number or as a brand.
+
+---
+
+## What is a Sender Name?
+Your sender name (or Sender ID) is the phone number or name that the recipient sees as the sender of the message.
+
+## Sender types
+Global Business SMS supports 3 different types of sender IDs:
+
+* Regular phone number (eg +372 5555 6666)
+* Shortcode (usually 3-6 characters) (eg 123, 20010)
+* Branded sender name (Volvo, Coca Cola)
+
+!!! tip
+ You can have multiple Sender IDs connected to your account and they are free of charge.
+
+!!! info
+ Registering a branded sender name is a manual process and might take 24 hours or more in some markets. Registration for regular phone number as sender name is automatic and instantaneous.
+
+## Restrictions
+**Phone numbers** as numeric Sender IDs can be up to 15 digits long (excluding the "+" sign) and can include country codes, mobile operator codes, individual phone numbers, destination codes, identifying the subscriber's operator, etc. It's also possible to reply to a phone number by just hitting the reply button.
+
+**Short codes** are special numbers, that are usually shorter than the standard phone numbers and are typically used for things like customer support service, voting or premium rate mobile services.
+
+**Alphanumeric Sender IDs** (or Branded sender names) may include characters from the alphabet (A-Z) numeric characters (0-9) and have the maximum length up to 11 characters. Please note that the SMS recipients cannot reply to alphanumeric Sender IDs.
+
+!!! warning
+ In some countries branded Sender IDs as a feature is not supported due to local legislation or local mobile operators. In these cases most often a random phone number will be displayed as the sender. Contact us for more details.
diff --git a/docs/global SMS/sms-message.md b/docs/global SMS/sms-message.md
new file mode 100644
index 00000000..a79d7f74
--- /dev/null
+++ b/docs/global SMS/sms-message.md
@@ -0,0 +1,120 @@
+# SMS Message
+
+Sending SMS messages with the Global Business SMS API.
+
+---
+
+!!! tip
+ The easiest way to use the Global Business SMS API is with our [official libraries](development-libraries.md). Libraries will take care of authentication, request validation and response handling.
+
+## Send a single SMS
+
+Use the following example to send an SMS using Omnichannel API.
+
+=== "Python"
+
+ ```python
+ {!> code-samples/messaging/global-business/send-single-sms.py !}
+ ```
+
+=== "Node"
+
+ ```javascript
+ {!> code-samples/messaging/global-business/send-single-sms.js !}
+ ```
+
+=== "PHP"
+
+ ```php
+ {!> code-samples/messaging/global-business/send-single-sms.php !}
+ ```
+
+=== "Java"
+
+ ```java
+ {!> code-samples/messaging/global-business/send-single-sms.java !}
+ ```
+
+=== "Ruby"
+
+ ```ruby
+ {!> code-samples/messaging/global-business/send-single-sms.rb !}
+ ```
+
+=== ".NET"
+
+ ```csharp
+ {!> code-samples/messaging/global-business/send-single-sms.cs !}
+ ```
+
+=== "cURL"
+
+ ```bash
+ {!> code-samples/messaging/global-business/send-single-sms.sh !}
+ ```
+
+The API will return a response with an **omnimessage_id**, as well as a **message_id** for each "sub-message" (fallback channel). You can use these IDs to track the [delivery status](delivery-report.md) of the message.
+
+```json
+{
+ "messages": [
+ {
+ "channel": "sms",
+ "message_id": "fr593ce7-68de-5e44-bc50-044a3ad0a7fa",
+ "sender": "YOUR_PHONE_NUMBER"
+ }
+ ],
+ "omnimessage_id": "632c6f3d-49d0-4a8f-5k2n-74023d31e51d",
+ "to": "RECIPIENT_PHONE_NUMBER"
+}
+```
+
+---
+
+## Constructing Messages
+
+There are few things to keep in mind when composing SMS messages.
+
+### Be aware of non-GSM friendly characters
+
+A single SMS can contain 160 characters. However, SMS is built to use 7-bit GSM 03.38 character encoding set and this means that certain unicode characters (that are not in GSM character set) don't fit into the message. You can use an SMS length calculator to check how many characters your message contains and how many SMS messages it will take to send it.
+
+If your message contains any characters not listed in the 7-bit alphabet then the message encoding will be set to UCS-2. With it, the message length is limited to 70 characters.
+
+**By default, the API will convert all non-GSM friendly characters to similar characters in GSM 03.38 encoding set.** This allows you to send messages with non-unicode characters and not worry about the GSM specification.
+
+!!! info
+ You can turn the character replace feature off by configuring the `autoconvert` parameter in the message.
+
+ ```text
+ autoconvert: on(default)|full|off
+ ```
+
+## Message Validity and Retry Policy
+
+The SMS request is forwarded to the operators, who, in turn, will retry SMS delivery for a **minimum of 6 hours.**
+
+That being said, operators differ in their policies so some may retry SMS delivery up to 48 hours in total, starting with shorter retry intervals and switching to longer retry intervals towards the end. Some, on the other hand, may only retry for the required minimum of 6 hours indicated by us.
+
+
+### Error example
+
+```json
+{
+ "errors": [
+ {
+ "code": "105",
+ "detail": "Invalid or disallowed sender Messente",
+ "source": "payload[sms][sender]",
+ "title": "Invalid data"
+ }
+ ]
+}
+```
+
+| Field | Description |
+| --- | --- |
+| `title` | Error message |
+| `detail` | Longer description of the error message |
+| `source` | Location in the request body for this error message |
+| `code` | Machine-readable error code: 101 - Not found 102 - Forbidden 103 - Unauthorized 104 - Internal Server Error 105 - Invalid data 106 - Missing data 107 - Method not allowed |
diff --git a/mkdocs.yml b/mkdocs.yml
index 5b0c89db..618f2f8b 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -174,6 +174,17 @@ nav:
- 'A2P SMS Messaging': 'https://ringcentral-tutorials.github.io/a2p-sms-messaging-nodejs-demo/'
- 'Two-factor Authentication': 'https://ringcentral-tutorials.github.io/sms-2fa-nodejs-demo/'
- 'Custom Fax Cover Pages': 'https://ringcentral-tutorials.github.io/fax-cover-page-nodejs-demo/'
+ - 'Global Business SMS':
+ - 'Overview': 'global SMS/index.md'
+ - 'Getting Started': 'global SMS/overview.md'
+ - 'Sender name': 'global SMS/sender-name.md'
+ - 'Requests & Authentication': 'global SMS/requests-and-authentication.md'
+ - 'Development Libraries': 'global SMS/development-libraries.md'
+ - 'SMS Message': 'global SMS/sms-message.md'
+ - 'Delivery Report': 'global SMS/delivery-report.md'
+ - 'Scheduled Messages': 'global SMS/scheduled-messages.md'
+ - 'Inbound Messages': 'global SMS/inbound-messages.md'
+ - 'Number Lookup': 'global SMS/number-lookup.md'
- 'Team Messaging':
- 'Overview': 'team-messaging/index.md'
- 'Getting Started': 'team-messaging/quick-start.md'