[Go to site: main page, start]

NAV Navbar

Introduction

Mocean API makes sending and receiving SMS easy. Find the documentation, sample code, and developer tools you need to build exactly what you want, fast. We’ll handle the complexity of mobile carrier and global regulations. Let’s get building.

"Ahoy, World" is a few lines of code away. Choose your programming language and dive in. We’ve got helper libraries and Quickstarts to get you sending SMS and Verify in your web app.

You’ve got an idea in mind. Let’s get it to production.

Installation

To install Mocean SDK, run this command in terminal:

# you may need to install curl, if it is not installed
sudo apt install curl
# you need to have pip installed
pip install moceansdk
# you need to have gem installed
gem install moceansdk
// you need to have npm installed
npm install mocean-sdk
# you need to have composer installed
composer require mocean/client
// For installing with Maven, add the following to the correct place in your project's POM file:
<dependency>
      <groupId>com.github.moceanapi</groupId>
      <artifactId>moceanapisdk</artifactId>
      <version>1.x.x</version>
</dependency>

// For installing with Gradle, refers https://github.com/MoceanAPI/mocean-sdk-java
Install-Package Mocean.Csharp.Client -Version 1.0.2.1

Make sure you have the required package manager installed.

Mocean SDK supports up to 6 programming languages for fellow developers to work with. Choose your favourite programming language, and install our SDK to immediately enables your application to send SMS right away!

Otherwise, if a simple curl is what you've preferred. You may send SMS with our curl sample code which will work the same.

Authentication

To authorize Mocean SDK, use the following code:

# include API Token in all HTTP request header to authorize, as demonstrated below:

curl -X GET "https://rest.moceanapi.com/rest/2/account/balance" \
     -H "Authorization: Bearer API_TOKEN_HERE"
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)
from moceansdk import Client, Basic, Transmitter

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)
<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);
?>
const moceansdk = require('mocean-sdk');

const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);
Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);
Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

Mocean uses API Tokens as the authentication method for all requests. An API Token is a secure access credential that you generate from your Dashboard and include in every request. It’s a simple and secure way to integrate with Mocean’s REST APIs.

To start making requests, create a Client with your API Token:

  1. Generate an API Token
    • Log in to your Dashboard.
    • Go to API Account → Generate Token.
    • Copy and store the token securely (it will only be shown once).

SMS API

Overview

Mocean SMS API allows you to send and receive text messages to users around the globe through simple RESTful APIs.

  • Programmatically send and receive high volume of SMS anywhere in the world.
  • Implement SMS features on top of your app without rewriting anything.
  • Build apps that scale with the web technologies that you are already using.
  • Send SMS with low latency and high delivery rates.
  • You only have to pay for SMS you sent, no hidden charges or setup fees.

Concepts

To use the Mocean SMS API, you may need to familiarise yourself with:

  • Authentication - Mocean SMS API is authenticated by your account API Token.
  • Webhooks - HTTP requests are made to your application web server so that you can act upon them. For example, the SMS API will send the delivery receipts and inbound SMS (Receiving an SMS).

Getting Started

Before you begin, please make sure you already have a Mocean API account, or sign up for a Mocean account here.

Send SMS

Example request

# Authenticate using API Token
curl -X POST "https://rest.moceanapi.com/rest/2/sms" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-from=YourCompany" \
  -d "mocean-to=60123456789" \
  -d "mocean-text=Hello"
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.sms.create({
        "mocean-text"=>'Hello World',
        "mocean-from"=>'MOCEAN',
        "mocean-to"=>'60123456789'
        }).send()

print res
from moceansdk import Client, Basic, Transmitter

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

res = mocean.sms.create({
    "mocean-from": "MOCEAN",
    "mocean-to": 60123456789,
    "mocean-text": "Hello World"
}).send()

print(res)
<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$result = $mocean->message()->send([
    'mocean-to' => '60123456789',
    'mocean-from' => 'MOCEAN',
    'mocean-text' => 'Hello World',
    'mocean-resp-format' => 'json'
]);

echo $result;
?>
const moceansdk = require('mocean-sdk');

const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

mocean.sms().send({
  mocean-from: 'MOCEAN',
  mocean-to: '60123456789',
  mocean-text: 'Hello World'
}, function(err, res) {
  if(err) throw err;
  console.log(res);
});
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

String res = mocean.sms()
             .setFrom("MOCEAN")
             .setTo("60123456789")
             .setText("Hello World")
             .send();

System.out.println(res);        
var credentials = new Basic("API_KEY_HERE", "API_SECRET_HERE");
var client = new Client(credentials);

var res = client.Sms.Send(new Mocean.Message.SmsRequest
{
    mocean_to = "60173788399",
    mocean_from = "MOCEAN",
    mocean_text = "Hello World"
});

Console.WriteLine(res);

Send an outbound SMS from your Mocean account HTTP status code 202 (Accepted) will be returned for a successful request.

POST https://rest.moceanapi.com/rest/2/sms

Query Parameter

A successful response for MT-SMS will be as follows:

{
  "messages":[
    {
      "status": 0,
      "receiver": "60173788399",
      "msgid": "cust20013050311050614001"
    }
  ]
}

While unsuccessfully response will be as follows:

{
  "messages":[
    {
      "status": 1,
      "err_msg": "Authorization failed"
    }
  ]
}
Parameter Format Description
mocean-from
required
string SMS Sender ID (also referred as to SMS Sender Name) is the information that is displayed to the recipient as the sender of the SMS when a message is received at a mobile device.
mocean-to
required
string Phone number of the receiver. To send to multiple receivers, separate each entry with white space (‘ ’) or comma (,). Phone number must include country code, for example, a Malaysian phone number will be like 60123456789.

Note*: You can send up to a maximum of 500 receivers per request.
mocean-text
required
string Contents of the message, URL encoded as necessary (e.g. Text+message+test%21). If you are sending binary content, this will be a hex string. For example, 030616AE966C6F...

Note*: When multiple recipients are provided, the recipients will receive the same content. Custom messages to each recipient are not allowed.
mocean-udh
optional
string User Data Header (UDH) part of the message. For example, 0605040B8423F0.
mocean-coding
optional
number Sets the coding scheme bits in DCS field. Accepts values 1 to 3, for 7-bit, 8-bit and UCS2 respectively. If unset, defaults to 7 bits unless a mocean-udh is defined, which sets coding to 8-bit. If charset is not set or set to UTF-8, when non-GSM character is detected, coding will set to UCS2.
mocean-dlr-mask
optional
number Request for delivery reports with the state of the sent message. To enable delivery reports, set this value to ‘1’. If this field is not specified, the default value will be ‘0’ and no DLR will be returned.
mocean-dlr-url
optional
URL URL to receive delivery reports. This is required if DLR is requested.
mocean-schedule
optional
datetime When this field is used, the message will be sent out on the specified date time (on best effort basis due to large number of SMS is queued for scheduling). The format of the date time is YYYY-MM-DD hh:mm:ss (in 24-hours format, e.g. 2007-02-11 23:30:00). The wrong date format will cause the gateway to reject the request. NOTE: Please use Malaysia time (or GMT +8:00) while making scheduled SMS request.
mocean-mclass
optional
number To send Flash SMS, set mocean-mclass and mocean-alt-dcs value to '1'.
mocean-alt-dcs
optional
number To send Flash SMS, set mocean-mclass and mocean-alt-dcs value to '1'.
mocean-charset
optional
string Indicates the character set used in the mocean-text parameter. Supported character sets are:
  • ISO-8859-1
  • ISO-8859-7
  • UTF-8
  • Windows-1252
mocean-validity
optional
number To define the validity period of message. User has to input validity in terms of SECONDS. For example, if user wants message to expire after 5 minutes upon submission, user has to configure mocean-validity as 300.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
Code Descriptions
0 OK. No error encountered.
1 Authorization failed.
NOTE: When this error is encountered, NO SMS is sent to any of the receivers.
2 Insufficient balance. Not enough credit in the account to send to at least one of the receivers.
4 At least one of the destination numbers is not white listed.
5 At least one of the destination numbers is black listed.
6 No destination number specified.
8 Sender ID not found.
9 Invalid UDH field.
10 Invalid mclass field.
17 Invalid validity field.
19 Invalid character set or message body.
20 Insufficient headers for sending SMS.
23 Empty mocean-text.
24 Unknown error.
26 Invalid schedule format. (Hint: must have leading zero for time.)
2007-03-02 08:55:00 is correct.
2007-03-02 8:55:00 is not correct.
27 Max number of receivers in a single request reached. Too many receivers in mocean-to field.
28 Invalid destination number. Receiver is invalid after stripping all non-numerics.
29 Message body is too long.
32 Message throttled.
34 Unknown request.
37 Invalid sender length.
40 System down for maintenance.
43 SMS flooding detected.
44 Invalid Sender ID.
45 System error, please try again.
48 At least one of the senders is black listed.
49 At least one of the senders is not white listed.
50 Inappropriate content detected.
65 Destination not found.
69 Message contains unsupported character.
70 Invalid service
73 Destination number and sender are blacklisted

Delivery Report

Receiving PUT request

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
     json? ? JSON.parse(request.body.read) : {}
  end

  def json?
    request.content_type == 'application/json'
  end
end

route :put, '/webhooks/delivery-report' do
  puts params.merge(parsed_body)
  status 204
end

set :port, 3000
from flask import Flask,request

app = Flask(__name__)

@app.route('/webhooks/delivery-report', methods=['PUT'])
def getDeliveryReport():
    data = request.form

    _to = data['mocean-to']
    _from = data['mocean-from']
    _dlrStatus = data['mocean-dlr-status']
    _msgid = data['mocean-msgid']
    _errorCode = data['mocean-error-code']
const app = require('express')();
const bodyParser = require('body-parser');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.route('/webhooks/delivery-report').put('handleDlr');
function handleDlr(req, res)
{

  res.status(204).send();
}

app.listen(8080)
import mocean.system.*;

class program {

    public static void main(String [] args)
    {
        try
        {
            put("/webhooks/delivery-report", (req, res) -> {                   

                for (String param : req.queryParams()) 
                {
                    System.out.printf("%s: %s\n", param, req.queryParams(param));
                }

                res.status(204);
                return "";
            });
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}
<?php
public void ReceiveDLR()
{
    Debug.WriteLine("------");
    Debug.WriteLine("DELIVERY RECEIPT");
    Debug.WriteLine("mocean-msgid: " + Request.Form["mocean-msgid"]);
    Debug.WriteLine("mocean-from: " + Request.Form["mocean-from"]);
    Debug.WriteLine("mocean-to: " + Request.Form["mocean-to"]);
    Debug.WriteLine("mocean-dlr-status: " + Mocean.Message.Client.DLRStatus(Request.Form["mocean-dlr-status"]));
    Debug.WriteLine("mocean-error-code: " + Request.Form["mocean-error-code"]);
    Debug.WriteLine("------");
}
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';

$app = new \Slim\App;

$handler = function (Request $request, Response $response) {
    $params = $request->getParsedBody();

    // Fall back to query parameters if needed
    if (!count($params)){
        $params = $request->getQueryParams();
    }

    error_log(print_r($params, true));

    return $response->withStatus(204);
};

$app->put('/webhooks/delivery-report', $handler);

$app->run();
?>

Request sent from Mocean

> PUT /webhooks/delivery-report HTTP/1.1
> Host: example.com
> Accept: */*
> Content-Length: 114
> Content-Type: application/x-www-form-urlencoded


{
  mocean-from: 60123456789,
  mocean-to: 63001,
  mocean-dlr-status: 1,
  mocean-msgid: "cust20013050311050614001",
  mocean-error-code: 0
}

If delivery report is requested, Mocean shall returned delivery report to the callback url submitted under parameter "mocean-dlr-url" in Outbound SMS request.

After returning delivery report, Mocean API Server is expecting a respond with “HTTP OK” (Status 200) or it will keep on retrying until it expired(36 hours).

Note: If you're using localhost environment for receiving Delivery Reports, you will need to make your local environment publicly available so Mocean API server can reach your local server. We recommend you try ngrok to do this quite easily.

PUT https://example.com/webhooks/delivery-report

Parameter Format Descriptions
mocean-from number Phone number of the original SMS recipient.
mocean-to number Phone number of the original SMS sender.
mocean-dlr-status number Status of the delivery.
  1. Success
  2. Failed
  3. Expired
mocean-msgid string Message ID of the message where this report is associated.
mocean-error-code number Error code of the submission.
Code Descriptions
000 No error.
001 Absent subscriber.
002 Handset memory capacity exceeded. Handset has run out of free memory to store new message.
003 Equipment protocol error.
004 Equipment not equipped with short-message capability.
005 Unknown subscriber. The IMSI is unknown in the HLR.
006 Illegal subscriber. The mobile station failed authentication.
007 Teleservice not provisioned. Mobile subscription identified by the MSISDN number does include the short message service.
008 Illegal equipment. IMEI check failed, i.e. the IMEI is either black listed or not white listed.
009 Call barred. Operator barred the MSISDN number.
010 Facility not supported. VLR in the PLMN does not support MT short message service.
011 Subscriber busy for MT short message. Mobile terminated short message transfer cannot be completed because:
a. another MT SM transfer is going on and the delivery node does not support buffering.
b. another MT SM transfer is going on and it is not possible to buffer the message for later delivery.
c. the message was buffered but it is not possible to deliver the message before the expiry of the buffering time defined in GSM 03.40.
012 System failure. Task cannot be completed because of a problem in another entity.
013 Data missing. Necessary parameter is not present in the primitive.
014 Unexpected data value. Necessary data is badly formatted in the primitive.
015 Unidentified subscriber.
016 Absent subscriber. No paging response.
017 Absent subscriber. IMSI detached.
018 Absent subscriber. Roaming restriction.
019 Subscriber busy for USSD.
047 SMSC SS7 error.
049 SMS discarded. Unable to fulfill request.
050 SMS is rejected.
051 SMS malformed. SMS is not formed correctly. This error is specific to IP-based protocols like SMPP.
052 SMS expired.
053 Insufficient credit. The user has insufficient credit/not allowed to send to that destination.
054 Invalid destination. Receiver is not a valid number.
055 Unable to find outbound route for this SMS.
056 SMS buffered.
057 Timeout waiting for response from peer.
058 Throttling error. The user has exceeded allowed message limit.
059 SMS suspected spam message.
060 Invalid service keyword (premium SMS).
061 Subscriber blacklisted.
062 Subscriber not white listed.
063 Invalid sender length.
065 System down for maintenance.
066 Invalid data coding. This error is specific to SMPP protocol.
067 Invalid USSD session ID passed in.
068 SMS flooding detected.
069 Invalid sender ID.
070 Unable to fulfill request due to invalid credentials.
071 Subscriber opted out from receiving SMS.
072 Invalid MNC/MCC passed in.
073 Invalid MO ID (premium SMS).
074 SMS rejected. Error received from peer SMSC.
075 SMS rejected. Inappropriate SMS content.
076 Sender ID blacklisted.
077 Sender ID not white listed.
078 No pricing information found for pricing request.
079 Multiple charging packages found for pricing request.
080 Invalid message ID for message status request.
081 Charging failed.
091 Invalid schedule date.
094 URL blacklisted.
095 URL not white listed.
096 Message expired in system with no final status from carrier.
100 Source account blacklisted.
101 Destination account blacklisted.
102 Source account not white listed.
103 Destination account not white listed.
121 Invalid service.
134 Invalid type.
137 Subscriber and sender blacklisted.
155 Invalid receiver.
159 Invalid URL.
160 Traffic volume limit reached.
255 Unknown error.

Receive SMS

Receiving POST request

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
     json? ? JSON.parse(request.body.read) : {}
  end

  def json?
    request.content_type == 'application/json'
  end
end

route :get, :post, '/webhooks/inbound-sms' do
  puts params.merge(parsed_body)
  status 204
end

set :port, 3000
from flask import Flask,request

app = Flask(__name__)

@app.route('/webhooks/inbound-sms', methods=['POST'])
def receiveSMS():
    data = request.form

    _from = data['mocean-from']
    _to = data['mocean-to']
    _time = data['mocean-time']
    _text = data['mocean-text']
    _keyword = data['mocean-keyword']
    _coding = data['mocean-coding']
const app = require('express')();
const bodyParser = require('body-parser');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.route('/webhooks/inbound-sms').post(handleMoSms);
function handleMoSms(req, res)
{
  console.log(res.body);
  res.status(204).send();
}

app.listen(8080)
import mocean.system.*;

class program {

    public static void main(String [] args)
    {
        try
        {
            post("/webhooks/inbound-sms", (req, res) -> {               

                for (String param : req.queryParams()) 
                {
                    System.out.printf("%s: %s\n", param, req.queryParams(param));
                }

                res.status(204);
                return "";
            });
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';

$app = new \Slim\App;

$handler = function (Request $request, Response $response) {
    $params = $request->getParsedBody();

    // Fall back to query parameters if needed
    if (!count($params)){
        $params = $request->getQueryParams();
    }

    error_log(print_r($params, true));

    return $response->withStatus(204);
};

$app->post('/webhooks/inbound-sms', $handler);

$app->run();
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapPost("/webhooks/inbound-sms", async (HttpRequest request) =>
{
    using var reader = new StreamReader(request.Body);
    var body = await reader.ReadToEndAsync();

    Console.WriteLine("Webhook received:");
    Console.WriteLine(body);

    return Results.NoContent();
});

app.Run();

Request sent from Mocean

> POST /webhooks/inbound-sms HTTP/1.1
> Host: example.com
> Accept: */*
> Content-Length: 114
> Content-Type: application/x-www-form-urlencoded

{
  mocean-from: 60123456789,
  mocean-to: 63001,
  mocean-keyword: MOC,
  mocean-text: Hello+World,
  mocean-coding: 1,
  mocean-time: 2018-12-30 23:59:59
}

If you rent one or more virtual numbers from Mocean, inbound messages to that number are sent to your webhook endpoint.

When you receive an inbound message, you must send a 2xx response. If you do not send a 2xx response Mocean will resend the inbound message for the next 24 hours.

Note: If you're using localhost environment for receiving Inbound SMS, you will need to make your local environment publicly available so Mocean API server can reach your local server. We recommend you try ngrok to do this quite easily.

POST https://example.com/webhooks/inbound-sms

Request Body

Parameter Format Descriptions
mocean-from number Phone number of the original SMS sender.
mocean-to number Phone number of the original SMS recipient, normally the short code (e.g. 63001).
mocean-time datetime The datetime when the message is received by SMS gateway. (Format YYYY-MM-DD hh:mm:ss).
mocean-text string Content of the SMS.
mocean-keyword string Keyword used for the MO.
mocean-coding number Message type of SMS. 1 for text/Mobile telephony character set and 3 for Unicode SMS.

Conversion API

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/conversion" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-msgid=MSG_ID" \
  -d "mocean-delivered=false"






Request a Conversion API with your message id.

Conversion API helps to determine:

  • The best route that provide the best performance
  • Mocean can deliver message faster and more reliaby

Send a Conversion API request with your message-id.

POST https://rest.moceanapi.com/rest/2/conversion

A successful response will be as follows:

{
  "status": 0
}

While unsuccessfully response will be as follows:

{
  "status": 1,
  "err_msg": "Authorization failed"
}
Parameter Format Description
mocean-msgid
required
string Message ID associated with the transaction which given during SMS submission.
mocean-delivered
required
boolean Set this as true if user has received the message. Otherwise set it to false
mocean-timestamp
optional
string Set to yyyy-MM-dd HH:mm:ss format. If this parameter is not set, Mocean wil use the time when it submitted
Code Descriptions
0 OK. No error encountered.
1 Authorization failed.
NOTE: When this error is encountered, No Request is sent.
24 Unknown error.
25 Invalid message id.
32 Message throttled.
40 System down for maintenance.

Voice API

Overview

The Voice API allows you to make outbound and inbound calls. With the Voice API, user can

  • Control the flow of your inbound and outbound calls with JSON method with our SDK
  • Send text-speech messages in variety of languages with different accents and either gender
  • Eliminates the need for call center to spead messages for your company which saves money
  • Produce apps that scale with the web technologies you are using

Concepts

To use the Voice API, you may need to familiarise yourself with:

  • Mocean Command (MC) - A sets of instruction to control the actions and flow of your call. For example, you can send text-to-speech, audio files or collect input from the person you are calling. Mocean Command (MC) is in simple JSON form. For more information, you may refer to Mocean Command (MC) Reference
  • Authentication - Mocean Voice API is authenticated by your accounts API Token.
  • Numbers - The key concepts of using a dedicated phone numbers in the Voice API.
  • Webhooks - Our server will make a HTTP request to your application web server and expecting to retrieve a set of Mocean Command (MC) so that we can act upon them.

Getting Started

  1. Make sure you already have a Mocean API account, or sign up for a Mocean account here.

  2. Rent a Virtual Number if you want to receive incoming Voice calls.

Mocean Command (MC) Reference

Example Mocean Command (MC) Single Option

[
  {
    "action": "say",
    "text": "Welcome to Mocean Voice API. ",
    "barge-in": false,
    "clear-digit-cache": false
  }
]

Example Mocean Command (MC) Multiple Option

[
  {
    "action": "say",
    "language": "en-GB",
    "text": "Welcome to Mocean Voice API."
  },
  {
    "action": "sleep",
    "duration": 3000
  }, 
  {
    "action": "say",
    "language": "en-GB",
    "text": "Thank you for calling."
  }
]

Example Mocean Command (MC) Asynchronous

[
  {
    "action": "say",
    "language": "en-GB",
    "text": "How are you today?"
  },
  {
    "action": "say",
    "language": "en-GB",
    "text": "Press 1, for Good. Press 2, for Not Good."
  },
  {
    "action": "collect",
    "min": 1,
    "max": 1,
    "timeout": 10000,
    "event-url": "https://example.com/webhook/voice-event"
  },
  {
    "action": "say",
    "language": "en-GB",
    "text": "Thanks for your input, goodbye!"
  }
]

Mocean Command (MC) is a JSON array of actions to control the flow of your Voice Call

The element of a Mocean Command (MC) are:

  • action - key event to perform during the call
  • option - how the prior specified action were to be carry out

The order of the Mocean Command (MC) controls the flow of the call. When an action is completed the next action will proceed. The voice call ends When all actions in the Mocean Command (MC) are completed.

Actions Description
play play an audio file to the conversation.
collect collect the input from the person for further process.
say send a synthesized speech to a conversation.
sleep the wait time to proceed to the next event.
dial to connect a connectable endpoint like a phone number.
record record the voice call after the record function.
Action Parameter Format Description
play file
required
string/array File or list of files to play during call.
barge-in
optional
boolean Option to skip the play audio and pass the digit into cache.
clear-digit-cache
optional
boolean Clear digit cache entered by user.
collect event-url
required
string Webhook for obtaining the digits for this collect.
max
required
number Maximum number of digits to fetch.
min
required
number Minimum number of digits to fetch.
timeout
required
number Number of milliseconds to wait on each digit.
terminators
optional
string Digits used to end input if less than min digits have been pressed.
say language
required
string Language of the text. Available languages at the moment:
  • en-US [English (United States)]
  • en-GB [English (United Kingdom)]
  • de-DE [German (Germany)]
  • de-AT [German (Austria)]
  • de-CH [German (Switzerland)]
  • cmn-CN [Chinese Mandarin (China)]
  • ja-JP [Japanese (Japan)]
  • ko-KR [Korean (Korea)]
  • ms-MY [Malay (Malaysia)]
  • id-ID [Indonesian (Indonesia)]
  • th-TH [Thai (Thailand)]
  • vi-VN [Vietnamese (Vietnam)]
  • ru-RU [Russian (Russia)]
  • zh-CN [Mandarin (Mainland China)]
  • zh-TW [Mandarin (Taiwan)]
  • zh-HK [Cantonese (Hong Kong)]
text
required
string The text to be parsed into the TTY engine.
barge-in
optional
boolean Option to skip the play audio and pass the digit into cache.
clear-digit-cache
optional
boolean Clear digit cache entered by user.
sleep duration
required
integer Duration to sleep.
dial to
required
string/array Destination or list of destination number to call to. Note that for this moment, we will only call to the first number in list.
from
optional
string Caller ID
dial-sequentially
optional
boolean Flag to dial list of numbers sequentially, default value set to "false" during "mc_create".

Make an outbound call

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/voice/dial" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-to=MOBILE_NUMBER" \
  -d "mocean-command=%5B%7B%22action%22:%22say%22,%22language%22:%22en-GB%22,%22text%22:%22Welcome%20to%20Mocean%20Voice%20API.%22%7D%5D"

require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

builder = Moceansdk::Modules::Voice::McBuilder.new
              .add(Moceansdk::Modules::Voice::Mc.record())
              .add(Moceansdk::Modules::Voice::Mc.dial('60123456789'))
              .add(Moceansdk::Modules::Voice::Mc.say('for english please press 1'))
              .add(Moceansdk::Modules::Voice::Mc.collect('http://test.com/collect'))
              .add(Moceansdk::Modules::Voice::Mc.sleep(2000))
              .add(Moceansdk::Modules::Voice::Mc.play('http://test.com/play'))

res = mocean.voice.call(
  'mocean-to': '60123456789',
  'mocean-command': builder
)

print res

from moceansdk import Client, Basic, Transmitter, McBuilder, Mc

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

mc_builder = McBuilder() \
    .add(Mc.record()) \
    .add(Mc.dial('60123456789')) \
    .add(Mc.say('for english please press 1')) \
    .add(Mc.collect('https://test.com/collect')) \
    .add(Mc.sleep(2000)) \
    .add(Mc.play('http://test.com/play'))

res = mocean.voice.call({
    'mocean-to': '60123456789',
    'mocean-command': mc_builder
})

print(res)
<?php
use Mocean\Voice\Mc;
use Mocean\Voice\McBuilder;

$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$mcBuilder = McBuilder::create()
    ->add(Mc::record())
    ->add(Mc::dial('60123456789'))
    ->add(Mc::say('for english please press 1')) // tts
    ->add(Mc::collect('http://test.com/collect'))
    ->add(Mc::sleep(2000))
    ->add(Mc::play('http://test.com/play'));

$result = $mocean->voice()->call([
    'mocean-to' => '60123456789',
    'mocean-command' => $mcBuilder
]);

echo $result;

?>
const {Mc, McBuilder}, moceansdk = require('mocean-sdk');

const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

const mcBuilder = (new McBuilder())
    .add(Mc.record())
    .add(Mc.dial('60123456789'))
    .add(Mc.say('for english please press 1') // tts
    .add(Mc.collect('https://test.com/collect'))
    .add(Mc.sleep(2000))
    .add(Mc.play('http://test.com/play'));

const res = await mocean.voice().call({
        'mocean-to': '60123456789',
        'mocean-command': mcBuilder
});
console.log(res);

import com.mocean.modules.voice.Mc;
import com.mocean.modules.voice.McBuilder;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

McBuilder mcBuilder = (new McBuilder())
        .add(Mc.record())
        .add(Mc.dial("60123456789"))
        .add(Mc.say("for english please press 1")) // tts
        .add(Mc.collect("https://test.com/collect"))
        .add(Mc.sleep(2000))
        .add(Mc.play("http://test.com/play"));

String res = mocean.voice()
        .setTo("60123456789")
        .setCommand(mcBuilder)
        .call();  

System.out.println(res);  
using Mocean.Voice;
using Mocean.Voice.Mapper;

Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

var mcBuilder = (new McBuilder())
    .add(Mc.record())
    .add(Mc.dial("60123456789"))
    .add(Mc.say("for english please press 1"))
    .add(Mc.collect("https://test.com/collect"))
    .add(Mc.sleep(2000))
    .add(Mc.play("http://test.com/play"));

var res = mocean.Voice.Call(new VoiceRequest
{
    mocean_to = "60123456789",
    mocean_command = mcBuilder
});

Console.WriteLine(res);

A successful response for a multiple call will be as follows:

{
  "calls": [
    {
      "status": 0,
      "receiver": 0123456789,
      "session_uuid": "{session-uuid}",
      "call_uuid": "{call-uuid}"
    },
    {
      "status": 0,
      "receiver": 0129876543,
      "session_uuid": "{session-uuid}",
      "call_uuid": "{call-uuid}"
    }
  ]
}

A successful response for a single call will be as follows:

{
  "calls": [
    {
      "status": 0,
      "session_uuid": "{session-uuid}",
      "call_uuid": "{call-uuid}"
    }
  ]
}

While an unsuccessful response will be as follows:

{
  "status": 1,
  "err_msg": "Authorization failed"
}

Makes an outbound call to a specified number with a set of rules in MC and the call flow will be carry out when then call is answered. You can control the call with configuring your Mocean Command (MC)

POST https://rest.moceanapi.com/rest/2/voice/dial

Parameter Format Description
mocean-to
required
string Phone number of the receiver. To send to multiple receivers, separate each entry with white space (‘ ’) or comma (,). Phone number must include country code, for example, a Malaysian phone number will be like 60123456789.
mocean-command
required
string Command to control the action and flow of the call. Example command are:
  • play
  • sleep
  • say
  • collect
  • dial
  • record
mocean-from
optional
string Number of Origin.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
mocean-event-url
optional
string A webhook to inform the callee of the call status at the moment for example answered/hangup.
Code Descriptions
0 OK. No error encountered.
1 Authorization failed.
NOTE: When this error is encountered, NO call is made to any of the receivers.
2 Insufficient balance. Not enough credit in the account to call to any of the receivers.
3 No rate found for destination number.
4 At least one of the destination numbers is not white listed.
5 At least one of the destination numbers is black listed.
6 No destination number specified.
7 Invalid call-uuid.
8 Too many receivers in 'to' field.
9 Invalid request.
10 System error, please try again.
11 Destination not found.
12 Missing Mocean Command (MC) input or parameter.
13 Mocean Command (MC) syntax error.
14 Unknown error.
15 System down for maintenance. Sorry for the inconvenience.

Receive collect action

Receiving request

# Makes use of netcat, HTTP request to port 8080
while true
    do echo -e "HTTP/1.1 200 OK\r\nServer:MoceanExample\r\nContent-Type:application/json\r\nContent-Length:66\r\nConnection:close\r\n\r\n[{\"action\":\"say\",\"text\":\"Thanks for calling\",\"language\":\"en-GB\"}]" | nc -l 8080
done
require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
    json? ? JSON.parse(request.body.read) : {}
  end

  def json?
    request.content_type == 'application/json'
  end
end

route :get, :post, '/webhooks/collect' do
  [{
    action: 'say',
    text: 'Thank you for calling from #{from_split_into_characters}'
    language: 'en-GB'
  }].to_json
end

set :port, 3000
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/webhooks/collect")
def collect():
    from_ = request.form.get('mocean-from')
    return jsonify([
        {
            "action": "say",
            "text": "Thank you for calling from {}.".format(from_),
            "language": "en-GB"
        }
])
const app = require('express')()

const onCollect = (request, response) => {

  const mc = [{
    action: 'say',
    text: 'Thank you for calling from ${fromSplitIntoCharacters}',
    language: 'en-GB'
  }]

  response.json(mc)
}

app.get('/webhooks/collect', onCollect)
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';

$app = new \Slim\App;
$handler = function (Request $request, Response $response) {
    $params = $request->getParsedBody();

    // Fall back to query parameters if needed
    if (!count($params)){
        $params = $request->getQueryParams();
    }

    $mc = [
        [
            'action' => 'say',
            'text' => 'Thank you for calling from '.$fromSplitIntoCharacters,
            'language' => 'en-GB',
        ]
    ];

    return $response->withJson($mc);
});

$app->get('/webhooks/collect', $handler);

$app->run();
?>
/*
 * Route to collect say action.
 */
Route collectRoute = (req, res) -> {
    SayAction message = SayAction
            .builder(String.format("Thank you for calling from %s", text))
            .builder(String.format("en-GB", language))
            .build();

    res.type("application/json");

    return new Mc(message).toJson();
};

/*
 * Route to print out call event info.
 */
Route eventRoute = (req, res) -> {
    System.out.println(req.body());
    return "";
};

Spark.port(3000);
Spark.get("/webhooks/collect", collectRoute);
Spark.post("/webhooks/event", eventRoute);
private Response collectMc()
{
    string digit = Request.Query["mocean-digits"].Value;
    var SayAction = new SayAction()
    {
        Text = ("Thank you for calling from " + string.Join(" ", this.Request.Query["from"].ToCharArray())),
        Language = ("en-GB"),
    };
    var mc = new Mc(SayAction);
    return mc.ToString();
}

Collect is a MC action which will get the input that was keyed in by user to proceed further. We will also pass in information over to the webhook and await for response. . Below are the information pass.

POST https://example.com/webhooks/collect

Parameter Format Descriptions
mocean-session-uuid string The session uuid of the call.
mocean-call-uuid string The call uuid of the call.
mocean-digits string Digits/keypad input by the Callee. If there is no response from Callee after the timeout period, the input will be empty string.

Receiving an inbound call

Receiving request

# Makes use of netcat, HTTP request to port 8080
while true
    do echo -e "HTTP/1.1 200 OK\r\nServer:MoceanExample\r\nContent-Type:application/json\r\nContent-Length:66\r\nConnection:close\r\n\r\n[{\"action\":\"say\",\"text\":\"Thanks for calling\",\"language\":\"en-GB\"}]" | nc -l 8080
done
require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
    json? ? JSON.parse(request.body.read) : {}
  end

  def json?
    request.content_type == 'application/json'
  end
end

route :get, :post, '/webhooks/answer' do
  from = params['from'] || parsed_body['from']
  from_split_into_characters = from.split('').join(' ')

  [{
    action: 'say',
    text: 'Thank you for calling from #{from_split_into_characters}',
    language: 'en-GB'
  }].to_json
end

set :port, 3000
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/webhooks/answer")
def answerCall():
    for param_key, param_value in request.form.items():
        print("{}: {}".format(param_key, param_value))

    from_ = request.form.get('mocean-from')

    return jsonify([
        {
            "action": "say",
            "text": "Thank you for calling from {}.".format(from_),
            "language": "en-GB"
        }
    ])    
const app = require('express')()

const onInboundCall = (request, response) => {
  const from = request.query.from
  const fromSplitIntoCharacters = from.split('').join(' ')

  const mc = [{
    action: 'say',
    text: 'Thank you for calling from ${fromSplitIntoCharacters}',
    language: 'en-GB'
  }]

  response.json(mc)
}

app.get('/webhooks/answer', onInboundCall)
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';

$app = new \Slim\App;
$handler = function (Request $request, Response $response) {
    $params = $request->getParsedBody();

    // Fall back to query parameters if needed
    if (!count($params)){
        $params = $request->getQueryParams();
    }
    $fromSplitIntoCharacters = implode(" ", str_split($params['from']));

    $mc = [
        [
            'action' => 'say',
            'text' => 'Thank you for calling from '.$fromSplitIntoCharacters,
            'language' => 'en-GB',
        ]
    ];

    return $response->withJson($mc);
});

$app->get('/webhooks/answer', $handler);

$app->run();
?>
/*
 * Route to answer incoming call.
 */
Route answerRoute = (req, res) -> {
    String from = req.queryParams("from").replace("", " ");
    SayAction message = SayAction
            .builder(String.format("Thank you for calling from %s", text))
            .builder(String.format("en-GB", language))
            .build();

    res.type("application/json");

    return new Mc(message).toJson();
};

/*
 * Route to print out call event info.
 */
Route eventRoute = (req, res) -> {
    System.out.println(req.body());
    return "";
};

Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute);
Spark.post("/webhooks/event", eventRoute);
public InboundCall()
{
    Get("/webhook/answer", x => { return AnswerInboundCall(); });
    Post("/webhook/event", x => { return OnEvent(); });
}

private Response AnswerInboundCall()
{
    string number = Request.Query["mocean-from"].Value;
    var SayAction = new SayAction()
    {
        Text = ("Thank you for calling from " + string.Join(" ", this.Request.Query["mocean-from"].ToCharArray())),
        Language = ("en-GB"),
    };
    var mc = new Mc(SayAction);
    return mc.ToString();
}

An inbound call is one that initiated by customers, and you will need to have a hosted webhook where MoceanAPI server can retrieve the call flow in Mocean Command (MC) format. They will pass in information over to the webhook and await response. Below are the information pass.

POST https://example.com/webhooks/answer

Parameter Format Descriptions
mocean-session-uuid string The session uuid of the call.
mocean-call-uuid string The call uuid of the call.
mocean-to number The VLN number which you wish to call to when you receive the inbound call.
mocean-from number The source of the call, or the number that call came from.

Hangup a Call

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/voice/hangup" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-call-uuid=YOUR_CALL_UUID" \
  -d "mocean-resp-format=json"
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.voice.hangup(
  'mocean-call-uuid': {call-uuid}
)

print res
from moceansdk import Client, Basic, Transmitter

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

res = mocean.voice.hangup({
    'mocean-call-uuid': {call-uuid}
})

print(res)
const {Mc, McBuilder}, moceansdk = require('mocean-sdk');

const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

const res = await mocean.voice().hangup({
        'mocean-call-uuid': {call-uuid}
});
console.log(res);

<?php

$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$result = $mocean->voice()->hangup([
    'mocean-call-uuid' => {call-uuid}
]);

echo $result;

?>
import com.mocean.modules.voice.Mc;
import com.mocean.modules.voice.McBuilder;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

String res = mocean.voice()
        .setCallUUID({call-uuid})
        .hangup();  


System.out.println(res); 
using Mocean.Voice;
using Mocean.Voice.Mapper;

Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

var res = mocean.Voice.Hangup(new VoiceRequest
{
    mocean_call_uuid = {call-uuid}
});

Console.WriteLine(res);

A successful response will be as follows:

{
    "status": 0,
    "session_uuid": "{session-uuid}",
    "call_uuid": "{call-uuid}"
}

While unsuccessfully response will be as follows:

{
    "status": 1,
    "err_msg": "Authorization failed"
}

Allows you to hangup a call whenever you want to hangup a call maybe after they hit a certain condition or whenever you feel like hanging up a call

POST https://rest.moceanapi.com/rest/2/voice/hangup

Parameter Format Description
mocean-call-uuid
required
string The call-uuid of the recorded call which you wish to hangup.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON

Download a Recording

Example request

curl -L -X GET "https://rest.moceanapi.com/rest/2/voice/rec" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-call-uuid=218fc2f6-fed8-11e9-952a-31afba325635" \
  -o recording.mp3
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.voice_recording.create({
    "mocean-call-uuid" => "YOUR_TRANSACTION_CALL_UUID"
}).recording()

print res
from moceansdk import Client, Basic, Transmitter

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

res = mocean.voice_recording.create({
    "mocean-call-uuid": "YOUR_TRANSACTION_CALL_UUID",
}).recording()

print(res)
const moceansdk = require('mocean-sdk');

const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

mocean.voice_recording().create({
  'mocean-call-uuid': 'YOUR_TRANSACTION_CALL_UUID',
}).send((err,res) => {    
  if (err) throw err;
  console.log(res);
});
<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$res = $mocean->voice()->recording([
    'mocean-call-uuid' => 'YOUR_TRANSACTION_CALL_UUID',
]);

echo $res;
?>
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

String res = mocean.voice_recording().setCallUUID("YOUR_TRANSACTION_CALL_UUID")
             .recording();

System.out.println(res);
Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

Mocean.Voice.Voice _voice = new Mocean.Voice.Voice(){
    mocean-call-uuid = "YOUR_TRANSACTION_CALL_UUID"
};

string response = Mocean.Voice.Client.Recording(_voice, creds);

Successful response

{
    "status": 0,
    "calluuid": "XXXX-XXXX-XXXX-XXXX"
}

While unsuccessfully response will be as follows:

{
    "status": 1,
    "err_msg": "Authorization failed"
}

Allows you to download the recording of the phone call if you have set "record" command at your MC for a voice call

GET https://rest.moceanapi.com/rest/2/voice/rec

Parameter Format Description
mocean-call-uuid
required
string The call-uuid of the recorded call which you wish to download.

Verify API

Overview

The Verify API allows you to send a random generated code by a Text message(SMS and Telegram) or Voice call to prove a user can be contacted.

This is useful for:

  • Spam protection - prevent spammers from mass-creating new accounts (etc.)
  • Hack protection - if you detect suspicious or significant activities, validate that the person using the contacts details of them
  • Two-factor authentication - Enhance your customer account authentication to prevent their account from getting hacked
  • Reaching users - ensuring users has given the correct contact detail makes it easy to contact users when you need to

Verify Request

Send Code over SMS

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/verify/req/sms" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-to=60123456789" \
  -d "mocean-brand=BRAND_NAME"
const moceansdk = require('mocean-sdk');

const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

mocean.verify_request()
        .sendAs('sms')
        .send({
            'mocean-to': '60123456789',
            'mocean-brand': 'BRAND_NAME'
        }, function (err, res) {
          console.log(res);
        });

<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$result = $mocean->verify()
            ->sendAs(\Mocean\Verify\Channel::SMS) // add this method
            ->start([
                mocean-brand = 'BRAND_NAME',
                mocean-to = '60123456789'
            ]);

echo $result;
?>
Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

var res = client.SendCode
    .SendAs(Mocean.Verify.Channel.Sms) // add this method
    .Send(new Mocean.Verify.SendCodeRequest
    {
        mocean_brand = "BRAND_NAME",
        mocean_to = "60123456789"
    });

Console.WriteLine(res);
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.verify_request
    .send_as(Moceansdk::Modules::Message::Channel::SMS) # add this method
    .send('mocean-to': '60123456789', 'mocean-brand': 'BRAND_NAME')

print res
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;
import com.mocean.modules.verify.Channel;
import com.mocean.modules.verify.VerifyRequestResponse;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

VerifyRequestResponse res = mocean
                .verifyRequest()
                .setBrand("BRAND_NAME")
                .setTo("601156256742")
                .sendAs(Channel.SMS) //add this method
                .send();

System.out.println(res);
from moceansdk import Client, Basic, Transmitter
from moceansdk.modules.message.channel import Channel

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

res = mocean.verify_request.send_as(Channel.SMS).send({ # add send_as method
    'mocean-to': '60123456789',
    'mocean-brand': 'BRAND_NAME'
})

print(res)

Successful response

{
  "reqid": "XXXXXXXXXXXXXXXXXXXXXX",
  "status": 0,
  "to": "60123456789",
  "is_number_reachable": "unknown"
}

Unsuccessful response

{
  "status": 2,
  "err_msg": "Invalid credentials were provided"
}

Send a random generated code over SMS to the provided mobile number. This method is charge by the total attempt of request.

POST https://rest.moceanapi.com/rest/2/verify/req/sms

Parameter Format Description
mocean-to
required
string Phone number of the receiver. (must include country code, e.g. 60123456789)
mocean-brand
required
string The name of the company or application you are using for verification.
mocean-from
optional
string SMS Sender ID will be displayed as sender of SMS.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
mocean-code-length
optional
number The length of verification code. Possible values are 4 and 6 digits.

Default is 4 or as defined in account.
mocean-pin-validity
optional
number The expiring time of generated code. Values can be number between 60 to 3600 seconds. Default is 300 or as defined in account.

Resend Code over SMS

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/verify/resend/sms" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-reqid=XXXXXXXXXXXXXXXXXXXXXX"
const moceansdk = require('mocean-sdk');
const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

mocean.verify_request()
        .resend({
            'mocean-reqid': 'XXXXXXXXXXXXXXXXXXXXXX'
        }, function (err, res) {
          console.log(res);
        })

<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$res = $mocean->verify()
        ->start([
            'mocean-reqid' => 'XXXXXXXXXXXXXXXXXXXXXX',
            'mocean-resp-format' => 'json'
        ], true);

echo $res;
?>
Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

var res = client.SendCode
    .Resend(new Mocean.Verify.SendCodeRequest
    {
         mocean_reqid = "XXXXXXXXXXXXXXXXXXXXXX1"
    });

Console.WriteLine(res);
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.verify_request.resend('mocean-reqid': 'XXXXXXXXXXXXXXXXXXXXXX')

print res
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;
import com.mocean.modules.verify.VerifyRequestResponse;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

VerifyRequestResponse res = mocean.verifyRequest()
                    .setReqId("XXXXXXXXXXXXXXXXXXXXXX")
                    .resend();

System.out.println(res);
from moceansdk import Client, Basic, Transmitter

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

res = mocean.verify_request.resend({
    'mocean-reqid': 'XXXXXXXXXXXXXXXXXXXXXX'
})

print(res)

Successful response

{
  "reqid": "XXXXXXXXXXXXXXXXXXXXXX",
  "status": 0,
  "to": "60123456789",
  "is_number_reachable": "unknown",
  "resend_number": "2"
}

Unsuccessful response

{
  "status": 2,
  "err_msg": "Invalid credentials were provided"
}

Resend an already generated code over SMS to the provided mobile number with the 'mocean-reqid' from the verify request you sent. This method is charge by the total attempt of request.

POST https://rest.moceanapi.com/rest/2/verify/resend/sms

Parameter Format Description
mocean-reqid
required
string The unique ID of the verify request you sent
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON

Send Code over Telegram

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/verify/req/telegram" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-from=BOT_USERNAME_HERE" \
  -d "mocean-to=CHAT_ID_HERE" \
  -d "mocean-brand=BRAND_NAME"
const moceansdk = require('mocean-sdk');

const Client = new mocean.Mocean(new
        mocean.Client({apiToken: "API_TOKEN_HERE"})
);

mocean.verify_request()
        .sendAs(mocean.MessageChannel.TELEGRAM)
        .send({
            'mocean-to': 'CHAT_ID_HERE',
            'mocean-brand': 'BRAND_NAME',
            'mocean_from': 'BOT_USERNAME_HERE'
        }, function (err, res) {
          console.log(res);
        });

<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$result = $mocean->verify()
            ->sendAs(\Mocean\Verify\Channel::TELEGRAM) // add this method
            ->start([
                mocean-brand = 'BRAND_NAME',
                mocean-to = 'CHAT_ID_HERE',
                mocean_from = 'BOT_USERNAME_HERE'
            ]);

echo $result;
?>
Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

var res = client.SendCode
    .SendAs(Mocean.Verify.Channel.Telegram)
    .Send(new Mocean.Verify.SendCodeRequest
    {
        mocean_from = "BOT_USERNAME_HERE",
        mocean_brand = "BRAND_NAME",
        mocean_to = "CHAT_ID_HERE",
    });

Console.WriteLine(res);
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.verify_request
    .send_as(Moceansdk::Modules::Message::Channel::TELEGRAM) # add this method
    .send('mocean-to': 'CHAT_ID_HERE', 'mocean-brand': 'BRAND_NAME', 'mocean-from': 'BOT_USERNAME_HERE')

print res
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;
import com.mocean.modules.verify.Channel;
import com.mocean.modules.verify.VerifyRequestResponse;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

VerifyRequestResponse res = mocean
       .verifyRequest()
       .setFrom("BOT_USERNAME_HERE")
       .setBrand("BRAND_NAME")
       .setTo("CHAT_ID_HERE")
       .sendAs(Channel.TELEGRAM)
       .send();

System.out.println(res);
from moceansdk import Client, Basic
from moceansdk.modules.message.channel import Channel

res = mocean.verify_request.send_as(Channel.TELEGRAM).create({
      "mocean-to": "CHAT_ID_HERE",
      "mocean-brand":"BRAND_NAME",
      "mocean-from":"BOT_USERNAME_HERE"
}).send()

print(res)

Successful response

{
  "reqid": "XXXXXXXXXXXXXXXXXXXXXX",
  "status": 0,
  "to": "YOUR_CHAT_ID"
}

Unsuccessful response

{
  "status": 2,
  "err_msg": "Invalid credentials were provided"
}

Send a random generated code over Telegram to the provided chat ID. This method is charge by the total attempt of request.

POST https://rest.moceanapi.com/rest/2/verify/req/telegram

Parameter Format Description
mocean-from
required
string Bot username that will send the message to the receiver in Telegram.
mocean-to
required
number Chat id of Telegram recipient.
mocean-brand
required
string The name of the company or application you are using for verification.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
mocean-code-length
optional
number The length of verification code. Possible values are 4 and 6 digits.

Default is 4 or as defined in account.
mocean-pin-validity
optional
number The expiring time of generated code. Values can be number between 60 to 3600 seconds. Default is 300 or as defined in account.

Verify Code

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/verify/check" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-reqid=XXXXXXXXXXXXXXXXXXXXXX" \
  -d "mocean-code=123456" \
  -d "mocean-resp-format=json"
const moceanjs = require('mocean-sdk');

var token = new moceanjs.Client({apiToken: "API_TOKEN_HERE"});
var mocean = new moceanjs.Mocean(token);

mocean.verify_validate().create({
  "mocean-reqid": "XXXXXXXXXXXXXXXXXXXXXX",
  "mocean-code": "123456"
}).send((err, res) => {
  if(err) throw err;
  console.log(res);
});
<?php
require_once '../vendor/autoload.php';

$token = new Mocean\Client\Credentials\Basic(
    ['apiToken' => 'API_TOKEN_HERE']
);
$mocean = new Mocean\Client($token);

$res = $mocean->verify()->check([
    'mocean-reqid' => 'XXXXXXXXXXXXXXXXXXXXXX',
    'mocean-code' => '123456',
    'mocean-resp-format' => 'json'
]);

echo $res;
?>
Mocean.Verify.Verify _verification = new Mocean.Verify.Verify(){
    mocean_reqid = "XXXXXXXXXXXXXXXXXXXXXX",
    mocean_code = "123456"
};

string response = Mocean.Verify.Client.Check(_verification, creds);
from moceansdk import Mocean, Client

token = Client(Basic(api_token="API_TOKEN_HERE"))
mocean = Mocean(token)

res = mocean.verify_validate.create({
    "mocean-reqid": "XXXXXXXXXXXXXXXXXXXXXX",
    "mocean-code": "123456"
}).send()

print(res)
require "moceansdk"

token = Client.new("API_KEY_HERE", "API_SECRET_HERE")
mocean = Mocean.new(token)

res = mocean.verify_validate.create({
    "mocean-reqid" => "XXXXXXXXXXXXXXXXXXXXXX",
    "mocean-code" => "123456"
}).send()

puts res
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

String res = mocean.verify_validate().setReqid("MOCEAN_REQUEST_ID")
             .setCode("123456")
             .send();

System.out.println(res);

Successful response

{
  "reqid": "XXXXXXXXXXXXXXXXXXXXXXXXX",
  "status": 0,
}

Unsuccessful response

{
  "status": 2,
  "err_msg": "Invalid credentials were provided"
}

To use Verify Code you:

  • Use a check request to send the PIN you received from your user to Mocean.
  • Check the response codes in the response to see if the CODE sent by your user matched the CODE generated by Mocean.

POST https://rest.moceanapi.com/rest/2/verify/check

Parameter Format Description
mocean-reqid
required
string The identifier of theVerify request to check. This is the request ID you received in the Verify request response.
mocean-code
required
string The CODE given by your user.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
Code Descriptions
0 OK. No error encountered.
1 Throttled error. You are trying to send more than allowed requests per minute.
2 Authorization failed.
NOTE: When this error is encountered, NO Request is sent to the receiver.
3 System error, please try again.
4 Missing mandatory parameter: brand
5 Missing mandatory parameter: receiver
6 Invalid destination number. Receiver is invalid after stripping all non-numerics.
7 Missing mandatory parameter: request id
8 Missing mandatory parameter: pin code
9 Brand provided is too long.
10 Sender id provided is too long.
11 Code length provided is unsupported.
13 Pin validity provided is invalid, valid range is between 60 and 3600 seconds.
14 Next event wait is invalid, valid range is between 60 and 900 seconds.
15 Incorrect code was provided too many times. Maximum retry limit is 3.
16 The code inserted does not match the expected value.
17 Associated verify request not found.
18 Insufficient balance. Not enough credit in the account for verification.
19 Concurrent verify request to the same number and brand are not allowed. Only applicable to pay-per-conversion API.
20 The request could not be routed.
21 System error, request could not be processed.
22 Unknown request.
23 Invalid service - your request makes use of a facility that is not enabled on your account.
24 Missing mandatory parameter: bot username.

Number Lookup API

Overview

Mocean Number Lookup API allows you to query mobile phone number about their IMSI number, reachability, ported number, as well as its original and current network operator.

Use Number Lookup to help determine:

  • is the mobile number a ported number
  • which country is the number registered to with their original and current network operators
  • user of a cellular network

Getting Started

Before you begin, please make sure you already have a Mocean API account, or sign up for a Mocean account here.

Request Number Lookup

Example request

curl -X POST "https://rest.moceanapi.com/rest/2/nl" \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d "mocean-to=60123456789" \
  -d "mocean-resp-format=json"
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.number_lookup.inquiry('mocean-to': '60123456789')

print res
from moceansdk import Client, Basic, Transmitter

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

res = mocean.number_lookup.inquiry({
    'mocean-to': '60123456789'
})

print(res)
<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$result = $mocean->numberLookup()->inquiry([
    'mocean-to' => '60123456789',
    'mocean-resp-format' => 'json'
]);

echo $result;

?>
const moceansdk = require('mocean-sdk');
const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

mocean.number_lookup()
        .inquiry({
            'mocean-to': '60123456789'
        }, function (err, res) {
          console.log(res);
        });
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

NumberLookupResponse res = mocean
                    .numberLookup()
                    .setTo("601156256742")
                    .inquiry();

System.out.println(res);
Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

var res = client.NumberLookup.Inquiry(new Mocean.NumberLookup.NumberLookupRequest
{
    mocean_to = "60123456789"
});

Console.WriteLine(res);

Successful asynchronous response

{
  "status":0,
  "msgid":"test0412143224000022.0002",
  "to":"60123456789"
}

Successful synchronous response

{
  "status": 0,
  "msgid": "test0412143224000022.0002",
  "to": "60123456789",
  "current_carrier": {
     "country": "MY",
     "name": "U Mobile",
     "network_code": 50218,
     "mcc": "502",
     "mnc": "18"
  },
  "original_carrier": {
     "country": "MY",
     "name": "Maxis Mobile",
     "network_code": 50212,
     "mcc": "502",
     "mnc": "12"
  },
  "ported": "ported"
}

Unsuccessful response

{
  "status": 1,
  "err_msg": "Authorization failed"
}

Request a Number Lookup from your Mocean account

POST https://rest.moceanapi.com/rest/2/nl

Parameter Format Description
mocean-to
required
number The phone that you like to lookup about.

Phone number must include country code for example, Malaysian phone number will be like 6012356789.
mocean-nl-url
optional
string Callback URL for the number lookup.

Parameter mocean-nl-url is required if you want your response to be in asynchronous mode.

.Parameter mocean-nl-url is not required if you want your response to be in synchronous mode.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
Code Descriptions
0 OK. No error encountered.
1 Authorization failed.
NOTE: When this error is encountered, No Request is sent.
2 Insufficient balance.
6 No phone number specified.
24 Unknown error.
28 Invalid phone number.
32 Throttled error.
34 Invalid request received.
40 System down for maintenance.
45 System error, please try again.
65 Route not found.
70 Invalid service - Request made is not a service enabled on your account.

Delivery Result

Receiving PUT request

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

helpers do
  def parsed_body
     json? ? JSON.parse(request.body.read) : {}
  end

  def json?
    request.content_type == 'application/json'
  end
end

route :put, '/webhooks/numberlookup' do
  puts params.merge(parsed_body)
  status 204
end

set :port, 3000
from flask import Flask,request

app = Flask(__name__)

@app.route('/webhooks/numberlookup', methods=['PUT'])
def getDeliveryResult():
    data = request.form

    _status = data['status']
    _msgid = data['msgid']
    _to = data['to']
    _current_carrier = data['current_carrier']
    _original_carrier = data['original_carrier']
    _ported = data['ported']
    _err_msg = data['err_msg']
const app = require('express')();
const bodyParser = require('body-parser');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.route('/webhooks/numberlookup').put('handleRst');
function handleRst(req, res)
{
  console.log(res.body);
  res.status(204).send();
}

app.listen(8080)
import mocean.system.*;

class program {

    public static void main(String [] args)
    {
        try
        {
            put("/webhooks/numberlookup", (req, res) -> {                   

                for (String param : req.queryParams()) 
                {
                    System.out.printf("%s: %s\n", param, req.queryParams(param));
                }

                res.status(204);
                return "";
            });
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}
public void ReceiveDLR()
{
    Debug.WriteLine("------");
    Debug.WriteLine("DELIVERY RESULT");
    Debug.WriteLine("status: " + Mocean.Message.Client.DLRStatus(Request.Form["status"]));
    Debug.WriteLine("msgid: " + Request.Form["msgid"]);
    Debug.WriteLine("to: " + Request.Form["to"]);
    Debug.WriteLine("current_carrier: " + Request.Form["current_carrier"]);
    Debug.WriteLine("original_carrier: " + Request.Form["original_carrier"]);
    Debug.WriteLine("ported: " + Request.Form["ported"]);
    Debug.WriteLine("err_msg: " + Request.Form["err_msg"]);
    Debug.WriteLine("------");
}
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';

$app = new \Slim\App;

$handler = function (Request $request, Response $response) {
    $params = $request->getParsedBody();

    // Fall back to query parameters if needed
    if (!count($params)){
        $params = $request->getQueryParams();
    }

    error_log(print_r($params, true));

    return $response->withStatus(204);
};

$app->put('/webhooks/numberlookup', $handler);

$app->run();
?>

Request sent from Mocean

> PUT /webhooks/numberlookup HTTP/1.1
> Host: example.com
> Accept: */*
> Content-Length: 114
> Content-Type: application/x-www-form-urlencoded


{
  status: 0,
  msgid: "test0412143224000022.0002",
  to: 60123456789,
  current_carrier: {
     country: "MY",
     name: "U Mobile",
     network_code: 50218,
     mcc: 502,
     mnc: 18
  },
  original_carrier: {
     country: "MY",
     name: "Maxis Mobile",
     network_code: 50212,
     mcc: 502,
     mnc: 12
  },
  ported: "ported"
}

If an asynchronous response is requested, Mocean will return the delivery result to the callback URL submitted under "mocean-nl-url" in Number Lookup Request.

After returning delivery result, Mocean API Server is expecting a respond with “HTTP OK” (Status 200) or it will keep on retrying until it expired(36 hours).

Note: If you're using localhost environment for receiving Delivery Results, you will need to make your local environment publicly available so Mocean API server can reach your local server. We recommend you try ngrok to do this quite easily.

PUT https://example.com/webhooks/numberlookup

Parameter Format Descriptions
status number Status of number lookup.
msgid string The unique ID of the request.
to number Phone number
current_carrier object Current mobile operator based on IMSI.

fielddescription
countrycountry code
namemobile operator name
network_codenetwork code number
mccmcc number
mncmnc number
original_carrier object Original mobile operator based on phone number prefix.

fielddescription
countrycountry code
namemobile operator name
network_codenetwork code number
mccmcc number
mncmnc number
ported string Information about whether the phone number is ported.

Possible values are:
  • ported
  • not_ported
  • unknown
err_msg string Error message about the failure if status is failed.

WhatsApp API

Send WhatsApp

Templates Message Content

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {

    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status",
    "mocean-content": {
      "type": "template",
      "wa_template": {
        "name": "test_template",
        "language": "en",
        "header_params": [
          {
            "type": "image",
            "rich_media_url": "https://www.mocean.com.my/logo.png"
          }
        ],
        "body_params": [
          {
            "type": "text",
            "text": "This is the first param"
          },
          {
            "type": "text",
            "text": "and this is the 2nd"
          }
        ],
        "wa_buttons": [
          {
            "type": "quick_reply",
            "index": 0,
            "payload": "Content1 to return, used only by button with type: quick_reply"
          },
          {
            "type": "quick_reply",
            "index": 1,
            "payload": "Content2 to return, used only by button with type: quick_reply"
          }
        ]
      }
    }
  }'

Text messages

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status",
    "mocean-content": {
      "type": "text",
      "text": "Mocean sample text",
      "preview_url": false
    }
  }'

Rich Media Content

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-content": {
        "type": "image",
        "text": "Caption for image",
        "rich_media_url": "https://www.mocean.com.my/logo.png"
    },
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status"
  }'

Reaction Content

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status",
    "mocean-content": {
      "type": "reaction",
      "text": "\uD83D\uDE00",
      "reply_to_msg_id": "MESSAGE_ID"
    }
  }'

Interactive Content(button)

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status",
    "mocean-content": {
      "type": "interactive",
      "wa_interactive": {
        "type": "button",
        "header": {
          "type": "image",
          "rich_media_url": "https://www.mocean.com.my/logo.png"
        },
        "body": {
          "text": "Example body text for button"
        },
        "action": {
          "wa_buttons": [
            {
              "type": "reply",
              "title": "Button1 Title",
              "id": "button1_id"
            },
            {
              "type": "reply",
              "title": "Button2 Title",
              "id": "button2_id"
            }
          ]
        }
      }
    }
  }'

Interactive Content(list)

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status",
    "mocean-content": {
      "type": "interactive",
      "wa_interactive": {
        "type": "list",
        "header": {
          "type": "text",
          "text": "Example header text for list"
        },
        "body": {
          "text": "Example body text for list"
        },
        "action": {
          "button_text": "Example button text for list",
          "sections": [
            {
              "title": "Section1 Title",
              "rows": [
                {
                  "id": "row_id1",
                  "title": "row_title1",
                  "description": "row_description1"
                },
                {
                  "id": "row_id2",
                  "title": "row_title2",
                  "description": "row_description2"
                }
              ]
            },
            {
              "title": "Section2 Title",
              "rows": [
                {
                  "id": "row_id1",
                  "title": "row_title1",
                  "description": "row_description1"
                },
                {
                  "id": "row_id2",
                  "title": "row_title2",
                  "description": "row_description2"
                }
              ]
            }
          ]
        }
      }
    }
  }'

Interactive Content(product)

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status",
    "mocean-content": {
      "type": "interactive",
      "wa_interactive": {
        "type": "product",
        "body": {
          "text": "Example body text for single-product"
        },
        "footer": {
          "text": "Example footer text for single-product"
        },
        "action": {
          "catalog_id": "532885782203560",
          "product_retailer_id": "4j15rehvf0"
        }
      }
    }
  }'

Interactive Content(product list)

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
  {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "https://YOUR-WEBHOOK-URL/status",
    "mocean-content": {
      "type": "interactive",
      "wa_interactive": {
        "type": "product_list",
        "header": {
          "type": "text",
          "text": "Example header text for multi-product"
        },
        "body": {
          "text": "Example body text for multi-product"
        },
        "footer": {
          "text": "Example footer text for multi-product"
        },
        "action": {
          "catalog_id": "532885782203560",
          "sections": [
            {
              "title": "Section1 Title",
              "product_items": [
                {
                  "product_retailer_id": "erc3zi4d0e"
                },
                {
                  "product_retailer_id": "shrlghouts"
                }
              ]
            },
            {
              "title": "Section2 Title",
              "product_items": [
                {
                  "product_retailer_id": "4j15rehvf0"
                },
                {
                  "product_retailer_id": "v8etcv50u6"
                }
              ]
            }
          ]
        }
      }
    }
  }'

Location Content

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
 {
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "http://webhook.tld/path",
    "mocean-content": {
        "type": "location",
        "location": {
            "latitude": 3.0470084564634488,
            "longitude": 101.69136665707728,
            "name": "Micro Ocean Technologies Sdn Bhd",
            "address": "Lot 1-2, Incubator 2, Technology Park Malaysia, Lebuhraya Puchong - Sg.Besi, Bukit Jalil, 57000 Kuala Lumpur, Malaysia."
        }
    }
}'

Contacts Content

curl -X POST \
  https://rest.moceanapi.com/rest/2/send-message/whatsapp \
  -H "Authorization: Bearer API_TOKEN_HERE" \
  -d '
{
    "mocean-from": "60123456789",
    "mocean-to": "end-user-phone-number or end-user-bsuid",
    "mocean-event-url": "http://webhook.tld/path",
    "mocean-content": {
        "type": "contacts",
        "wa_contacts": [
            {
                "name": {
                    "formatted_name": "NAME1",
                    "first_name": "FIRST_NAME1",
                    "last_name": "LAST_NAME1",
                    "middle_name": "MIDDLE_NAME1",
                    "suffix_name": "SUFFIX1"
                },
                "birthday": "1999-08-06",
                "addresses": [
                    {
                        "city": "CITY1",
                        "country": "Malaysia",
                        "country_code": "MY",
                        "state": "STATE1",
                        "street": "STREET1",
                        "type": "HOME",
                        "zip": "ZIP1"
                    },
                    {
                        "city": "CITY2",
                        "country": "Malaysia",
                        "state": "STATE2",
                        "street": "STREE2",
                        "type": "WORK",
                        "zip": "ZIP2"
                    }
                ],
                "emails": [
                    {
                        "email": "name1_home@gmail.com",
                        "type": "HOME"
                    },
                    {
                        "email": "name1_work@gmail.com",
                        "type": "WORK"
                    }
                ],
                "org": {
                    "company": "COMPANY1",
                    "title": "TITLE1",
                    "department": "DEPARTMENT1"
                },
                "phones": [
                    {
                        "phone": "0123456789",
                        "type": "HOME"
                    },
                    {
                        "phone": "0193456789",
                        "type": "WORK"
                    }
                ],
                "urls": [
                    {
                        "url": "URL1",
                        "type": "HOME"
                    },
                    {
                        "url": "URL2",
                        "type": "WORK"
                    }
                ]
            },
            {
                "name": {
                    "formatted_name": "NAME2",
                    "last_name": "LAST_NAME2"
                },
                "birthday": "1998-08-31",
                "addresses": [
                    {
                        "city": "CITY1",
                        "type": "HOME"
                    },
                    {
                        "street": "STREET1",
                        "type": "HOME"
                    }
                ],
                "emails": [
                    {
                        "email": "name2_home@gmail.com",
                        "type": "HOME"
                    },
                    {
                        "email": "name2_work@gmail.com",
                        "type": "WORK"
                    }
                ],
                "phones": [
                    {
                        "phone": "01234567890",
                        "type": "HOME"
                    },
                    {
                        "phone": "01934567890",
                        "type": "WORK"
                    }
                ],
                "urls": [
                    {
                        "url": "URL1",
                        "type": "HOME"
                    },
                    {
                        "url": "URL2",
                        "type": "WORK"
                    }
                ],
                "org": {
                    "company": "COMPANY1",
                    "title": "TITLE1",
                    "department": "DEPARTMENT1"

                }
            }
        ]
    }
}'

POST https://rest.moceanapi.com/rest/2/send-message/whatsapp

Request parameters

Parameter Format Description
mocean-from
required
string Registered WhatsApp Business sender phone number.

The phone number must include country code, for example, a Malaysian phone number will be like 60123456789.
mocean-to
required
string Phone number of the WhatsApp receiver or Business Scoped User ID (BSUID).

The phone number must include country code, for example, a Malaysian phone number will be like 60123456789.
mocean-content
required
One of the followings: Content object of the message.

Note:
  • Templates are the only type of message that can be sent to customers who have yet to message you, or who have not sent you a message in the last 24 hours.
mocean-event-url
optional
string Webhook for receiving delivery events regarding their requested process.

A successful response for WhatsApp message will be as follows:

{
  "status": 0,
  "message_id": "d2eaf858-1b0e-11ee-a06f-891a3eb010d6"
}

An unsuccessful response for WhatsApp message will be as follows:

{
  "status": 94,
  "err_msg": "OTT content parameters error",
  "hint": "Parameter wa_template is missing"
}

Response parameters

Upon success, we shall return HTTP status 202.

Parameter Format Description
status number Status of the HTTP request.
message_id string Message ID for the message.
err_msg string (On fail) Error message of the status.
hint string (On fail, if available) Supplementary information on the failure of the request for user debug.
Code Description
0 OK. No error encountered.
1 Authorization failed.
2 Insufficient balance.
6 No destination number specified.
34 Invalid request received. Eg: No JSON parameters found in the request body.
44 Invalid sender ID. Eg: Empty sender ID.
72 Invalid type. Eg: Invalid content or interactive type.
78 Invalid bot or bot is not active. Eg: Incorrect WABA phone number for sender ID.
92 OTT content syntax error. Eg: Missing mandatory parameter in the content.
93 Missing OTT content input. Content JSON object not found in the request body.
94 OTT content parameters error. Eg: Missing mandatory parameter in the content’s parameter.

Receive Delivery Report

Sent (Non Free Entry Point Conversation)

{
  "message_id": "in-message-id",
  "event_type": "delivery-status",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "meta_delivery_status": "sent",
    "timestamp": 1682668041,
    "meta_whatsapp_pricing": {
      "pricing_type": "regular",
      "pricing_category": utility,
    }
  }
}

Delivered (Non Free Entry Point Conversation)

{
  "message_id": "in-message-id",
  "event_type": "delivery-status",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from": "end-user-phone-number",
    "to": "WABA-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "meta_delivery_status": "delivered",
    "timestamp": 1682669084,
    "meta_whatsapp_pricing": {
      "pricing_type": "regular",
      "pricing_category": utility,
    }
  }
}

Sent (Free Entry Point Conversation)

{
  "message_id": "in-message-id",
  "event_type": "delivery-status",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from": "end-user-phone-number",
    "to": "WABA-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "meta_delivery_status": "sent",
    "timestamp": 1746686263,
    "meta_whatsapp_pricing": {
      "pricing_type": "free_entry_point",
      "pricing_category": referral_conversion,
    },
    "meta_whatsapp_conversation": {
      "conversation_id": "xxx",
      "expiration_timestamp": 1746755520,
    }
  }
}

Delivered (Free Entry Point Conversation)

{
  "message_id": "in-message-id",
  "event_type": "delivery-status",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from": "end-user-phone-number",
    "to": "WABA-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "meta_delivery_status": "delivered",
    "timestamp": 1682669084,
    "meta_whatsapp_pricing": {
      "pricing_type": "free_entry_point",
      "pricing_category": referral_conversion,
    },
    "meta_whatsapp_conversation": {
      "conversation_id": "xxx",
      "expiration_timestamp": 1746755520,
    }
  }
}

Read

{
  "message_id": "in-message-id",
  "event_type": "delivery-status",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from": "end-user-phone-number",
    "to": "WABA-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "meta_delivery_status": "read",
    "timestamp": 1682670029
  }
}

Error

{
  "message_id": "in-message-id",
  "event_type": "delivery-status",
  "event_data": {
    "channel_type":"WHATSAPP",
    "from_username": "@end-user-username",
    "from_bsuid": "MY.13491208655302741918",
    "from_parent_bsuid": "end-user-bsuid",
    "from": "end-user-phone-number",
    "to": "WABA-phone-number",
    "meta_delivery_status": "failed",
    "meta_error_details": {
      "error_code": 131047,
      "error_title": "Re-engagement message",
      "error_details": "More than 24 hours have passed since the recipient last replied to the sender number."
    }
  }
}

POST https://example.com/webhooks/whatsapp-delivery-status

Resource

Parameter Format Description
message_id string Message ID associated with the transaction which was given from the HTTP response of send WhatsApp.
event_type string Type of the event. Limited to:
  • delivery-status
event_data Delivery Status Information of the delivery-status

Delivery Status

Parameter Format Description
channel_type string Restricted string WHATSAPP.
from
optional
string Source WhatsApp phone number for said message.

It is an end-user phone number that includes a country code, for example, a Malaysian phone number will be like 60123456789.
to string Destination WhatsApp phone number for the message.

It is a WABA phone number that includes a country code, for example, a Malaysian phone number will be like 60123456789.
from_username
optional
string Username of WhatsApp user

User may set or not set an username, an username will be returned if user has set an username
from_bsuid string An unique identifier generated automatically by Meta for each user-business pair

Eg: MY.1437837634270136
from_parent_bsuid
optional
string This unique identifier generated is shared across multiple business portfolios under a same parent BSUID account, allowing these businesses to reach user using the same user-business identifier

Eg: MY.ENT.506847293015824
meta_delivery_status string Delivery status as reported from meta. String limited to:
  • sent
  • delivered
  • read
  • failed

Note:
  • If the recipient has turned off the read receipts in WhatsApp, you will never receive the “read” status.
  • If the recipient has turned on the read receipts & reads the message instantly (eg: stare on the screen upon delivery), you will never receive the “delivered” status that belongs to the message because official WhatsApp has combined the “delivered” with “read”, sent as one webhook
  • For sending a reaction, you will never receive the “read” status regardless of whether the recipient has turned on/off the read receipts in WhatsApp.
meta_whatsapp_pricing Meta WhatsApp Pricing Pricing information of the message.
meta_whatsapp_conversation Meta WhatsApp Conversation Details about the conversation the message belongs to.

Note:
  • Meta_whatsapp_conversation will only be returned when the conversation is a free entry point conversation.
  • The possible scenario that will include this parameter are “sent”, “delivered” and “read”. This parameter will not be included for “failed” delivery status.
  • This parameter will not be included in the scenario of any delivery status from send reaction because it is not considered as a conversation.
meta_error_details Meta Error Details (On delivery error) Error details for the delivery.
timestamp UNIX timestamp UNIX timestamp for the delivery report.

Meta WhatsApp Conversation

Parameter Format Description
conversation_id string Identifier for the conversation the message belonged to.
expiration_timestamp UNIX timestamp Expiration timestamp for the conversation.
pricing_category string Category of the conversation.

Possible values are:
  • authentication
  • marketing
  • utility
  • service
  • referral_conversion
  • authentication_international

Meta Error Details

Parameter Format Description
error_code integer Error code from meta. Refer here for more information.
error_title string Title for the error.
error_details string Detailed description for the error.

Receive WhatsApp

Text Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "forwarded": true,
    "timestamp": 1690124844,
    "content": {
      "type": "text",
      "text": "Text message sent by end-user"
    }
  }
}

Audio Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "timestamp": 1690124844,
    "content": {
      "type": "audio",
      "media_id": "media-id",
      "mime_type": "audio/ogg; codecs=opus",
      "voice": false
    }
  }
}

Document Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "timestamp": 1690124844,
    "content": {
      "type": "document",
      "text": "Caption for document",
      "name": "example.pdf",
      "media_id": "media-id",
      "mime_type": "application/pdf"
    }
  }
}

Video Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "timestamp": 1690124844,
    "content": {
      "type": "video",
      "text": "Caption for video",
      "media_id": "media-id",
      "mime_type": "video/mp4"
    }
  }
}

Image Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "timestamp": 1690124844,
    "content": {
      "type": "image",
      "text": "Caption for image",
      "media_id": "media-id",
      "mime_type": "image/jpeg"
    }
  }
}

Sticker Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "timestamp": 1690124844,
    "content": {
      "type": "sticker",
      "media_id": "media-id",
      "mime_type": "image/webp",
      "animated": true
    }
  }
}

Quick Reply Button Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "reply_to_msg_id": "MESSAGE_ID",
    "timestamp": 1690124844,
    "content": {
      "type": "button",
      "text": "button1 text",
      "payload": "button1-payload"
    }
  }
}

Reaction Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "reply_to_msg_id": "MESSAGE_ID",
    "timestamp": 1690124844,
    "content": {
      "type": "reaction",
      "text": "\u2764\ufe0f"
    }
  }
}

Referral Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "timestamp": 1690124844,
    "content": {
      "type": "text",
      "text": "Text message sent by end-user",
      "referral": {
        "source_url": "https://fb_post_url",
        "source_type": "post",
        "source_id": "FB_ID",
        "headline": "Example headline",
        "body": "Example body",
        "rich_media_type": "image",
        "rich_media_url": "https://example_image_url"
      }
    }
  }
}

Interactive Button Reply Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "reply_to_msg_id": "MESSAGE_ID",
    "timestamp": 1690124844,
    "content": {
      "type": "interactive_button",
      "id": "button1_id",
      "title": "I opt for button1"
    }
  }
}

Interactive List Reply Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "reply_to_msg_id": "MESSAGE_ID",
    "timestamp": 1690124844,
    "content": {
      "type": "interactive_list",
      "id": "list_item1_id",
      "title": "Title of list item1",
      "description": "Description of list item1"
    }
  }
}

Order Message

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "timestamp": 1690124844,
    "content": {
      "type": "order",
      "catalog_id": "864331704878910",
      "product_items": [
        {
          "product_retailer_id": "91v3m1gh30",
          "currency": "MYR",
          "item_price": 0.05,
          "quantity": 2
        },
        {
          "product_retailer_id": "hhu8narwi5",
          "currency": "MYR",
          "item_price": 0.25,
          "quantity": 3
        }
      ]
    }
  }
}

Text Message with Product Reference

{
  "message_id": "in-message-id",
  "event_type": "message",
  "event_data": {
    "channel_type": "WHATSAPP",
    "from_name": "end-user-profile-name",
    "from": "end-user-phone-number",
    "from_username": "@end-user-username",
    "from_bsuid": "end-user-bsuid",
    "from_parent_bsuid": "end-user-bsuid",
    "to": "WABA-phone-number",
    "referred_product": {
      "catalog_id": "864331704878910",
      "product_retailer_id": "91v3m1gh30"
    },
    "timestamp": 1690124844,
    "content": {
      "type": "text",
      "text": "Do you have this product in blue color?"
    }
  }
}

POST https://example.com/webhooks/whatsapp-inbound-message

Resource

Parameter Format Description
message_id string Identifier for the message
event_type string Type of the event. Limited to:
  • message
event_data Message Information of the message

Message

Parameter Format Description
channel_type string Restricted string WHATSAPP.
from_name string Source WhatsApp phone number profile name for said message..

It is an end-user profile name, for example, a profile name will be like 'Tom'.
from string Source WhatsApp phone number for said message.

It is an end-user phone number that includes a country code, for example, a Malaysian phone number will be like 60123456789.

The existing from field represents the end-user phone number. After BSUID sending is supported, please treat fromas optional. If a message is sent to a BSUID or parent BSUID, Meta may not include the end-user phone number in the webhook.
from_username string Username of WhatsApp user

User may set or not set an username, an username will be returned if user has set an username
from_bsuid string An unique identifier generated automatically by Meta for each user-business pair

Eg: MY.1437837634270136
from_parent_bsuid string This unique identifier is shared across multiple business portfolios under a same parent BSUID account, allowing these businesses to reach user using the same user-business identifier

Eg: MY.ENT.506847293015824
to string Destination WhatsApp phone number for the message.

It is a WABA phone number that includes a country code, for example, a Malaysian phone number will be like 60123456789.
forwarded boolean It is an indication that the message had been forwarded.
frequently_forwarded boolean It is an indication that the message had been frequently forwarded.
reply_to_msg_id string Message ID of the message that was intended to be replied with.

“Message ID” here refers to the “message_id” provided in the HTTP response after sending WhatsApp.
referred_product referred product Referred product object describing the product the user is requesting information about after received an interactive product message, restricted string type parameters:
  • catalog_id
  • product_retailer_id


Note:
  1. The "catalog_id" is the ID for the catalog the ordered item belongs to.
  2. The "product_retailer_id" is a unique identifier as defined in the catalog.
timestamp UNIX timestamp UNIX timestamp for the message.
content Receive WhatsApp Content Content object of the message.

Content

Parameter Format Description
type string Content type of the receiving message. String limited to:
  • text
  • audio
  • document
  • video
  • image
  • sticker
  • button
  • reaction
  • interactive_button
  • interactive_list
  • order
text string Applicable content type for text, button, reaction, document, video and image.

If the content type is text, this parameter indicates a text message sent by the end-user.

If the content type is document, video or image, this parameter indicates caption (text message) for the media file sent by the end-user.

If the content type is a button, this parameter indicates the quick reply button text that the end-user saw and clicked.

If the content type is reaction, this parameter indicates an emoji sent by the end-user.
payload string Applicable content type for button only.

The payload that was sent after the end-user clicks a quick reply button in response to the message template with buttons sent by a WABA.
media_id string Applicable content type for audio, document, video, image and sticker.

The ID of the rich media that is used for downloading the media file sent by the end-user, and you need to call the download media API
mime_type string Applicable content type for audio, document, video, image and sticker.

The mime type of the media file, eg: "video/mp4", is a mp4 file for a video.
name string Applicable content type for document.

The filename of a document.
voice boolean Applicable content type for audio.

Set to true if the audio is voice message; false otherwise.
animated boolean Applicable content type for sticker.

Set to true if the sticker is animated; false otherwise.
id string Applicable content type for interactive_button and interactive_list.

If the content type is interactive_button, this parameter indicates an unique ID of the selected button.

If the content type is interactive_list, this parameter indicates an unique ID of the selected list item.
title string Applicable content type for interactive_button and interactive_list.

If the content type is interactive_button, this parameter indicates the title of the button that the end-user saw and clicked.

If the content type is interactive_list, this parameter indicates the title of the list item that the end-user saw and clicked.
description string Applicable content type for interactive_list.

Description of the selected item.
catalog_id string Applicable content type for order.

ID for the catalog the ordered item belongs to.
product_items Array of Product Item Applicable content type for order.

List of product item's information that the end-user has placed an order.
referral Referral A referral object, if the message is sent in response to a Facebook ad or a post.
address string Applicable content type for interactive_list.

Description of the selected item.
latitude number Applicable content type for interactive_list.

Description of the selected item.
longtitude number Applicable content type for interactive_list.

Description of the selected item.
wa_contacts Array of WhatsApp Contact Applicable content type for contacts.

List of contact cards received.

Product Item

Parameter Format Description
product_retailer_id string Product unique identifier, as defined in catalog.
currency string Price currency of the item.
item_price number Price of the item in two decimal places.
quantity number Number of placed orders for the item.

Referral

Parameter Format Description
source_url string The URL that leads to a Facebook ad or a post.
source_type string The type of the Facebook ad’s source. String limited to:
  • ad
  • post
source_id string The Facebook ID of the ad or post.
headline string The headline used in the Facebook ad or post that generated the message.
body string The body from the Facebook ad or post that generated the message.
rich_media_type string The type of media in the Facebook ad or post that generated the message. String limited to:
  • image
  • video
rich_media_url string The public url of the media file in the Facebook ad or post that generated the message.

Download Rich Media

Download Rich Media

curl -v "https://rest.moceanapi.com/rest/2/media/whatsapp?\
mocean-from=60123456789&\
mocean-media-id=MEDIA_ID" \
-H "Authorization: Bearer API_TOKEN_HERE" \
--output media_file

GET https://rest.moceanapi.com/rest/2/media/whatsapp

Request parameters

Parameter Format Description
mocean-from
required
string Registered WhatsApp Business sender phone number.

The phone number must include country code, for example, a Malaysian phone number will be like 60123456789.
mocean-media-id
required
string ID of the rich media.

A successful HTTP response for Download Rich Media will be as follows:

HTTP/1.1 200 OK
Server: SMSRouter/0.1
Content-Length: 3293799
Content-Disposition: inline;filename=File.mp4
Content-Type: video/mp4

An unsuccessful HTTP response for Download Rich Media will be as follows:

HTTP/1.1 404 Not Found
Server: SMSRouter/0.1
Content-Length: 0

Response status code

HTTP status code Description
200 OK. Media successfully downloaded.
400 Bad Request. Eg: Missing mandatory parameters.
401 Authorization failed.
403 Sender not found.
404 Media not found.
406 Not Acceptable. Eg: Incorrect API URL.
429 Too many requests. Rate limit: 20 requests per minute (per account)
500 Internal server error.

Manage Templates API

GET All Templates

curl -X GET 'https://rest.moceanapi.com/template/whatsapp/message_templates?limit=2' \
-H 'Authorization: Bearer API_TOKEN_HERE' 
require 'net/http'
require 'uri'

uri = URI.parse('https://rest.moceanapi.com/template/whatsapp/message_templates?limit=2')

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri.request_uri)
request['Authorization'] = 'Bearer API_TOKEN_HERE'

response = http.request(request)

puts "Status code: #{response.code}"
puts "Response body: #{response.body}"
import requests

url = 'https://rest.moceanapi.com/template/whatsapp/message_templates'
params = {'limit': 2}
headers = {'Authorization': 'Bearer API_TOKEN_HERE'}

response = requests.get(url, headers=headers, params=params)

print("Status code:", response.status_code)
print("Response body:", response.text)
const url = "https://rest.moceanapi.com/template/whatsapp/message_templates?limit=2";

fetch(url, {
  method: "GET",
  headers: {
    Authorization: "Bearer API_TOKEN_HERE"
  }
})
  .then(res => res.json())
  .then(data => {
    console.log(data);
  })
  .catch(err => {
    console.error("Error:", err);
  });
<?php

$url = "https://rest.moceanapi.com/template/whatsapp/message_templates?limit=2";

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer API_TOKEN_HERE"
]);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo "Error: " . curl_error($ch);
} else {
    echo $response;
}

curl_close($ch);
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class MoceanApiExample {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://rest.moceanapi.com/template/whatsapp/message_templates?limit=2"))
                .header("Authorization", "Bearer API_TOKEN_HERE")
                .GET()
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println("Status code: " + response.statusCode());
        System.out.println("Response body: " + response.body());
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

class MoceanApiExample
{
    static async Task Main(string[] args)
    {
        using HttpClient client = new HttpClient();

        var request = new HttpRequestMessage
        {
            Method = HttpMethod.Get,
            RequestUri = new Uri("https://rest.moceanapi.com/template/whatsapp/message_templates?limit=2")
        };

        request.Headers.Add("Authorization", "Bearer API_TOKEN_HERE");

        HttpResponseMessage response = await client.SendAsync(request);

        string body = await response.Content.ReadAsStringAsync();

        Console.WriteLine($"Status code: {(int)response.StatusCode}");
        Console.WriteLine($"Response body: {body}");
    }
}

Success response

{
  "data": [
    {
      "name": "authentication_mocean_sample",
      "parameter_format": "POSITIONAL",
      "components": [
        {
          "type": "BODY",
          "text": "*{{1}}* is your verification code. For your security, do not share this code.",
          "add_security_recommendation": true,
          "example": {
            "body_text": [["123456"]]
          }
        },
        {
          "type": "FOOTER",
          "text": "This code expires in 5 minutes.",
          "code_expiration_minutes": 5
        },
        {
          "type": "BUTTONS",
          "buttons": [
            {
              "type": "URL",
              "text": "Copy code",
              "url": "https:\/\/www.whatsapp.com\/otp\/code\/?otp_type=COPY_CODE&code_expiration_minutes=5&code=otp{{1}}",
              "example": [
                "https:\/\/www.whatsapp.com\/otp\/code\/?otp_type=COPY_CODE&code_expiration_minutes=5&code=otp123456"
              ]
            }
          ]
        }
      ],
      "language": "en",
      "status": "APPROVED",
      "category": "AUTHENTICATION",
      "id": "3821370126263858"
    },
  ],
  "paging": {
    "cursors": {
      "before": "MAZDZD",
      "after": "MQZDZD"
    },
    "next": "http:\/\/rest.moceanapi.com\/template\/whatsapp\/message_templates?limit=2&after=MQZDZD"
  }
}

Failed response

HTTP/1.1 400 Bad Request
Server: SMSRouter/0.1
Content-Length: 0

Authorization

This API request is using an authorization header.

  • Authorization: Bearer API_TOKEN_HERE

GET all templates

GET https://rest.moceanapi.com/template/whatsapp/message_templates?name=<template_name_search>&limit=<LIMIT>

Request Parameters

Parameter Format Description
limit number (Optional) Optional parameter specifying the maximum number of templates to return per page of results. If not configured, all templates will be returned. Example value: 10
category string (Optional) Filter/search by the category for a template. Enum: ACCOUNT_UPDATE, PAYMENT_UPDATE, PERSONAL_FINANCE_UPDATE, SHIPPING_UPDATE, RESERVATION_UPDATE, ISSUE_RESOLUTION, APPOINTMENT_UPDATE, TRANSPORTATION_UPDATE, TICKET_UPDATE, ALERT_UPDATE, AUTO_REPLY, TRANSACTIONAL, OTP, UTILITY, MARKETING, AUTHENTICATION
content string (Optional) Filter/search by the content for a template. Note: currently do no support search by multiple word Eg: content=Shop now
language string (optional) Filter/search by the language for a template.

Enum:
"af", "sq", "ar", "az", "bn", "bg", "ca", "zh_CN", "zh_HK", "zh_TW", "hr", "cs", "da", "nl", "en", "en_GB", "en_US", "et", "fil", "fi", "fr", "ka", "de", "el", "gu", "ha", "he", "hi", "hu", "id", "ga", "it", "ja", "kn", "kk", "rw_RW", "ko", "ky_KG", "lo", "lv", "lt", "mk", "ms", "ml", "mr", "nb", "fa", "pl", "pt_BR", "pt_PT", "pa", "ro", "ru", "sr", "sk", "sl", "es", "es_AR", "es_ES", "es_MX", "sw", "sv", "ta", "te", "th", "tr", "uk", "ur", "uz", "vi", "zu", "unknown"
name string (Optional) Filter/search by the template name for a template.
name_or_content string (Optional) Filter/search to return a list of message templates where the value for template name or template body content matches this value.
quality_score string (Optional) Filter/search by the quality score for a template.

Enum:
GREEN YELLOW RED UNKNOWN
status string (Optional) Filter/search by the review status for a template.

Enum:
APPROVED, PENDING, REJECTED, IN_APPEAL, PENDING_DELETION, DELETED, DISABLED, PAUSED, LIMIT_EXCEEDED, ARCHIVED.

GET template by ID

GET https://rest.moceanapi.com/template/whatsapp/<template-id>

GET Template by ID

curl -X GET 'https://rest.moceanapi.com/template/whatsapp/5653923468721315' \
-H 'Authorization: Bearer API_TOKEN_HERE' 

Success response

{
  "name": "mocean_template_example",
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "Our {{1}} is on!",
      "example": { "header_text": ["Summer Sale"] }
    },
    {
      "type": "BODY",
      "text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",
      "example": { "body_text": [["the end of August", "25OFF", "25\u0025"]] }
    },
    {
      "type": "FOOTER",
      "text": "Use the buttons below to manage your marketing subscriptions"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        { "type": "QUICK_REPLY", "text": "Unsubcribe Promos" },
        { "type": "QUICK_REPLY", "text": "Unsubscribe from All" }
      ]
    }
  ],
  "language": "en",
  "status": "APPROVED",
  "category": "MARKETING",
  "id": "5653923468721315"
}

Failed response

HTTP/1.1 400 Bad Request
Server: SMSRouter/0.1
Content-Length: 0

Request parameters

Parameter Format Description
template-id optional number Template ID. Eg: 5653923468721315

API Resource(POST)

Creating WhatsApp Template

POST https://rest.moceanapi.com/template/whatsapp/message_templates

Editing WhatsApp Template

POST https://rest.moceanapi.com/template/whatsapp/<template-id>

Editing Limitation

  • You can only perform edits for templates that have an APPROVED, REJECTED, or PAUSED status.
  • Only the components or category of a template can be edited.
  • An approved template's category cannot be changed.
  • Approved templates may be changed once every 24 hours or up to ten times in a 30-day period. It is possible to make unlimited edits to REJECTED or PAUSED templates.
  • Unless template review fails, an edited APPROVED or PAUSED template will be approved automatically.

Parameters

Parameter Format Description
name
(Required)
string Template name. Must only contain lowercase alphanumeric characters and underscores.
language
(Required)
string Template language; one template with the same name can have multiple transliterations.

Enum:
"af", "sq", "ar", "az", "bn", "bg", "ca", "zh_CN", "zh_HK", "zh_TW", "hr", "cs", "da", "nl", "en", "en_GB", "en_US", "et", "fil", "fi", "fr", "ka", "de", "el", "gu", "ha", "he", "hi", "hu", "id", "ga", "it", "ja", "kn", "kk", "rw_RW", "ko", "ky_KG", "lo", "lv", "lt", "mk", "ms", "ml", "mr", "nb", "fa", "pl", "pt_BR", "pt_PT", "pa", "ro", "ru", "sr", "sk", "sl", "es", "es_AR", "es_ES", "es_MX", "sw", "sv", "ta", "te", "th", "tr", "uk", "ur", "uz", "vi", "zu", "unknown"
category
(Required)
string Category of the template. Templates must be categorized as one of the following categories. Pricing is based on categories, and the category you choose will be
verified at the moment the template is created.

Allowed Values:
AUTHENTICATION
MARKETING
UTILITY
allowCategoryChange
(Optional)
string Default: false
Set to true to allow Meta to assign categories based on their template guidelines. If omitted, the template will not be auto-assigned a category and may be
rejected if determined to be miscategorized.
message_send_ttl_seconds
(Optional)
number Time-to-live value of authentication message, represented by seconds.
Eg: 60
parameter_format
(Optional)
string Time-Upon template creation, if a string includes one or more parameters, you can specify their format — either named or positional — and you must include
an example value for each parameter. If you do not specify a format, the template
uses positional format by default.
  • named
  • positional
components
(Required)
WhatsApp Template Components Templates are made up of four primary components which you define when you create a template: header, body, footer, and buttons.

JSON string header example:
<!-- No parameter syntax -->
{"type": "header", "format": "text", "text": "Welcome"}

<!-- Named parameter syntax -->
{"type": "header", "format": "text", "text": "Our new sale starts {{sale_start_date}}!", "example": {"header_text_named_params": [{"param_name": "sale_start_date", "example": "1 Jan 2025"}]}}

<!-- Positional parameter syntax -->
{"type": "header","format": "text", "text": "Our new sale starts {{1}}!", "example": {"header_text": ["1 Jan 2025"]}}

JSON string body example:
<!-- No parameters syntax -->
{"type": "body", "text": "Our Sales are on!"}

<!-- Named parameters syntax -->
{"type": "body", "text": "Shop now through {{shop_name}} and use code {{promo}}", "example": {"body_text_named_params": [{"param_name": "shop_name", "example": "Mocean"}, {"param_name": "promo", "example": "25OFF"} <!-- Additional named parameters go here, if using -->]}}

<!-- Positional parameters syntax -->
{"type": "body", "text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.", "example": {"body_text": [["the end of August","25OFF","25%"] <!-- Additional positional parameters go here, if using --> ]}}

JSON string footer example:
{"type": "FOOTER", "text": "Use the buttons below to manage your marketing subscriptions" <!--Footer text is static and does not support variables. -->}

JSON string buttons example:
{"type": "URL","text": "Shop Now","url": "https://www.mocean.com/shop?promo={{1}}","example": ["summer2023"]} {"type": "BUTTONS", "buttons": [{"type": "PHONE_NUMBER","text": "Call","phone_number": "60123456789"}, {"type": "URL","text": "Shop Now","url": "https://www.mocean.com/shop?promo={{1}}","example": ["summer2023"]} <!-- Additional buttons go here, if using -->]}

WhatsApp Template Components

Parameter Format Description
type
(Required)
string Components type.

Enum:
"HEADER", "BODY", "FOOTER", "BUTTONS"

Note: Templates can only contain one header component. “BODY” component is required.
text string Component type label text.

Characters limitations:
HEADER: Maximum 60 characters.
BODY: Maximum 1024 characters.
FOOTER: Maximum 60 characters.
BUTTONS: Maximum 60 characters.
buttons Buttons components Define button details. Buttons are optional interactive components that, when pressed, perform specific actions.

Templates can have a mixture of up to 10 button components total, although there are limits to individual buttons of the same type as well as combination limits.

If a template has more than three buttons, two buttons will appear in the delivered message and the remaining buttons will be replaced with a See all options button. Tapping the See all options button reveals the remaining buttons.

Button Previews Button Previews

Example Components

Parameter Format Description
header_text string Used during POSITIONAL parameters. For Header Components. Sample header text. Eg:
{ "type": "header", "format": "text", "text": "Our new sale starts {{1}}!", "example": {"header_text": ["1 Jan 2025"]}}
header_text_named_params JSON object Used during the NAMED parameter. Eg:
{"type": "header","format": "text","text": "Our new sale starts {{sale_start_date}}!","example": {"header_text_named_params": [{"param_name": "sale_start_date","example": "1 Jan 2025"}]}}
text string Text string. Supports 1 variable for header. Supports multiple variables for the body.

Text example for header: Our {{1}} is on!

text example for body: Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.
body_text string Used during POSITIONAL parameters. For Body Components. Sample body text. Eg:
{"type": "body","text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.","example": {"body_text": [["the end of August","25OFF","25%"]<!-- Additional positional parameters go here, if using -->]}}
body_text_named_params JSON object Used during the NAMED parameter. Eg:
{"type": "body","text": "Shop now through {{shop_name}} and use code {{promo}}","example": {"body_text_named_params": [{"param_name": "shop_name","example": "Mocean"},{"param_name": "promo","example": "25OFF"} <!-- Additional named parameters go here, if using --> ]}}

Header Components

Parameter Format Description
example Example Components This field provides an example of what the message might look like with actual content.
If the string contains variables, you must include the example property and sample variable values.
format string Component header format.
Enum: "TEXT", "IMAGE", "DOCUMENT", "VIDEO", "LOCATION"
Note: Location headers are restricted to use in UTILITY and MARKETING templates.
header_media string The URL (direct link for file) of the media, valid URL that starts with http or https.
Maximum file size is 16mb.
Accepted file types: "application/pdf", "image/jpeg", "image/jpg", "image/png", "video/mp4"
Eg: "header_media": "http://www.moceansms.com/images/header_logo.jpg"

Body Components

Parameter Format Description
example Example Components This field provides an example of what the message might look like with actual content.
If the string contains variables, you must include the example property and sample variable values.
addSecurityRecommendation boolean Boolean for the template to include the string: "For your security, do not share this code,"
True to include the string. False to exclude the string.
Parameter Format Description
text string Static footer text. Variables are not supported.
codeExpirationMinutes number Indicates how many minutes the code or password is valid. The code expiration warning will not appear in the delivered message if it is omitted.

Buttons Components

Parameter Format Description
example Example Components This field provides an example of what the message might look like with actual content.
If the string contains variables, you must include the example property and sample variable values.
Eg: "example": [ "<EXAMPLE>" ]
type string Buttons type.
Enum: "PHONE_NUMBER", "URL", "QUICK_REPLY", "OTP"
text string Button label text. Supports 1 variable.
If the string contains variables, you must include the example property and sample variable values.
Maximum 25 characters.

Phone Number Buttons Components

Parameter Format Description
type string Buttons type.
Eg: "type": "PHONE_NUMBER"
text string Button label text. Maximum 25 characters.
Eg: Call
phone_number string Alphanumeric string. When the user presses the button, the business phone number (display phone number) will be called.
Maximum 20 characters.
Eg: "phone_number": "+60123456789"

URL Buttons Components

Parameter Format Description
type string Buttons type.
Eg: "type": "URL"
text string Button label text. Maximum 25 characters.
Eg: Shop Now
url string Url of the website, supports 1 variable, will be appended to the end of the URL string.
Eg: https://www.mocean.com/shop?promo={{1}}
Maximum 2000 characters.
example string If the url string contains variables, you must include the example property and sample variable values.
Eg: "example":["https://www.mocean.com/shop?promo=summer2023"]

Quick Reply Buttons Components

Parameter Format Description
type string Buttons type.
Eg: "type": "QUICK_REPLY"
text string Button label text. Maximum 25 characters.
Eg: Unsubscribe from Promos

OTP Buttons Components

Parameter Format Description
type string Buttons type.
Eg: "type": "OTP"
otp_type string OTP type.
Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP"
Eg: "otp_type": "COPY_CODE"

Copy Code Buttons Components

Parameter Format Description
type string Buttons type.
Eg: "type": "OTP"
otp_type string OTP type.
Eg: "otp_type": "COPY_CODE"
text string COPY_CODE Button label text. Maximum 25 characters. Eg: Copy Code
The text will default to a pre-set value localized to the language of the template if it is omitted. Eg: Copy Code for English (US).
example string When an app user taps a COPY_CODE button string, the string is copied to the clipboard of the device.
Maximum 15 characters.
Eg: 2DS0FF

One Tap Buttons Components

Parameter Format Description
type string Buttons type.
Eg: "type": "OTP"
otp_type string OTP type.
Eg: "otp_type": "ONE_TAP"
text string ONE_TAP Button label text. Maximum 25 characters.
Eg: One Tap
autofill_text string Button label text. Maximum 25 characters.
Eg: Autofill
supported_apps JSON object JSON object with package_name and signature_hash.
Eg: "supported_apps": [{"package_name": "com.example.your.app", "signature_hash": "A2r/TIQcGE5"} ]
package_name
(Required)
string The package name of your Android app. Each segment of the string must begin with a letter, and there must be a minimum of two segments (one or more dots). Every character must be an underscore [a-zA-Z0-9_] or alphanumeric.
Although it is not advised, you can specify the package name of your app without utilizing the supported_apps array.
Maximum 224 characters.
Eg: com.example.your.app
signature_hash
(Required)
string Your key hash for app signing. Every character must be an underscore [a-zA-Z0-9_] or alphanumeric.
Although it is not advised, you can define your app's signing key hash without utilizing the supported_apps array.
Must be exactly 11 characters.
Eg: A2r/TIQcGE5

Zero Tap Buttons Components

Parameter Format Description
type string Buttons type.
Eg: "type": "OTP"
otp_type string OTP type.
Eg: "otp_type": "ZERO_TAP"
text string ZERO_TAP Button label text. Maximum 25 characters.
Eg: Zero Tap
autofill_text string Button label text. Maximum 25 characters.
Eg: Autofill
supported_apps JSON object JSON object with package_name and signature_hash.
Eg: "supported_apps": [{"package_name": "com.example.your.app", "signature_hash": "A2r/TIQcGE5"} ]
package_name
(Required)
string The package name of your Android app. Each segment of the string must begin with a letter, and there must be a minimum of two segments (one or more dots). Every character must be an underscore [a-zA-Z0-9_] or alphanumeric.
Although it is not advised, you can specify the package name of your app without utilizing the supported_apps array.
Maximum 224 characters.
Eg: com.example.your.app
signature_hash
(Required)
string Your key hash for app signing. Every character must be an underscore [a-zA-Z0-9_] or alphanumeric.
Although it is not advised, you can define your app's signing key hash without utilizing the supported_apps array.
Must be exactly 11 characters.
Eg: A2r/TIQcGE5
zero_tap_terms_accepted
(Required)
boolean Set to true to indicate that you understand that your use of zero-tap authentication is subject to the WhatsApp Business Terms of Service, and that it’s your responsibility to ensure your customers expect that the code will be automatically filled in on their behalf when they choose to receive the zero-tap code through WhatsApp.

If set to false, the template will not be created as you need to accept zero-tap terms before creating zero-tap enabled message templates.

Delete Template by ID

DELETE https://rest.moceanapi.com/template/whatsapp/message_templates?name=<template-name>&hsm-id=<template-id>

Delete Template by ID

curl -X DELETE 'https://rest.moceanapi.com/template/whatsapp/message_templates?name=mocean_template_example&hsm_id=5653923468715475' \
-H 'Authorization: Bearer API_TOKEN_HERE' 

Success response

{
  "success": "true",
}

Failed response

HTTP/1.1 400 Bad Request
Server: SMSRouter/0.1
Content-Length: 0

Request parameters

Parameter Format Description
name required string Template name. Eg: mocean_template
hsm-id optional number Template ID. Eg: 5653923468715475

Response status code

HTTP status code Description
200 OK. Request Success.
400 Bad Request. Eg: Malformed JSON or missing mandatory parameters or exceeded parameters limitations.
401 Authorization failed.
406 Not Acceptable. Eg: Incorrect API URL.
413 The media file exceeded the limit file size.
415 Unsupported Media Type.
429 Too many requests. Rate limit: 20 requests per minute (per account)
500 IntInternal server error. Eg: timeout for downloading files.
502 Bad Gateway. Eg: Unable to fetch file from media host.

Query API

Authorization

This is an overview of Query API, this is where you do check Balance, Pricing, Messages Status and everything other than Sending SMS and Verify transaction.

Get Balance

Example request

curl -X GET "https://rest.moceanapi.com/rest/2/account/balance" \
  -H "Authorization: Bearer API_TOKEN_HERE"
require 'moceansdk'

mocean = Moceansdk::Client.new(
    Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
)

res = mocean.balance.inquiry()
print res
from moceansdk import Client, Basic, Transmitter

mocean = Client(
    Basic(api_token="API_TOKEN_HERE")
)

res = mocean.balance.inquiry()
print(res)
<?php
$mocean = new \Mocean\Client(
        new \Mocean\Client\Credentials\Basic(['apiToken' => 'API_TOKEN_HERE'])
);

$result = $mocean->account()->getBalance([
    'mocean-resp-format' => 'json'
]);

echo $result;
?>
const moceansdk = require('mocean-sdk');

const mocean = new moceansdk.Mocean(
        new moceansdk.Client({apiToken: "API_TOKEN_HERE"})
);

mocean.balance().inquiry((err, res) => {
  if(err) throw err;
  console.log(res);
});
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

String res = mocean.balance().inquiry();
System.out.println(res);        
Client client = new Client(
            new Basic("API_KEY_HERE", "API_SECRET_HERE")
);

Mocean.Account.Balance _balance = new Mocean.Account.Balance()
{
    mocean_resp_format = "json"
};

string response = Mocean.Account.Client.GetBalance(_balance, creds);

Successful response

{
  "status": 0,
  "value": 100.0000
}

Unsuccessful response

{
  "status": 1,
  "err_msg": "Authorization failed"
}

Retrieve your current account balance via Mocean API Server at Base URL

Response will be given for every request in XML format by default. In fact, you get to choose between XML or JSON format by setting value for optional parameter "mocean-resp-format" and submit along your account balance query.

GET https://rest.moceanapi.com/rest/2/account/balance

Parameter Format Description
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
Error Status Code Error Description
1 Authorization failed.
NOTE: When this error is encountered, No Request is sent.
24 Unknown error.
40 System down for maintenance.
45 System error, please try again.

Account Pricing

Example request

curl -X GET "https://rest.moceanapi.com/rest/2/account/pricing" \
  -H "Authorization: Bearer API_TOKEN_HERE"
require "moceansdk"

token = Client.new("API_KEY_HERE", "API_SECRET_HERE")
mocean = Mocean.new(token)

res = mocean.pricing_list.inquiry()
puts res
from moceansdk import Mocean, Client

token = Client(Basic(api_token="API_TOKEN_HERE"))
mocean = Mocean(token)

res = mocean.price_list.inquiry()
print(res)
<?php
require_once '../vendor/autoload.php';

$token = new Mocean\Client\Credentials\Basic(
  ['apiToken' => 'API_TOKEN_HERE']
);
$mocean = new Mocean\Client($token);

$res = $mocean->account()->getPricing([
    'mocean-resp-format' => 'json'
]);

echo $res;
?>
const moceanjs = require('mocean-sdk');

var token = new moceanjs.Client({apiToken: "API_TOKEN_HERE"});
var mocean = new moceanjs.Mocean(token);

mocean.pricing_list().inquiry((err, res) => {
  if(err) throw err;
  console.log(res);
});
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

String res = mocean.pricing_list().setRespFormat("json").inquiry();
System.out.println(res);
Mocean.Account.Pricing _pricing = new Mocean.Account.Pricing()
{
    mocean_resp_format = "json",
    mocean_mcc = "502",
    mocean_mnc = "01",
    mocean_delimiter = ";",

};

string response = Mocean.Account.Client.GetPricing(_pricing, creds);

Successful response

{
  "status": 0,
  "destinations":[
    {
      "country": "Default",
      "operator": "Default",
      "mcc": "Default",
      "mnc": "Default",
      "price": "0.0100",
      "currency": "MYR"
    },
    {
      "country": "Malaysia",
      "operator": "Default",
      "mcc": "502",
      "mnc": "Default",
      "price": "0.0040",
      "currency": "MYR"
    },
    {
      "country": "Malaysia",
      "operator": "Celcom",
      "mcc": "502",
      "mnc": "13,19",
      "price": "0.0020",
      "currency": "MYR"
    }
  ]
}

Unsuccessful response

{
  "status": 1,
  "err_msg": "Authorization failed"
}

Retrieve your account pricing & supported destination via Mocean API Server at Base URL

Response will be given for every request in XML format by default. In fact, you get to choose between XML or JSON format by setting value for optional parameter "mocean-resp-format" and submit along your account pricing query.

GET https://rest.moceanapi.com/rest/2/account/pricing

Parameter Format Description
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
mocean-mcc
optional
number User can specify to get pricing for a particular Mobile Country Code (MCC).
mocean-mnc
optional
number Mobile Network Code (MNC) needs to be specified if user passes in mocean-mcc. User is allowed to pass ONE MNC only per query.
mocean-delimiter
optional
string Delimiter to be used in CSV format. By default, delimiter is set to “;”. User can specify to set delimiter to “;”, “:” or “
mocean-type
optional
string User can specify which service pricing would user wishes to view. Available options are:
  • sms
  • number-lookup
  • verify
. * Notes:
  • This parameter allow case insensitive
  • if parameter not specified system will return 'sms' pricing by default
  • if user provide mocean-type with invalid type, system will response with 'invalid type' error.
Error Status Code Error Description
1 Authorization failed.
NOTE: When this error is encountered, No Request is sent.
3 No rate found.
24 Unknown error.
32 Throttled.
40 System down for maintenance.
45 System error, please try again.
46 Invalid MCC MNC.
51 Invalid delimiter.
52 Multiple charging packages.
72 Invalid Type.

Message Status

Example request

curl -X GET "https://rest.moceanapi.com/rest/2/report/message?mocean-msgid=MSG_ID" \
  -H "Authorization: Bearer API_TOKEN_HERE"
require "moceansdk"

token = Client.new("API_KEY_HERE", "API_SECRET_HERE")
mocean = Mocean.new(token)

res = mocean.message_status.inquiry({
    'mocean-msgid'=>'example0528181518667384.0002',
    'mocean-resp-format'=>'JSON'
})
puts res
const moceanjs = require('mocean-sdk');

var token = new moceanjs.Client({apiToken: "API_TOKEN_HERE"});
var mocean = new moceanjs.Mocean(token);

mocean.pricing_list().inquiry((err, res) => {
  if (err) throw err;
  console.log(res);
});
from moceansdk import Mocean, Client

token = Client(Basic(api_token="API_TOKEN_HERE"))
mocean = Mocean(token)

res = mocean.message_status.inquiry({'mocean-msgid':'example0528181518667384.0002'})
print(res)
<?php
require_once '../vendor/autoload.php';

$token = new Mocean\Client\Credentials\Basic(
  ['apiToken' => 'API_TOKEN_HERE']
);
$mocean = new Mocean\Client($token);

$res = $mocean->message()->search([
    'mocean-msgid' => 'example0528181518667384.0002',
    'mocean-resp-format' => 'json'
]);

echo $res;
?>
import com.mocean.system.Mocean;
import com.mocean.system.auth.Basic;

Mocean mocean = new Mocean(
                new Basic("API_TOKEN_HERE")
);

String res = mocean.message_status().setMsgid("example0528181518667384.0002").inquiry();
System.out.println(res);
Mocean.Message.Message _message = new Mocean.Message.Message()
{
    mocean_resp_format = "json",
    mocean_msgid = "example0528181518667384.0002"

};

string response = Mocean.Message.Client.Search(_message, creds);

Successful response

{
  "status": 0,
  "message_status": 1,
  "msgid": "cust20013050311050614001",
  "credit_deducted": "1"
}

Unsuccessful response

{
  "status": 1,
  "err_msg": "Authorization failed"
}

Query your Outbound SMS's current status via Mocean API Server at Base URL

Response will be given for every request in XML format by default. In fact, you get to choose between XML or JSON format by setting value for optional parameter "mocean-resp-format" and submit along your query.

GET https://rest.moceanapi.com/rest/2/report/message

Parameter Format Description
mocean-msgid
required
string Message ID associated with the transaction which given during SMS submission.
mocean-resp-format
optional
string Response format. By default, response format will be returned in XML. Supported formats are:
  • XML
  • JSON
Parameter Description
1 Transaction success.
2 Transaction failed.
3 Transaction failed due to message expired.
4 Transaction pending for final status.
5 Transaction not found.
Error Status Code Error Description
1 Authorization failed.
NOTE: When this error is encountered, No Request is sent.
24 Unknown error.
25 Invalid message ID.
32 Throttled.
40 System down for maintenance
45 System error, please try again.

Network Code

The following list below is the details for Network Code:

Network Code Country Code Country Name Operator MCC MNC
28967 AB Abkhazia Aquafon 289 67
28968 AB Abkhazia A-Mobile 289 68
21303 AD Andorra Mobiland 213 03
42402 AE United Arab Emirates Etisalat 424 02
42403 AE United Arab Emirates Emirates Integrated Telecommunications Company PJSC (du) 424 03
41201 AF Afghanistan AWCC 412 01
41220 AF Afghanistan Telecom Development Company Afghanistan Ltd. (ROSHAN) 412 20
41230 AF Afghanistan Afghan Telecom (AT) 412 30
41240 AF Afghanistan Areeba (MTN) 412 40
41250 AF Afghanistan Etisalat 412 50
34450 AG Antigua And Barbuda Digicel Antigua 344 50
344030 AG Antigua And Barbuda APUA PCS 344 030
344920 AG Antigua And Barbuda Cable & Wireless (LIME) 344 920
365010 AI Anguilla Weblinks 365 010
365840 AI Anguilla Cable & Wireless (GSM) 365 840
365930 AI Anguilla Wireless Ventures (Anguilla) Ltd. (Digicel) 365 930
27601 AL Albania Albania Mobile Communications (AMC) 276 01
27602 AL Albania Vodafone Albania 276 02
27603 AL Albania Eagle Mobile 276 03
27604 AL Albania Plus Communication 276 04
28301 AM Armenia ArmenTel (Beeline) 283 01
28304 AM Armenia Karabakh Telecom 283 04
28305 AM Armenia VivaCell-MTS (K Telecom) 283 05
28310 AM Armenia UCom (Orange) 283 10
36251 AN Netherlands Antilles Telcell 362 51
36269 AN Netherlands Antilles (Digicel) 362 69
36291 AN Netherlands Antilles SETEL (UTS Wireless Curaçao) 362 91
362997 AN Netherlands Antilles Radcomm 362 997
63102 AO Angola Unitel 631 02
63104 AO Angola Movicel (CDMA) 631 04
72201 AR Argentina Telefónica Móviles S.A (Movistar) 722 01
72202 AR Argentina Nextel Communications Argentina S.A. 722 02
72236 AR Argentina Telecom Personal S.A. 722 36
722310 AR Argentina AMX Argentina S.A (Claro) (formally CTI Movil) 722 310
722350 AR Argentina Hutchison Telecommunications Argentina 722 350
54411 AS American Samoa Blue Sky Communications 544 11
23201 AT Austria Mobilkom Austria (A1) 232 01
23203 AT Austria T-Mobile 232 03
23205 AT Austria Orange (One) 232 05
23207 AT Austria tele.ring (T-Mobile) 232 07
23209 AT Austria Tele2 232 09
23210 AT Austria Hutchison 3G 232 10
23211 AT Austria bob (A1 MVNO) 232 11
23212 AT Austria Yesss (Orange MVNO) 232 12
23215 AT Austria Barablu Mobile Ltd. 232 15
50502 AU Australia Optus 505 02
50503 AU Australia Vodafone Hutchison (Vodafone/H3G) 505 03
50519 AU Australia Lycamobile Pty Ltd (MVNO) 505 19
50572 AU Australia Telstra Corporation Ltd 505 72
50599 AU Australia Virgin (MVNO on Optus) 505 99
36301 AW Aruba SETAR 363 01
36302 AW Aruba New Millenium Telecom Services N.V. (Digicel) 363 02
40001 AZ Azerbaijan Azercell 400 01
40002 AZ Azerbaijan Bakcell 400 02
40003 AZ Azerbaijan Catel (CDMA-800) (FONEX) 400 03
40004 AZ Azerbaijan Nar Mobile (Azerfon) 400 04
21803 BA Bosnia And Herzegovina HT-ERONET 218 03
21805 BA Bosnia And Herzegovina RS Telecommunications (m:tel)(Mobilna)(Telekom Srpske) 218 05
21890 BA Bosnia And Herzegovina BH Mobile (BH Telecom) 218 90
342600 BB Barbados Flow (Lime) 342 600
342750 BB Barbados Digicel Barbados Ltd. 342 750
342810 BB Barbados Cingular Wireless 342 810
342820 BB Barbados Sunbeach Communications 342 820
47001 BD Bangladesh Grameen Phone 470 01
47002 BD Bangladesh Robi (Aktel)(Axiata) 470 02
47003 BD Bangladesh Banglalink (Orascom) 470 03
47004 BD Bangladesh Teletalk 470 04
47005 BD Bangladesh City Cell (CDMA) 470 05
47006 BD Bangladesh Beeong Warid Telecom (WTBL) 470 06
47007 BD Bangladesh Airtel (Warid) 470 07
20601 BE Belgium Belgacom Mobile (Proximus) 206 01
20605 BE Belgium Telenet (Mobistar MVNO) 206 05
20610 BE Belgium Orange (MOBISTAR) 206 10
20620 BE Belgium KPN (BASE) 206 20
61301 BF Burkina Faso Onatel (TELMOB) 613 01
61302 BF Burkina Faso Orange (Zain/Airtel) 613 02
61303 BF Burkina Faso Telecel Faso S.A. 613 03
28401 BG Bulgaria A1 (M-TEL) 284 01
28403 BG Bulgaria Vivacom BTC (Formerly Vivatel) 284 03
28405 BG Bulgaria Telenor Bulgaria (Formerly Globul) 284 05
42601 BH Bahrain Batelco 426 01
42602 BH Bahrain Zain (MTC Vodafone) 426 02
42604 BH Bahrain Viva 426 04
64201 BI Burundi Econet Leo (Econet Wireless) 642 01
64202 BI Burundi Tempo (Formerly Safaris/Arficell) 642 02
64203 BI Burundi Onamob (Onatel) 642 03
64207 BI Burundi Smart Mobile (Formerly Lacell) 642 07
64282 BI Burundi Leo (Orascom) 642 82
61601 BJ Benin Libercom 616 01
61602 BJ Benin Moov (Telecel Benin) 616 02
61603 BJ Benin MTN Spacetel (Formerly Areeba) 616 03
61604 BJ Benin Bell Benin Communications (BBCom) 616 04
61605 BJ Benin Glo Communication (GloBenin) 616 05
31059 BM Bermuda Cellular One (CMDA) 310 59
35001 BM Bermuda Telecommunications (Bermuda & West Indies) Ltd (Digicel Bermuda) 350 01
35002 BM Bermuda Mobility (M3 Wireless) 350 02
52801 BN Brunei Darussalam Jabatan Telekom Brunei 528 01
52802 BN Brunei Darussalam B-Mobile Communications 528 02
52811 BN Brunei Darussalam DST Communications Sdn Bhd 528 11
73601 BO Bolivia (Plurinational State of) Nuevatel (Viva) 736 01
73602 BO Bolivia (Plurinational State of) Entel 736 02
73603 BO Bolivia (Plurinational State of) Tigo (Telefonica Celular De Bolivia S.A) (Telecel Bolivia) 736 03
72400 BR Brazil Nextel (iDEN) 724 00
72402 BR Brazil TIM Celular 724 02
72405 BR Brazil Claro 724 05
72406 BR Brazil Vivo 724 06
72407 BR Brazil Sercomtel Celular (CTBC) 724 07
72416 BR Brazil Brasil Telecom (14 Brasil Telecom Celular) 724 16
72419 BR Brazil Vivo Minas (Telemig Celular) 724 19
72424 BR Brazil Oi (Amazônia Celular) 724 24
72431 BR Brazil Oi (TNL PCS) 724 31
72437 BR Brazil aeiou (Unicel) 724 37
364390 BS Bahamas The Bahamas Telecommunications Company Ltd 364 390
40211 BT Bhutan B-Mobile 402 11
40277 BT Bhutan TashiCell 402 77
65201 BW Botswana Mascom Wireless 652 01
65202 BW Botswana Orange(Vista Cellular) 652 02
65204 BW Botswana BTC Mobile (BEMOBILE) 652 04
25701 BY Belarus VELCOM 257 01
25702 BY Belarus Mobile TeleSystems JLLC (MTS) 257 02
25703 BY Belarus BelCel JV (DIALLOG) (CDMA) 257 03
25704 BY Belarus Belarussian Telecommunications Network (life:)) 257 04
70267 BZ Belize Belize Telemedia (DigiCell) 702 67
70299 BZ Belize SpeedNet (Smart)(CDMA) 702 99
302220 CA Canada Telus Mobility 302 220
302290 CA Canada Airtel Wireless (iDEN) 302 290
302320 CA Canada DAVE Wireless (Mobilicity) 302 320
302350 CA Canada FIRST 302 350
302360 CA Canada Telus Mobility (MiKe)(iDEN) 302 360
302370 CA Canada Fido (Rogers Wireless)(Microcell) 302 370
302380 CA Canada Dryden Mobility (DMTS) 302 380
302490 CA Canada Freedom Mobile (WIND) 302 490
302510 CA Canada Videotron 302 510
302610 CA Canada Bell Mobility 302 610
302620 CA Canada ICE Wireless 302 620
302651 CA Canada Bell Mobility (CDMA) 302 651
302652 CA Canada BC Tel Mobility (Telus)(CDMA) 302 652
302655 CA Canada MTS Mobility (Manitoba)(CDMA) 302 655
302656 CA Canada Thunder Bay Mobility (TBay)(CDMA) 302 656
302657 CA Canada Telus Mobility (CDMA) 302 657
302660 CA Canada MTS Mobility 302 660
302680 CA Canada SaskTel Mobility (CDMA) 302 680
302701 CA Canada MB Tel Mobility (CDMA) 302 701
302703 CA Canada Aliant Telecom (MT&T)(New Tel)(CDMA) 302 703
302720 CA Canada Rogers Wireless (Rogers Communications) (formally Rogers AT&T wireless) 302 720
302780 CA Canada SaskTel Mobility 302 780
63001 CD Democratic Republic of the Congo Vodacom (Congolese Wireless Network) 630 01
63002 CD Democratic Republic of the Congo Airtel (formerly Celtel/Zain) 630 02
63005 CD Democratic Republic of the Congo Supercell 630 05
63086 CD Democratic Republic of the Congo CCT (Congo-Chine Telecom / Orange) 630 86
63088 CD Democratic Republic of the Congo Yozma Timeturns 630 88
63089 CD Democratic Republic of the Congo Oasis SPRL (Tigo Sait Telecom / ORANGE) 630 89
63090 CD Democratic Republic of the Congo Africell 630 90
62301 CF Central African Republic Centrafrique Telecom Plus (Acell RCA) 623 01
62302 CF Central African Republic Telecel Centrafrique 623 02
62303 CF Central African Republic Orange 623 03
62304 CF Central African Republic NationLink Telecom 623 04
62901 CG Congo Airtel (formerly Celtel/Zain) 629 01
62907 CG Congo WARID Congo 629 07
62910 CG Congo Libertis Telecom (MTN) 629 10
22801 CH Switzerland Swisscom Mobile AG 228 01
22802 CH Switzerland Sunrise (TDC Switzerland AG) 228 02
22803 CH Switzerland Salt Mobile 228 03
22805 CH Switzerland Togewanet (Comfone AG) 228 05
22806 CH Switzerland SBB AG 228 06
22807 CH Switzerland In&Phone SA 228 07
22808 CH Switzerland Tele2 Telecommunication Services AG 228 08
22851 CH Switzerland Bebbicell AG (MVNO) 228 51
22854 CH Switzerland Lyca Mobile (MVNO) 228 54
61202 CI Cote D'Ivoire Moov (Atlantique Cellulaire) 612 02
61203 CI Cote D'Ivoire Orange Cote d'Ivoire 612 03
61204 CI Cote D'Ivoire Comium (KoZ) 612 04
61205 CI Cote D'Ivoire MTN Cote d'Ivoire 612 05
61206 CI Cote D'Ivoire GreenN S.A (Oricel) 612 06
54801 CK Cook Islands Telecom Cook Islands 548 01
73002 CL Chile Telefonica Moviles (movistar) 730 02
73003 CL Chile Claro Chile (Smartcom) 730 03
73004 CL Chile WOM ( Nextel ) 730 04
73010 CL Chile Entel Telefonía Móvil S.A.(Entel) 730 10
73099 CL Chile WILL Telefonía 730 99
62401 CM Cameroon MTN 624 01
62402 CM Cameroon Orange 624 02
62404 CM Cameroon Nextel 624 04
46000 CN China China Mobile 460 00
46001 CN China China Unicom 460 01
46003 CN China China Telecom 460 03
732101 CO Colombia Comcel (Claro/Celcaribe/Occel) 732 101
732102 CO Colombia Bellsouth Colombia S.A. (Movistar) 732 102
732103 CO Colombia Tigo 732 103
732123 CO Colombia Telefonica Moviles Colombia (Movistar/Cocelco) 732 123
732130 CO Colombia Avantel 732 130
71201 CR Costa Rica Instituto Costarricense de Electricidad (ICE) 712 01
71203 CR Costa Rica Claro 712 03
71204 CR Costa Rica Movistar 712 04
36801 CU Cuba Cubacel (ETECSA, C-Com) 368 01
62501 CV Cape Verde CVMóvel, S.A. 625 01
62502 CV Cape Verde T+ 625 02
28001 CY Cyprus CYTAmobile-Vodafone 280 01
28010 CY Cyprus Areeba Ltd (MTN) 280 10
28020 CY Cyprus PrimeTel 280 20
23001 CZ Czech Republic T-Mobile 230 01
23002 CZ Czech Republic O2 (Telefónica/EuroTel Praha) 230 02
23003 CZ Czech Republic Vodafone (Oskar/Cesky Mobil) 230 03
23004 CZ Czech Republic U:fon (MobilKom)(CDMA) 230 04
26201 DE Germany T-Mobile (Cityruf, Scall, Skyper) 262 01
26202 DE Germany Vodafone D2 262 02
26207 DE Germany O2 (Germany) GmbH & Co. OHG 262 07
26213 DE Germany MobilCom 262 13
26214 DE Germany Group 3G (Quam) 262 14
26216 DE Germany Vistream (E-plus's MVNE) 262 16
26243 DE Germany Lycamobile (Voda's MVNO) 262 43
262901 DE Germany Debitel 262 901
63801 DJ Djibouti Evatis (Djibouti Telecom SA) 638 01
23801 DK Denmark TDC A/S 238 01
23802 DK Denmark Telenor (Telenor Denmark/CBB Mobil/Sonofon/Tele2/BiBoB) 238 02
23806 DK Denmark Hi3G (Tre) 238 06
23807 DK Denmark Barablu Mobile 238 07
23812 DK Denmark Lycamobile Denmark Ltd 238 12
23820 DK Denmark Telia 238 20
366020 DM Dominica Digicel 366 020
366110 DM Dominica bMobile (C&W) 366 110
37001 DO Dominican Republic Altice (ORANGE) 370 01
37002 DO Dominican Republic Claro (Codetel) 370 02
37003 DO Dominican Republic Tricom (CDMA) 370 03
37004 DO Dominican Republic Viva (Trilogy Dominicana/Centennial Dominicana) 370 04
60301 DZ Algeria ATM Mobilis 603 01
60302 DZ Algeria Orascom (Djezzy) 603 02
60303 DZ Algeria Wataniya (Ooredoo) 603 03
74000 EC Ecuador Movistar (Otecel/Bellsouth) 740 00
74001 EC Ecuador Porta (Claro / Conecel) 740 01
74002 EC Ecuador Alegro (Telecsa) 740 02
24801 EE Estonia EMT (Estonian Mobile Telecom) 248 01
24802 EE Estonia Elisa Eesti (Eesti) 248 02
24803 EE Estonia Tele 2 Eesti 248 03
24806 EE Estonia OY ViaTel 248 06
60201 EG Egypt Orange (MOBINIL) 602 01
60202 EG Egypt Vodafone 602 02
60203 EG Egypt Etisalat 602 03
65701 ER Eritrea Eritrea Telecommunications Services Corporation (Eritea) 657 01
21401 ES Spain Vodafone Espana, S.A. 214 01
21403 ES Spain Orange (France Telecom Espana SA) 214 03
21404 ES Spain Xfera Moviles, S.A. (Yoigo) 214 04
21407 ES Spain Telefonica Moviles Espana, S.A.U. (Movistar) 214 07
21408 ES Spain Euskaltel, S.A. (MVNO) 214 08
21415 ES Spain BT Group (MVNO) 214 15
21416 ES Spain TeleCable 214 16
21417 ES Spain Mobil (R Cable y Telecomunicaciones Galicia S.A.) 214 17
21418 ES Spain ONO (MVNO) 214 18
21419 ES Spain KPN aka Simyo (MVNO) 214 19
21420 ES Spain Fonyou 214 20
21421 ES Spain Jazztell (MVNO) 214 21
21422 ES Spain DigiMobil 214 22
21423 ES Spain Barablu (MVNO) 214 23
21425 ES Spain Lycamobile 214 25
21427 ES Spain Truphone 214 27
63601 ET Ethiopia ETMTN(EthioMobile) 636 01
24403 FI Finland DNA Oy 244 03
24404 FI Finland Finnet Network 244 04
24405 FI Finland Elisa Oyj (Elisa) 244 05
24407 FI Finland Nokia Oyj 244 07
24410 FI Finland Tdc Song Oy 244 10
24414 FI Finland Ålands Mobiltelefon Ab 244 14
24421 FI Finland Saunalahti (Elisa Oyj) 244 21
24491 FI Finland Teliasonera Finland Oyj 244 91
90113 FI Finland Nokia Siemens Networks Oy 901 13
54201 FJ Fiji Vodafone Fiji (Vodafone) 542 01
54202 FJ Fiji Digicel Fiji (Digicel) 542 02
75001 FK Falkland Islands (Malvinas) Sure (Batelco) 750 01
55001 FM Micronesia (Federated States of) FSM Telecommunication Corporation 550 01
28801 FO Faroe Islands Faroese Telecom GSM 288 01
28802 FO Faroe Islands HEY (Vodafone) 288 02
20801 FR France Orange France 208 01
20807 FR France Globalstar Europe (Satellite) 208 07
20810 FR France Vivendi SFR 208 10
20814 FR France Free Mobile 208 14
20820 FR France Bouygues Telecom 208 20
20822 FR France Transatel 208 22
20825 FR France LycaMobile 208 25
20826 FR France NRJ Mobile (MVNO) 208 26
20831 FR France Vectone Mobile 208 31
62801 GA Gabon Libertis 628 01
62802 GA Gabon Moov (Telecel) 628 02
62803 GA Gabon Airtel (formerly Celtel/Zain) 628 03
62804 GA Gabon Azur 628 04
23400 GB United Kingdom British Telecom (BT) 234 00
23401 GB United Kingdom Mapesbury Communications Limited 234 01
23402 GB United Kingdom O2 (UK) Limited 234 02
23405 GB United Kingdom COLT Mobile Telecommunications Limited 234 05
23407 GB United Kingdom Cable & Wireless UK (VODAFONE) 234 07
23408 GB United Kingdom OnePhone (UK) Ltd 234 08
23414 GB United Kingdom HAY SYSTEMS LIMITED 234 14
23415 GB United Kingdom Vodafone Ltd 234 15
23416 GB United Kingdom Opal Telecom Limited 234 16
23417 GB United Kingdom FleXtel Limited 234 17
23418 GB United Kingdom Cloud9 Telecom PLC 234 18
23419 GB United Kingdom Teleware plc 234 19
23420 GB United Kingdom Hutchison 3G UK Ltd 234 20
23421 GB United Kingdom Logicstar Limited 234 21
23422 GB United Kingdom Routo Telecommunications Limited 234 22
23423 GB United Kingdom Vectone Network Limited 234 23
23424 GB United Kingdom Stour Marine Limited 234 24
23425 GB United Kingdom Software Cellular Network Limited 234 25
23426 GB United Kingdom Lycamobile UK Limted 234 26
23432 GB United Kingdom T-Mobile (UK) Limited 234 32
23433 GB United Kingdom Orange 234 33
23475 GB United Kingdom Inquam Telecom (Holdings) Limited 234 75
234999 GB United Kingdom Magrathea Telecommunications Limited 234 999
865992 GB United Kingdom Airtel Vodafone (Guernsey Airtel Limited) 234 03
2066410 GB United Kingdom Sure Mobile (Cable and Wireless Guernsey Limited) 234 55
2387493 GB United Kingdom Wave Telecom (JT-Wave)(Guernsey) 234 50
35230 GD Grenada Digicel 352 30
352110 GD Grenada Cable and Wireless 352 110
28201 GE Georgia Geocell 282 01
28202 GE Georgia Magti GSM 282 02
28203 GE Georgia Magticom GSM (CDMA) 282 03
28204 GE Georgia Mobitel (Beeline) 282 04
28205 GE Georgia Silqnet (CDMA) 282 05
28267 GE Georgia Aquafon 282 67
28288 GE Georgia A-Mobile 282 88
74201 GF French Guiana Orange Caribe French Guiana 742 01
74202 GF French Guiana Outremer Telecom 742 02
74203 GF French Guiana Saint Martin et Saint Barthelemy Tel Cell SARL 742 03
74220 GF French Guiana Bouygues telecom Caraibe (Digicel) 742 20
62001 GH Ghana MTN (Scancom/Areeba) 620 01
62002 GH Ghana Vodafone (Ghana Telecommunications Company Ltd) 620 02
62003 GH Ghana Millicom Ghana Limited (tiGO) 620 03
62004 GH Ghana Expresso Telecom (Formally Kasapa) (CDMA) 620 04
62006 GH Ghana Zain (Airtel) 620 06
62007 GH Ghana Glo Mobile 620 07
26601 GI Gibraltar Gibtelecom 266 01
26609 GI Gibraltar Shine 266 09
29001 GL Greenland Tele Greenland A/S 290 01
60701 GM Gambia Gamcel 607 01
60702 GM Gambia Africell 607 02
60703 GM Gambia Comium 607 03
60704 GM Gambia Qcell 607 04
61101 GN Guinea Orange Guinée (formerly Spacetel) 611 01
61102 GN Guinea Sotelgui (Lagui) 611 02
61103 GN Guinea Intercel 611 03
61104 GN Guinea Areeba-Guinée 611 04
61105 GN Guinea Cellcom 611 05
34002 GP Guadeloupe Outremer Telecom 340 02
34003 GP Guadeloupe Saint Martin Et Saint Barthelemy Tel Cell SARL (TelCell) 340 03
34008 GP Guadeloupe Dauphin Telecom 340 08
34020 GP Guadeloupe Antilles Francaises Guyane (Digicel) 340 20
2151572 GP Guadeloupe Orange Caraibe Mobiles 340 01
62701 GQ Equatorial Guinea Orange (GETESA) 627 01
62703 GQ Equatorial Guinea HiTs EG.SA (HiTs GQ) 627 03
20201 GR Greece Cosmote (COSMOTE - Mobile Telecommunications S.A) 202 01
20205 GR Greece Vodafone 202 05
20210 GR Greece Wind Hellas Telecommunications 202 10
70401 GT Guatemala Claro (Sercom) 704 01
70402 GT Guatemala Comcel Guatemala / Tigo (Comunicaciones Celulares S.A.) 704 02
70403 GT Guatemala Telefonica Centroamerica (movistar) 704 03
535032 GU Guam IT&E Overseas, Inc. Pcs 535 032
535140 GU Guam Pulse Mobile LLC 535 140
535250 GU Guam Wave Runner (i CAN_GSM) 535 250
535470 GU Guam Docomo Pacific 535 470
535480 GU Guam Choice Phone Llc Dba Iconn 535 480
63202 GW Guinea-Bissau SPACETEL GUINÉ-BISSAU (Areeba) 632 02
63203 GW Guinea-Bissau ORANGE 632 03
63207 GW Guinea-Bissau Guinétel S.A. 632 07
73801 GY Guyana Digicel Guyana (Cel*Star, U-Mobile) 738 01
73802 GY Guyana Guyana Telephone & Telegraph (Cellink Plus) 738 02
45400 HK Hong Kong Hong Kong CSL 454 00
45401 HK Hong Kong CITIC Telecom 1616 454 01
45404 HK Hong Kong Hutchison 454 04
45407 HK Hong Kong China Unicom International 454 07
45408 HK Hong Kong Truphone (Hong Kong) Ltd (Formerly Trident) 454 08
45409 HK Hong Kong China Motion Telecom (HK) 454 09
45411 HK Hong Kong China-Hongkong Telecom 454 11
45412 HK Hong Kong China Mobile Hong Kong Company Limited (Peoples) 454 12
45415 HK Hong Kong SmarTone 454 15
70801 HN Honduras Servicios de Comunicaciones de Honduras (Claro) 708 01
70802 HN Honduras Tigo/Celtel 708 02
70830 HN Honduras Empresa Hondurena de Telecomunicaciones (Hondutel) 708 30
70840 HN Honduras Digicel 708 40
21901 HR Croatia T-Mobile 219 01
21902 HR Croatia Tele2 219 02
21910 HR Croatia A1 (VIPNET) 219 10
37202 HT Haiti Unigestion Holding S.A. (Digicel) 372 02
37203 HT Haiti Natcom 372 03
37220 HT Haiti Haitel 372 20
37230 HT Haiti Rectel 372 30
21601 HU Hungary PANNON GSM (Telenor) 216 01
21630 HU Hungary T-Mobile 216 30
21670 HU Hungary Vodafone 216 70
51000 ID Indonesia PT Pasifik Satelit, PSN (ACeS Indonesia) 510 00
51001 ID Indonesia PT Indonesian Satellite Corporation Tbk (INDOSAT) 510 01
51007 ID Indonesia PT Telkom (Telkom Flexi) (Fixed CDMA) 510 07
51009 ID Indonesia PT Smartfren Telecom (Smartfren) 510 09
51010 ID Indonesia PT. Telekomunikasi Selular (Telkomsel) 510 10
51011 ID Indonesia PT XL Axiata (XL) 510 11
51027 ID Indonesia PT Sampoerna Telekomunikasi Indonesia (Net1) 510 27
51028 ID Indonesia PT Mobile8 (CDMA) 510 28
51089 ID Indonesia PT Hutchison CP Telecommunications (H3G) 510 89
51099 ID Indonesia PT Bakrie (Esia)(Fixed CDMA) 510 99
27201 IE Ireland Vodafone Ireland 272 01
27202 IE Ireland O2 Communications (Ireland) Ltd 272 02
27203 IE Ireland Meteor 272 03
27205 IE Ireland Hutchison 3G Ireland Ltd 272 05
27209 IE Ireland Clever Communications Ltd 272 09
27211 IE Ireland Liffey Telecom (Tesco mobile) (O2 MVNO) 272 11
42501 IL Israel Orange - Partner communications Ltd 425 01
42502 IL Israel Cellcom 425 02
42503 IL Israel Pelephone 425 03
42507 IL Israel Mirs / HotMobile 425 07
42508 IL Israel Golan Telecom 425 08
42509 IL Israel We4G 425 09
42514 IL Israel Alon Cellular Ltd (Youphone) 425 14
42519 IL Israel Telzar/AZI 425 19
4697751 IL Israel Palestine Cellular Communications Ltd. 425 05
5501596 IL Israel Wataniya Palestine Ltd. (Ooredoo) 425 06
23458 IM Isle of Man Manx Telecom 234 58
234009 IM Isle of Man Cable & Wireless Isle of Man Ltd. (Sure Mobile) 234 009
40404 IN India IDEA 404 04
40410 IN India Bharti Airtel 404 10
40411 IN India Vodafone IDEA 404 11
40421 IN India Loop Mobile (BPL Mobile)(Mumbai) 404 21
40453 IN India BSNL 404 53
40468 IN India DOLPHIN (MTNL)(Delhi) 404 68
40469 IN India DOLPHIN (MTNL)(Mumbai) 404 69
40505 IN India Reliance 405 05
40524 IN India HFCL Infotel (Ping)(CDMA)(Punjab) 405 24
405800 IN India Aircel 405 800
405813 IN India Uninor (Haryana) 405 813
405814 IN India Uninor (Himachal Pradesh) 405 814
405815 IN India Uninor (Jammu/Kashmir) 405 815
405816 IN India Uninor (Punjab) 405 816
405817 IN India Uninor (Rajasthan) 405 817
405818 IN India Uninor (Uttar Pradesh (West)) 405 818
405819 IN India Uninor (Andhra Pradesh) 405 819
405820 IN India Uninor (Karnataka) 405 820
405821 IN India Uninor (Kerala) 405 821
405822 IN India Uninor (Kolkata) 405 822
405823 IN India Videocon (Andhra Pradesh) 405 823
405824 IN India Videocon (Assam) 405 824
405825 IN India Videocon (Bihar/Jharkhand) 405 825
405826 IN India Videocon (Delhi) 405 826
405827 IN India Videocon (Gujarat) 405 827
405828 IN India Videocon (Haryana) 405 828
405829 IN India Videocon (Himachal Pradesh) 405 829
405830 IN India Videocon (Jammu/Kashmir) 405 830
405831 IN India Videocon (Karnataka) 405 831
405832 IN India Videocon (Kerala) 405 832
405833 IN India Videocon (Kolkata) 405 833
405834 IN India Videocon (Madhya Pradesh) 405 834
405835 IN India Videocon (Maharashtra/Goa) 405 835
405836 IN India Videocon (Mumbai) 405 836
405837 IN India Videocon (North East) 405 837
405838 IN India Videocon (Orissa) 405 838
405839 IN India Videocon (Rajasthan) 405 839
405840 IN India Videocon (Tamil Nadu) 405 840
405841 IN India Videocon (Uttar Pradesh (East)) 405 841
405842 IN India Videocon (Uttar Pradesh (West)) 405 842
405843 IN India Videocon (West Bengal) 405 843
405844 IN India Uninor (Delhi) 405 844
405854 IN India Loop Mobile (BPL Mobile)(Andhra Pradesh) 405 854
405855 IN India Loop Mobile (BPL Mobile)(Assam) 405 855
405856 IN India Loop Mobile (BPL Mobile)(Bihar/Jharkhand) 405 856
405857 IN India Loop Mobile (BPL Mobile)(Delhi) 405 857
405858 IN India Loop Mobile (BPL Mobile)(Gujarat) 405 858
405859 IN India Loop Mobile (BPL Mobile)(Haryana) 405 859
405860 IN India Loop Mobile (BPL Mobile)(Himachal Pradesh) 405 860
405861 IN India Loop Mobile (BPL Mobile)(Jammu/Kashmir) 405 861
405862 IN India Loop Mobile (BPL Mobile)(Karnataka) 405 862
405863 IN India Loop Mobile (BPL Mobile)(Kerala) 405 863
405864 IN India Loop Mobile (BPL Mobile)(Kolkata) 405 864
405865 IN India Loop Mobile (BPL Mobile)(Madhya Pradesh) 405 865
405866 IN India Loop Mobile (BPL Mobile)(Maharashtra/Goa) 405 866
405867 IN India Loop Mobile (BPL Mobile)(North East) 405 867
405868 IN India Loop Mobile (BPL Mobile)(Orissa) 405 868
405869 IN India Loop Mobile (BPL Mobile)(Punjab) 405 869
405870 IN India Loop Mobile (BPL Mobile)(Rajasthan) 405 870
405871 IN India Loop Mobile (BPL Mobile)(Tamil Nadu) 405 871
405872 IN India Loop Mobile (BPL Mobile)(Uttar Pradesh (East)) 405 872
405873 IN India Loop Mobile (BPL Mobile)(Uttar Pradesh (West)) 405 873
405874 IN India Loop Mobile (BPL Mobile)(West Bengal) 405 874
405875 IN India Uninor (Assam) 405 875
405876 IN India Uninor (Bihar/Jharkhand) 405 876
405877 IN India Uninor (North East) 405 877
405878 IN India Uninor (Orissa) 405 878
405879 IN India Uninor (Uttar Pradesh (East)) 405 879
405880 IN India Uninor (West Bengal) 405 880
405881 IN India S Tel (Assam) 405 881
405882 IN India S Tel (Bihar/Jharkhand) 405 882
405883 IN India S Tel (Himachal Pradesh) 405 883
405884 IN India S Tel (Jammu/Kashmir) 405 884
405885 IN India S Tel (North East) 405 885
405886 IN India S Tel (Orissa) 405 886
405908 IN India Spice (Andhra Pradesh) 405 908
405909 IN India Spice (Delhi) 405 909
405910 IN India Spice (Haryana) 405 910
405911 IN India Spice (Maharashtra/Goa) 405 911
405912 IN India Etisalat (SWAN)(Andhra Pradesh) 405 912
405913 IN India Etisalat (SWAN)(Delhi) 405 913
405914 IN India Etisalat (SWAN)(Gujarat) 405 914
405915 IN India Etisalat (SWAN)(Haryana) 405 915
405916 IN India Etisalat (SWAN)(Karnataka) 405 916
405917 IN India Etisalat (SWAN)(Kerala) 405 917
405918 IN India Etisalat (SWAN)(Maharashtra/Goa) 405 918
405919 IN India Etisalat (SWAN)(Mumbai) 405 919
405920 IN India Etisalat (SWAN)(Punjab) 405 920
405921 IN India Etisalat (SWAN)(Rajasthan) 405 921
405922 IN India Etisalat (SWAN)(Tamil Nadu) 405 922
405923 IN India Etisalat (SWAN)(Uttar Pradesh (East)) 405 923
405924 IN India Etisalat (SWAN)(Uttar Pradesh (West)) 405 924
405925 IN India Uninor (Tamil Nadu) 405 925
405926 IN India Uninor (Mumbai) 405 926
405927 IN India Uninor (Gujarat) 405 927
405928 IN India Uninor (Madhya Pradesh) 405 928
405929 IN India Uninor (Maharashtra/Goa) 405 929
405930 IN India Etisalat (SWAN)(Bihar/Jharkhand) 405 930
405931 IN India Etisalat (SWAN)(Madhya Pradesh) 405 931
405932 IN India Videocon (Punjab) 405 932
4446437 IN India Jio 405 840
41805 IQ Iraq Asia Cell 418 05
41820 IQ Iraq Atheer Telecom Iraq (zain IQ) 418 20
41830 IQ Iraq Orascom Telecom Iraq Corporation (IRAQNA), Atheer Telecom Iraq (zain Iraq) 418 30
41840 IQ Iraq KorekTel 418 40
41845 IQ Iraq Mobitel 418 45
41847 IQ Iraq Iraq Central Cooperative Association for Communication and Transportation 418 47
41880 IQ Iraq Iraqi Telecommunications & Post Company (ITPC) 418 80
41883 IQ Iraq Iraqi Telecommunications & Post Company (Sader Al-Iraq) 418 83
41893 IQ Iraq SanaTel 418 93
43208 IR Iran Shatel 432 08
43211 IR Iran Telecommunication Company of Iran (TCI) (MCI) 432 11
43214 IR Iran Telecommunication Kish Co. (KIFZO) (TKC) 432 14
43219 IR Iran Mobile Telecommunications Company of Esfahan (MTCE) 432 19
43220 IR Iran RighTel 432 20
43232 IR Iran Rafsanjan Industrial Complex (Taliya) 432 32
43235 IR Iran Irancell Telecommunications Services (MTN Irancell) 432 35
27401 IS Iceland Siminn(Iceland Telecom) ( former Landssími Íslands h.f) 274 01
27402 IS Iceland Vodafone (TAL h.f. , Og fjarskipti) 274 02
27404 IS Iceland IMC (Viking) 274 04
27406 IS Iceland Núll níu ehf 274 06
27407 IS Iceland IceCell ehf 274 07
27408 IS Iceland On-waves 274 08
27411 IS Iceland Nova ehf 274 11
27412 IS Iceland Tal hf 274 12
22201 IT Italy TIM Italia 222 01
22202 IT Italy Elsacom 222 02
22210 IT Italy Vodafone S.p.A. 222 10
22230 IT Italy RFI-Rete Ferroviaria Italiana S.p.A. 222 30
22250 IT Italy Iliad Italy 222 50
22288 IT Italy Wind Telecomunicazioni S.p.A. 222 88
22299 IT Italy H3G S.p.A. (UMTS) 222 99
23403 JE Jersey Jersey Airtel Limited 234 03
23450 JE Jersey Jersey Telecom 234 50
23455 JE Jersey Cable & Wireless Jersey Limited (Sure Mobile) 234 55
338020 JM Jamaica Cable & Wireless 338 020
338050 JM Jamaica Mossel Jamaica Ltd. (Digicel) 338 050
338070 JM Jamaica Oceanic Digital Jamaica (Claro Jamaica) 338 070
338501 JM Jamaica Oceanic Digital Jamaica (CDMA) 338 501
41601 JO Jordan Fastlink, Jordan Mobile Telephone Services (JMTS) (zain JO) 416 01
41602 JO Jordan XPress Telecom 416 02
41603 JO Jordan UMNIAH 416 03
41677 JO Jordan Mobilecom (Orange) 416 77
44000 JP Japan Emobile 440 00
44003 JP Japan NTT DoCoMo Hokuriku, Inc. 440 03
44004 JP Japan SoftBank (Vodafone/J-Phone) 440 04
44007 JP Japan DDI Cellular Group 440 07
44009 JP Japan NTT DoCoMo Kansai Inc. (440) 440 09
44010 JP Japan NTT DoCoMo Inc (DOCOMO) 440 10
44011 JP Japan NTT DoCoMo Tokai Inc. 440 11
44012 JP Japan NTT DoCoMo Inc. (440) 440 12
44024 JP Japan NTT DoCoMo Chugoku Inc. (440) 440 24
44025 JP Japan NTT DoCoMo Hokkaido Inc. (440) 440 25
44026 JP Japan NTT DoCoMo Kyushu Inc. (440) 440 26
44028 JP Japan NTT DoCoMo Shikoku Inc. (440) 440 28
44050 JP Japan KDDI Corporation 440 50
44067 JP Japan NTT DoCoMo Tohoku Inc. (440) 440 67
44083 JP Japan TU-KA Cellular Tokai Inc. 440 83
44084 JP Japan TU-KA Phone Kansai Inc. 440 84
44143 JP Japan NTT DoCoMo Kansai Inc. (441) 441 43
44144 JP Japan NTT DoCoMo Chugoku Inc. (441) 441 44
44145 JP Japan NTT DoCoMo Shikoku Inc. (441) 441 45
44191 JP Japan NTT DoCoMo Inc. (441) 441 91
44193 JP Japan NTT DoCoMo Hokkaido Inc. (441) 441 93
44194 JP Japan NTT DoCoMo Tohoku Inc. (441) 441 94
44199 JP Japan NTT DoCoMo Kyushu Inc. (441) 441 99
63902 KE Kenya Safaricom (GSM) 639 02
63903 KE Kenya Airtel (formerly Celtel/Zain) 639 03
63907 KE Kenya Telkom Kenya (Orange Kenya) 639 07
43701 KG Kyrgyzstan Beeline (Bitel/Sky Mobile) 437 01
43703 KG Kyrgyzstan Fonex (AkTel) (CDMA) 437 03
43705 KG Kyrgyzstan Megacom (BiMoCom/Alfa Telecom) 437 05
43709 KG Kyrgyzstan NurTelecom (O!) 437 09
45601 KH Cambodia Cellcard 456 01
45604 KH Cambodia qb 456 04
45606 KH Cambodia Smart Axiata 456 06
45608 KH Cambodia Viettel (Metfone) 456 08
45611 KH Cambodia Seatel 456 11
54509 KI Kiribati Telecom Services Kiribati Ltd (Kiribati Frigate) 545 09
65401 KM Comoros Societe Nationale des Telecommunications (Comores Telecom) (HURI) 654 01
35650 KN Saint Kitts And Nevis Digicel 356 50
356070 KN Saint Kitts And Nevis UTS CariGlobe 356 070
356110 KN Saint Kitts And Nevis Cable & Wireless St Kitts & Nevis 356 110
46705 KP North Korea Koryolink (Cheo Technology Jv Company) 467 05
467193 KP North Korea SunNet, Korea Posts and Telecommunications Corporation (KPTC) 467 193
45002 KR South Korea KT Freetel(KTF) 450 02
45005 KR South Korea SK Telecom 450 05
45006 KR South Korea LG Telecom 450 06
41902 KW Kuwait Zain KW (MTC/Vodafone) 419 02
41903 KW Kuwait Wataniya Telecom (Ooredoo) 419 03
41904 KW Kuwait Viva 419 04
346050 KY Cayman Islands Digicel 346 050
346140 KY Cayman Islands Cable & Wireless (LIME) 346 140
40101 KZ Kazakhstan Beeline (K-mobile) (Kartel) 401 01
40102 KZ Kazakhstan GSM Kazakhstan Ltd (K-Cell) 401 02
40107 KZ Kazakhstan Dalacom (CDMA) 401 07
40177 KZ Kazakhstan Mobile Telecom Service (MTS)(Tele2) 401 77
401501 KZ Kazakhstan Altel 401 501
45701 LA Laos Lao Telecom (LaoTel) 457 01
45702 LA Laos ETL MOBILE 457 02
45703 LA Laos Unitel (Star Telecom) 457 03
45708 LA Laos Tigo (Millicom/Tango) 457 08
41501 LB Lebanon MIC 1 (Alfa) 415 01
41503 LB Lebanon MIC 2 (MTC Touch) 415 03
41505 LB Lebanon Ogero Mobile (OM) 415 05
41532 LB Lebanon Cellis 415 32
41536 LB Lebanon Libancell 415 36
358050 LC Saint Lucia Digicel (St Lucia) 358 050
358110 LC Saint Lucia Cable & Wireless Caribbean Cellular (St Lucia) 358 110
29501 LI Liechtenstein Swisscom (Telecom FL) 295 01
29502 LI Liechtenstein Viag Europlatform (Orange FL) 295 02
29505 LI Liechtenstein Mobilkom FL1 295 05
29577 LI Liechtenstein Tele2 295 77
41301 LK Sri Lanka Mobitel 413 01
41302 LK Sri Lanka MTN Dialog 413 02
41303 LK Sri Lanka Etisalat Lanka (Formerlly Tigo) 413 03
41305 LK Sri Lanka AirTel 413 05
41308 LK Sri Lanka Hutchison Telecommunications Lanka (Hutch) 413 08
61801 LR Liberia Lonestar Communications Corp. 618 01
61802 LR Liberia Atlantic Wireless Liberia (Libercell) 618 02
61803 LR Liberia ORANGE (CELLCOM) 618 03
61804 LR Liberia Comium Liberia 618 04
61820 LR Liberia LIBTELCO 618 20
65101 LS Lesotho Vodacom Lesotho 651 01
65102 LS Lesotho Econet Ezi-Cel 651 02
65103 LS Lesotho Tele-Com Mobile 651 03
24601 LT Lithuania Omnitel (TELIA) 246 01
24602 LT Lithuania UAB Bite Lietuva(BITE) 246 02
24603 LT Lithuania Tele2 246 03
24606 LT Lithuania Mediafon 246 06
27001 LU Luxembourg POST Luxembourg 270 01
27077 LU Luxembourg Tango 270 77
27099 LU Luxembourg Orange 270 99
24701 LV Latvia Latvian Mobile Phone (LMT) 247 01
24702 LV Latvia Tele2 247 02
24703 LV Latvia Triatel (Telekom Baltija) 247 03
24705 LV Latvia Bite Latvija 247 05
24707 LV Latvia Master Telecom MTS GSM 247 07
24708 LV Latvia IZZI 247 08
60600 LY Libyan Arab Jamahiriya Libyana Mobile Phone 606 00
60601 LY Libyan Arab Jamahiriya El Madar Telephone 606 01
60603 LY Libyan Arab Jamahiriya Libya Telecom & Technology (LTT) 606 03
60400 MA Morocco Medi Telecom S.A.(Méditel) 604 00
60401 MA Morocco Itissalat Al-Maghrib (IAM) 604 01
60405 MA Morocco WANA Groupe ONA (INWI) 604 05
21201 MC Monaco Monaco Telecom 212 01
25901 MD Moldova Orange Moldova (VoXtel) 259 01
25902 MD Moldova MoldCell 259 02
25903 MD Moldova InterDnestrCom (IDC) Moldtelecom (Unite) [sharing MCC MNC]
25904 MD Moldova Eventis 259 04
29701 ME Montenegro Telenor (Promonte GSM) 297 01
29702 ME Montenegro T-Mobile 297 02
29703 ME Montenegro MTEL 297 03
64601 MG Madagascar Zain (Celet) (AIRTEL) 646 01
64602 MG Madagascar Orange 646 02
64603 MG Madagascar Sacel 646 03
64604 MG Madagascar Telma 646 04
29401 MK Macedonia T-Mobile (Mobimak) 294 01
29402 MK Macedonia ONE (Cosmofon/MTS) 294 02
61001 ML Mali Malitel 610 01
61002 ML Mali Orange (Ikatel) 610 02
61003 ML Mali ATEL-SA 610 03
41401 MM Myanmar Myanmar Post and Telecommunication (MPT) 414 01
41405 MM Myanmar Ooredoo 414 05
41406 MM Myanmar Telenor 414 06
41409 MM Myanmar Mytel 414 09
42888 MN Mongolia Unitel Co. Ltd 428 88
42891 MN Mongolia Skytel Co. Ltd 428 91
42898 MN Mongolia G-Mobile 428 98
42899 MN Mongolia Mobicom Co. Ltd 428 99
45500 MO Macau Smartone Mobile Communications (Macao) Ltd. (SmarTone) 455 00
45501 MO Macau C.T.M. Telemovel+ 455 01
45503 MO Macau Hutchison Telecom 455 03
34001 MQ Martinique Orange Martinique 340 01
2059122 MQ Martinique Digicel 340 20
7365570 MQ Martinique Outremer 340 02
60901 MR Mauritania Mattel 609 01
60902 MR Mauritania Chinguitel 609 02
60910 MR Mauritania Mauritel Mobiles 609 10
354860 MS Montserrat Cable & Wireless West Indies Ltd (Montserrat) 354 860
27801 MT Malta Vodafone Malta 278 01
27821 MT Malta Go Mobile 278 21
27877 MT Malta Melita Mobile (3G telecoms Malta) 278 77
61701 MU Mauritius Cell Plus MY.T (Orange) 617 01
61702 MU Mauritius Mahanagar Telephone (Mauritius) Ltd. (MTML) 617 02
61710 MU Mauritius Emtel 617 10
47201 MV Maldives Dhiraagu 472 01
47202 MV Maldives Ooredoo 472 02
65001 MW Malawi Telekom Networks Malawi Ltd. (TNM) 650 01
65010 MW Malawi Airtel (formerly Celtel/Zain) 650 10
33403 MX Mexico Pegaso Comunicaciones y Sistemas (Movistar) 334 03
33404 MX Mexico Iusacell / Unefon (CDMA) 334 04
334020 MX Mexico Telcel (Radiomovil Dipsa, S.A. De C.V.) 334 020
334050 MX Mexico Iusacell 334 050
334090 MX Mexico Nextel Mexico (iDen) 334 090
50212 MY Malaysia Maxis Mobile 502 12
50213 MY Malaysia Celcom 502 13
50216 MY Malaysia DiGi Telecom 502 16
50218 MY Malaysia U Mobile 502 18
502150 MY Malaysia Tunetalk (MVNO) 502 150
502152 MY Malaysia YES 502 152
502153 MY Malaysia Unifi (formerly webe) 502 153
502156 MY Malaysia Altel Communications 502 156
502195 MY Malaysia XOX 502 195
64301 MZ Mozambique Mcel 643 01
64303 MZ Mozambique Movitel 643 03
64304 MZ Mozambique Vodacom Mozambique (VM Sarl) 643 04
64901 NA Namibia Mobile Telecommunications Ltd. (MTC) 649 01
64902 NA Namibia Telecom Nambia (switch) 649 02
64903 NA Namibia Orascom Telecom Holding (Leo) (former Cell One) 649 03
54601 NC New Caledonia Mobilis 546 01
61401 NE Niger Sahel-Com / Sonitel 614 01
61402 NE Niger Airtel (formerly Celtel/Zain) 614 02
61403 NE Niger Moov (Telecel) 614 03
61404 NE Niger Orange Niger 614 04
62120 NG Nigeria Airtel (formerly Celtel/Zain) 621 20
62125 NG Nigeria Visafone Communications Ltd. (CDMA) 621 25
62130 NG Nigeria MTN Nigeria 621 30
62140 NG Nigeria Mtel (Nigerian Telecom)(Mobile arm of NITEL) 621 40
62150 NG Nigeria Globacom (Glo Mobile) 621 50
62160 NG Nigeria 9mobile (formerly Etisalat) 621 60
62194 NG Nigeria Reliance Telecommunications Ltd. (Zoom) 621 94
62197 NG Nigeria Multi - Links Telecommunications Ltd. (CDMA) 621 97
62199 NG Nigeria Starcomms PLC (CDMA) 621 99
71021 NI Nicaragua Claro 710 21
71030 NI Nicaragua Movistar 710 30
20401 NL Netherlands Scarlet Telecom B.V. OneFoon (VastMobiel) 204 01
20402 NL Netherlands Tele2 (Netherlands) B.V. 204 02
20403 NL Netherlands FreeTime Telecom B.V. (Voiceworks) 204 03
20404 NL Netherlands Vodafone Libertel N.V. 204 04
20405 NL Netherlands Elephant Talk 204 05
20406 NL Netherlands Vectone Mobile / Delight Mobile (Mundio Mobile) 204 06
20407 NL Netherlands Teleena (MVNE) 204 07
20408 NL Netherlands KPN Telecom 204 08
20409 NL Netherlands Lycamobile 204 09
20411 NL Netherlands VenusandMercury Telecom (VoipIT B.V) 204 11
20412 NL Netherlands Telfort 204 12
20414 NL Netherlands BT INMO (6GMOBILE B.V.) 204 14
20416 NL Netherlands T-Mobile (BEN) 204 16
20420 NL Netherlands Orange Nederland N.V. (T-Mobile NL) 204 20
24201 NO Norway Telenor Norge AS 242 01
24202 NO Norway Telia (NetCom) 242 02
24209 NO Norway Com4 242 09
24214 NO Norway ICE Communication Norge AS 242 14
42901 NP Nepal Nepal Mobile (Nepal Telecom) 429 01
42902 NP Nepal Nepal Spice (Ncell) 429 02
42904 NP Nepal SmartCell 429 04
53602 NR Nauru Digicel 536 02
53001 NZ New Zealand Vodafone (Telstra-Clear) 530 01
53005 NZ New Zealand Spark New Zealand 530 05
53006 NZ New Zealand Skinny 530 06
53024 NZ New Zealand 2degrees 530 24
42202 OM Oman Oman Mobile (GTO) 422 02
42203 OM Oman Ooredoo (Nawras) 422 03
71401 PA Panama Cable & Wireless Panama, S.A. 714 01
71402 PA Panama Telefonica Moviles de Panama, S.A. (Movistar) 714 02
71403 PA Panama Claro (Panama) 714 03
71404 PA Panama Digicel 714 04
71601 PE Peru TE S.A.M. Peru (GLOBALSTAR) 716 01
71606 PE Peru Telefonica Moviles Peru (Movistar/Bellsouth) 716 06
71607 PE Peru Nextel Peru (Entel)) 716 07
71610 PE Peru Claro (TIM) 716 10
71615 PE Peru Viettel Mobile 716 15
54720 PF French Polynesia VINI 547 20
53701 PG Papua New Guinea Pacific Mobile Comms (PMC) (B-Mobile) 537 01
53702 PG Papua New Guinea citifon 537 02
53703 PG Papua New Guinea Digicel (PNG) Ltd 537 03
51502 PH Philippines Globe Telecom 515 02
51503 PH Philippines Smart Communications 515 03
51588 PH Philippines Next Mobile (Nextel) 515 88
41001 PK Pakistan Mobilink 410 01
41003 PK Pakistan PAK Telecom Mobile Ltd (Ufone) 410 03
41004 PK Pakistan Paktel, CMPak (ZONG) 410 04
41006 PK Pakistan Telenor Pakistan 410 06
41007 PK Pakistan Warid Telecomminication 410 07
41008 PK Pakistan SCO Mobile 410 08
26001 PL Poland POLKOMTEL S.A. (Plus) 260 01
26002 PL Poland Polska Telefonia Cyfrowa Sp. z o.o. (PTC) (Era) 260 02
26003 PL Poland Orange Polska 260 03
26004 PL Poland Tele 2 Polska (MVNO) 260 04
26007 PL Poland P4 Sp. z o.o. (Play)(Netia - MVNO) 260 07
26008 PL Poland E-Telko 260 08
26009 PL Poland Telekomunikacja Kolejowa GSM-R 260 09
26012 PL Poland Cyfrowy Polsat (MVNO) 260 12
30801 PM Saint Pierre And Miquelon St. Pierre-et-Miquelon Télécom (AMERIS) 308 01
33030 PR Puerto Rico Cingular Wireless 330 30
330110 PR Puerto Rico Puerto Rico Telephone Company (Claro) Verizon 330 110
42505 PS Palestinian Territory (Occupied) Jawwal (Palestine Cellular Communications) 425 05
42506 PS Palestinian Territory (Occupied) Wataniya 425 06
26801 PT Portugal Vodafone 268 01
26803 PT Portugal Optimus / NOS 268 03
26804 PT Portugal Lycamobile Portugal 268 04
26805 PT Portugal OniWay 268 05
26806 PT Portugal TMN / MEO 268 06
55201 PW Palau Palau National Communications Corporation (PNCC) 552 01
55202 PW Palau Palau Mobile Corporation (PMC) 552 02
74401 PY Paraguay Hola Paraguay (Vox) 744 01
74402 PY Paraguay AMX Claro 744 02
74404 PY Paraguay Telefónica Celular del Paraguay / Tigo 744 04
74405 PY Paraguay Nucleo (Personal) 744 05
74406 PY Paraguay Copaco S.A. 744 06
42701 QA Qatar Qtel / Ooredoo 427 01
42702 QA Qatar Vodafone Qatar 427 02
64700 RE Reunion Orange Réunion 647 00
64702 RE Reunion OUTREMER TELECOM 647 02
64710 RE Reunion SRR REUNION 647 10
22601 RO Romania Vodafone Romania (formerly Connex) 226 01
22603 RO Romania Cosmote 226 03
22604 RO Romania Cosmote (CDMA) 226 04
22605 RO Romania DigiMobil (RCS-RDS) 226 05
22610 RO Romania Orange Romania (formerly Dialog) 226 10
22001 RS Serbia Telenor (Mobtel) 220 01
22003 RS Serbia Telekom Srbija JSC 220 03
22005 RS Serbia VIP Mobile 220 05
25001 RU Russian Federation Mobile TeleSystems (MTS) 250 01
25002 RU Russian Federation MegaFon (NorthWest/Sonic Duo) 250 02
25003 RU Russian Federation Nizhegorodskaya Cellular Communications 250 03
25004 RU Russian Federation Sibchallenge 250 04
25005 RU Russian Federation Yeniseytelecom (Mobile Communications Systems) 250 05
25006 RU Russian Federation Skylink CJSC Saratov System of Cellular Communications 250 06
25010 RU Russian Federation DTC Dontelekom 250 10
25011 RU Russian Federation Orensot 250 11
25012 RU Russian Federation Baykal Westcom (ULAN-UDE) 250 12
25013 RU Russian Federation Kuban GSM 250 13
25015 RU Russian Federation SMARTS (BM Telecom) 250 15
25016 RU Russian Federation New Telephone Company 250 16
25017 RU Russian Federation Uralsvyazinform (Utel, Uratel) (former Ermak) 250 17
25020 RU Russian Federation Tele2 Russia (ECC) 250 20
25021 RU Russian Federation Globalstar 250 21
25035 RU Russian Federation MOTIV 250 35
25039 RU Russian Federation Rostelecom 250 39
25092 RU Russian Federation Primtelefon (Primtelefone) 250 92
25099 RU Russian Federation Beeline (VimpelCom) 250 99
250020 RU Russian Federation Corporation North Krown 250 020
250808 RU Russian Federation Siberian Cellular Communications 250 808
4225596 RU Russian Federation Yota Orensot ( Scartel ) 250 11
8627527 RU Russian Federation Tele2 250 20
63510 RW Rwanda MTN Rwandacell SARL 635 10
63512 RW Rwanda Rwandatel 635 12
63513 RW Rwanda TIGO Rwanda 635 13
63514 RW Rwanda Airtel Rwanda 635 14
63517 RW Rwanda Olleh 635 17
42001 SA Saudi Arabia Saudi Telecom (Al Jawal) (STC) 420 01
42003 SA Saudi Arabia Etihad Etisalat Company (Mobily) 420 03
42004 SA Saudi Arabia Zain Saudi Arabia 420 04
42005 SA Saudi Arabia Virgin Mobile 420 05
54001 SB Solomon Islands Breeze 540 01
54002 SB Solomon Islands beMobile 540 02
63301 SC Seychelles Cable and Wireless (Seychelles) Ltd 633 01
63302 SC Seychelles MediaTech 633 02
63310 SC Seychelles Telecom (Seychelles) (Airtel) 633 10
63401 SD Sudan Mobitel (Zain) 634 01
63402 SD Sudan MTN Sudan (Areeba) 634 02
63405 SD Sudan Canar 634 05
63407 SD Sudan Sudani 634 07
24001 SE Sweden TeliaSonera Sverige AB 240 01
24002 SE Sweden Hi3G Access AB 240 02
24003 SE Sweden Netett Sverige AB (Ice.net) 240 03
24007 SE Sweden Tele2 Sverige AB 240 07
24008 SE Sweden Telenor Sverige AB 240 08
24010 SE Sweden Spring Mobil AB (Swefour) 240 10
24011 SE Sweden Lindholmen Science Park AB 240 11
24012 SE Sweden Barablu Mobile Scandinavia 240 12
24013 SE Sweden Ventelo Sverige 240 13
24017 SE Sweden Götalandsnätet AB 240 17
24020 SE Sweden Wireless Maingate AB 240 20
52501 SG Singapore SingTel Mobile 525 01
52503 SG Singapore M1 525 03
52505 SG Singapore StarHub Mobile 525 05
52510 SG Singapore TPG Telecom 525 10
52512 SG Singapore DNA Comms (PTRS) (Grid) 525 12
29340 SI Slovenia A1 (SI.MOBIL) 293 40
29341 SI Slovenia Mobitel NMT 293 41
29364 SI Slovenia T-2 293 64
29370 SI Slovenia Tusmobil 293 70
23101 SK Slovakia Orange 231 01
23102 SK Slovakia T-Mobile 231 02
23103 SK Slovakia Unient Communcations (Swan) 231 03
23106 SK Slovakia Telefónica O2 231 06
61901 SL Sierra Leone Orange (AIRTEL) 619 01
61904 SL Sierra Leone Comium (Sierra Leone) Ltd. 619 04
61905 SL Sierra Leone LINTEL (Sierra Leone) Limited (Africell) 619 05
61906 SL Sierra Leone Sierratel 619 06
61925 SL Sierra Leone Mobitel 619 25
61940 SL Sierra Leone Datatel (GSM) 619 40
61950 SL Sierra Leone Datatel (CDMA) 619 50
29201 SM San Marino San Marino Telecom 292 01
29288 SM San Marino Wind Telecomunicazioni SpA 292 88
60801 SN Senegal Orange (Sonatel) 608 01
60802 SN Senegal Togo (Millicom) 608 02
60803 SN Senegal Expresso (Sudatel) 608 03
63701 SO Somalia Telesom 637 01
63704 SO Somalia Somafone 637 04
63710 SO Somalia Nationlink 637 10
63719 SO Somalia SolTelco 637 19
63725 SO Somalia Hormuud Telecom Somalia Inc 637 25
63730 SO Somalia Golis 637 30
63771 SO Somalia Somtel 637 71
63782 SO Somalia Telcom Mobile 637 82
74602 SR Suriname Telesur 746 02
74603 SR Suriname Digicel Suriname 746 03
74604 SR Suriname INTERSUR 746 04
65902 SS South Sudan MTN 659 02
65903 SS South Sudan Gemtel 659 03
65904 SS South Sudan Network of the World Ltd (VivaCell) 659 04
65906 SS South Sudan Mobitel (ZAIN) 659 06
62601 ST Sao Tome And Principe CSTmovel 626 01
70601 SV El Salvador Claro (America Movil) 706 01
70602 SV El Salvador Digicel 706 02
70603 SV El Salvador Telemovil (Tigo/Millicom) 706 03
70604 SV El Salvador Movistar (Telefonica Moviles El Salvador) 706 04
70605 SV El Salvador Intelfon (iDEN) 706 05
706998 SV El Salvador Intelfon RED 706 998
41701 SY Syria Syriatel 417 01
41702 SY Syria Areeba / MTN 417 02
41709 SY Syria Syrian Telecommunication Est. (MOBILE SYRIA) 417 09
65302 SZ Swaziland Swazi Mobile 653 02
65310 SZ Swaziland Swazi MTN 653 10
37605 TC Turks And Caicos Islands Digicel (TCI) Ltd 376 05
376350 TC Turks And Caicos Islands Cable and Wireless (GSM) 376 350
376352 TC Turks And Caicos Islands IslandCom Communication Ltd 376 352
62201 TD Chad Airtel (formerly Celtel/Zain) 622 01
62202 TD Chad Tawali 622 02
62203 TD Chad TIGO - Millicom 622 03
62207 TD Chad Salam 622 07
61501 TG Togo Togo Telecom (Togo Cel) 615 01
61503 TG Togo Telecel (MoovTogo) 615 03
52000 TH Thailand CAT Telecom (CDMA)(Hutch) 520 00
52001 TH Thailand Advanced Wireless Network Company (AIS) 520 01
52010 TH Thailand WCS 520 10
52015 TH Thailand TOT (ACT Mobile) 520 15
52018 TH Thailand Total Access Communication Plc. (TAC/DTAC) 520 18
52020 TH Thailand AcES Thailand 520 20
52099 TH Thailand True Corporation (TrueMove) 520 99
43601 TJ Tajikistan Tcell (JV Somoncom) 436 01
43602 TJ Tajikistan Tcell (Indigo Tajikistan) 436 02
43603 TJ Tajikistan Megafon (TT Mobile) 436 03
43604 TJ Tajikistan Babilon-M 436 04
43605 TJ Tajikistan Beeline (Tacom) 436 05
43610 TJ Tajikistan Babilon-T (WiMax) 436 10
436501 TJ Tajikistan TK Mobile (CDMA) 436 501
51401 TL Timor-Leste Telkomcel 514 01
51402 TL Timor-Leste Timor Telecom 514 02
43801 TM Turkmenistan Barash Communication Technologies INC 438 01
43802 TM Turkmenistan Altyn Asyr(TM-Cell) 438 02
60501 TN Tunisia Orange Tunisie 605 01
60502 TN Tunisia Tunisie Telecom (Tunicell) 605 02
60503 TN Tunisia ooredoo Tunisiana (Formerly Orascom) 605 03
53901 TO Tonga U-Call 539 01
53943 TO Tonga Shoreline Communication 539 43
53988 TO Tonga Digicel (Tonfon) 539 88
28601 TR Turkey Turkcell 286 01
28602 TR Turkey Vodafone 286 02
28603 TR Turkey Aria (AVEA) 286 03
37412 TT Trinidad And Tobago TTST Mobile 374 12
374130 TT Trinidad And Tobago Digicel Trinidad and Tobago Ltd 374 130
374140 TT Trinidad And Tobago LaqTel Ltd 374 140
55301 TV Tuvalu Tuvalu Telecommunications Corporation 553 01
46601 TW Taiwan Far EasTone (Formerly KG Telecom) 466 01
46605 TW Taiwan Asia Pacific Telecom 466 05
46606 TW Taiwan Tuntex Telecom 466 06
46611 TW Taiwan Chunghwa Telecom LDM (AMP) 466 11
46656 TW Taiwan "CT2 (Taiwan First International Telecom)" 466 56
46668 TW Taiwan ACeS International (AIL) 466 68
46689 TW Taiwan T Star 466 89
46692 TW Taiwan Chunghwa Telecom LDM 466 92
46693 TW Taiwan Mobitai 466 93
46697 TW Taiwan Taiwan Cellular Corporation (Taiwan Mobile) 466 97
46699 TW Taiwan TransAsia 466 99
64002 TZ Tanzania MIC (T) Ltd. (Mobitel) (Tigo) 640 02
64003 TZ Tanzania Zanzibar Telecom Ltd (Zantel) 640 03
64004 TZ Tanzania Vodacom (T) Ltd. 640 04
64005 TZ Tanzania Airtel (formerly Celtel/Zain) 640 05
64007 TZ Tanzania Tanzania Telecom­munications Company Ltd (TTCL) 640 07
64008 TZ Tanzania SMART 640 08
64009 TZ Tanzania Viettel (Halotel) 640 09
64011 TZ Tanzania Smile 640 11
25501 UA Ukraine MTS (Ukrainian Mobile Communications) 255 01
25503 UA Ukraine Kyivstar 255 03
25504 UA Ukraine International Telecommunication (CDMA800) (IT) 255 04
25505 UA Ukraine Golden Telecom 255 05
25506 UA Ukraine life:) (Astelit) 255 06
25507 UA Ukraine 3Mob (Ukrtelecom UMTS ) 255 07
25521 UA Ukraine Telesystems (CDMA) (PEOPLEnet) 255 21
25599 UA Ukraine Phoenix 255 99
64101 UG Uganda Airtel (formerly Celtel/Zain) 641 01
64106 UG Uganda Vodacom 641 06
64110 UG Uganda MTN (Uganda) Ltd 641 10
64111 UG Uganda Uganda Telecom Ltd 641 11
64114 UG Uganda Orange Uganda (Africell) 641 14
64122 UG Uganda Warid Telecom Uganda 641 22
3921 US United States Centennial Southeast License Company Llc 310 030
39573 US United States Oklahoma Western Telephone Company 310 540
110715 US United States Alltel Communications, Inc. - La 310 500
196395 US United States Sprint Spectrum L.p.- Fl 310 020
218814 US United States Cellco Partnership Dba Verizon Wireless - Ks 310 012
236021 US United States Alltel Communications, Inc. - Mi 310 500
310011 US United States Northstar Technology, Llc 310 011
310012 US United States Cellco Partnership Dba Verizon Wireless 310 012
310015 US United States Southern Communications Services 310 015
310016 US United States Cricket Communications, Inc. 310 016
310020 US United States Sprint Spectrum L.p. (Union Telephone Company) 310 020
310030 US United States Centennial 310 030
310034 US United States Airpeak Communications, Llc 310 034
310060 US United States Consolidated Communications Networks, Inc. 310 060
310080 US United States Corr Wireless Communications, Llc 310 080
310090 US United States Edge Wireless, Llc 310 090
310100 US United States New Mexico RSA 4 East Ltd Partnership (Plateau Wireless) 310 100
310130 US United States Carolina West Wireless 310 130
310140 US United States Cross Telephone Co. 310 140
310180 US United States West Central Telephone Association 310 180
310190 US United States Alaska Wireless Communications, Llc 310 190
310250 US United States T-MOBILE (Honolulu-H) 310 250
310260 US United States D&e/omnipoint Wirel Joint Vent Lp Dba Pcs One 310 260
310311 US United States Farmers Cellular Telephone, Inc. 310 311
310320 US United States Smith Bagley Inc. Dba Cellular One Of Ne Arizona 310 320
310350 US United States South Carolina Net, Inc. - Sc 310 350
310400 US United States Wave Runner LLC Mariana Islands (i CAN_GSM) 310 400
310410 US United States Blue Licenses Holding, Llc 310 410
310420 US United States Cincinnati 310 420
310430 US United States Alaska Digitel, LLC 310 430
310440 US United States Dobson Cellular Systems, Inc. 310 440
310460 US United States Tmp Corp. 310 460
310490 US United States T-Mobile (former Suncom Wireless Operating Company, Llc) 310 490
310500 US United States Alltel Communications, Inc. 310 500
310540 US United States Oklahoma Western Telephone Co. 310 540
310560 US United States Dobson Telephone Co. 310 560
310570 US United States MTPCS, LLC (Chinook Wireless) 310 570
310590 US United States Western Wireless Corporation 310 590
310600 US United States New Cell, Inc. Dba Cellcom 310 600
310610 US United States Elkhart Telephone Co., Inc. 310 610
310620 US United States Coleman County Telecomm.,ltd Dba Trans Texas Pcs 310 620
310630 US United States Choice Wireless Lc 310 630
310640 US United States Airadigm Communications Inc 310 640
310670 US United States Northstar Access, Llc 310 670
310690 US United States Keystone - Arthur Telephone Co. 310 690
310760 US United States Panhandle Telecommunications Systems, Inc. 310 760
310770 US United States Iowa Wireless Services, Lp 310 770
310790 US United States Pinpoint Wireless, Inc. 310 790
310830 US United States Caprock Cellular Limited Partnership 310 830
310870 US United States Kaplan Telephone Co. 310 870
310880 US United States Advantage Cellular Systems, Inc. 310 880
310890 US United States Rural Cellular Corp. Dba Rcc Network Inc 310 890
310900 US United States Taylor Telephone Cooperative, Inc. 310 900
310910 US United States First Communications Llc Dba Corecomm - Oh 310 910
310940 US United States Poka - Lambro Telephone Cooperative, Inc. 310 940
310950 US United States Xit Rural Telephone Cooperative, Inc. 310 950
310970 US United States Globalstar Usa, Inc. 310 970
311000 US United States Mid-tex Cellular Ltd. 311 000
311040 US United States Commnet Wireless, Inc. 311 040
311050 US United States Wilkes Telephone & Electric Co., Inc. 311 050
311090 US United States Sioux Valley Telephone Co. 311 090
311190 US United States United States Cellular Corp. - Illinois 311 190
311230 US United States Cellular South, Inc. 311 230
311520 US United States Crossroads Wireless 311 520
374391 US United States Sprint Spectrum L.p. - Nd 310 020
413426 US United States Cellco Partnership Dba Verizon Wireless - Ut 310 012
474151 US United States Union Telephone Company Dba Union Cellular 310 020
546973 US United States Cellco Partnership Dba Verizon Wireless - De 310 012
600112 US United States Cellco Partnership Dba Verizon Wireless - Co 310 012
637817 US United States New Cingular Wireless Pcs, Llc - Mo 310 410
653424 US United States Western Wireless Corporation-ut 310 590
717011 US United States Centennial Michagan License Company Llc 310 030
726632 US United States Cincinnati Bell Wireless, Llc 310 420
755819 US United States Verizon Wireless 310 012
831426 US United States Cellco Partnership Dba Verizon Wireless - Ny 310 012
847961 US United States Alltel Communications, Inc. - Mo 310 500
868897 US United States Alltel Communications Of The Midwest, Inc. - Ne 310 500
910120 US United States Windstream Standard, Inc. 310 500
910343 US United States Sprint Spectrum L.p.- Ny 310 020
915979 US United States Western Wireless Corporation-mt 310 590
922168 US United States Cellco Partnership Dba Verizon Wireless - Ri 310 012
930399 US United States Windstream New York, Inc. - Jamestown 310 500
933502 US United States Cellco Partnership Dba Verizon Wireless - Ma 310 012
1030233 US United States Sprint Spectrum L.p.- Mt 310 020
1074935 US United States Union Telephone Co. 310 020
1076900 US United States Omnipoint Communications Midwest Operations Llc 310 260
1250626 US United States Alltel Communications, Inc. - Ga 310 500
1321804 US United States New Cingular Wireless Pcs, Llc - Ny 310 410
1369173 US United States Sprint Spectrum L.p.- Mn 310 020
1387483 US United States Cellco Partnership Dba Verizon Wireless - Ar 310 012
1469401 US United States Western Wireless Corporation-tx 310 590
1470426 US United States New Cingular Wireless Pcs, Llc - Nj 310 410
1546548 US United States New Cingular Wireless Pcs, Llc - Wi 310 410
1547623 US United States Pine Telephone System, Inc. 310 080
1569859 US United States Alltel Communications, Inc. - Wi 310 500
1613087 US United States Cellco Partnership Dba Verizon Wireless - Ca 310 012
1675189 US United States Windstream New York, Inc. - Fulton 310 500
1815967 US United States Cellco Partnership Dba Verizon Wireless - In 310 012
1944309 US United States Cellco Partnership Dba Verizon Wireless - Md 310 012
1968021 US United States New Cingular Wireless Pcs, Llc - Ga 310 410
2044503 US United States Windstream Pennsylvania, Inc. 310 500
2061013 US United States Cellco Partnership Dba Verizon Wireless - Oh 310 012
2075516 US United States Alltel Communications Of The Southwest, Lp - Az 310 500
2082689 US United States Consolidated Telephone Co. 310 060
2095246 US United States Cellco Partnership Dba Verizon Wireless - Id 310 012
2114865 US United States Sprint Spectrum L.p.- Ne 310 020
2162864 US United States New Cingular Wireless Pcs, Llc. 310 410
2166802 US United States Sprint Spectrum L.p.- La 310 020
2197743 US United States New Cingular Wireless Pcs, Llc - Oh 310 410
2309794 US United States Verizon Wireless Of The East, Lp - Al 310 012
2334323 US United States Windstream Accucomm Telecommunications, Inc. 310 500
2448351 US United States Omnipoint Miami E License, Llc 310 260
2481412 US United States Sprint Spectrum L.p.- Ar 310 020
2481850 US United States Windstream Nebraska, Inc. 310 500
2525830 US United States Xit Telecommunication & Technology, Inc. 310 950
2555845 US United States Pine Telephone Company Dba Pine Cell Phones, Inc. 310 080
2560043 US United States Sprint Spectrum L.p.- Tx 310 020
2563390 US United States Windstream Kentucky East, Inc. - Lexington 310 500
2623113 US United States Sprint Spectrum L.p.- Ks 310 020
2627909 US United States Alltel Communications, Inc. - Ar 310 500
2741143 US United States Windstream Georgia Telephone, Inc. 310 500
2746449 US United States Verizon Wireless Of The East, Lp 310 012
2813367 US United States Alltel Communications, Inc. - Ok 310 500
2817815 US United States Sprint Spectrum L.p.- Tn 310 020
2870907 US United States Cellco Partnership Dba Verizon Wireless - Pa 310 012
3069979 US United States Powertel Kentucky Licenses, Inc. 310 260
3098231 US United States Cellco Partnership Dba Verizon Wireless - Mo 310 012
3104132 US United States Windstream Oklahoma, Inc. 310 500
3208102 US United States Union Telephone Company 310 020
3291005 US United States Sprint Spectrum L.p.- Ca 310 020
3309622 US United States Verizon Wireless Of The East, Lp - Fl 310 012
3387420 US United States Sprint Spectrum L.p. - Nh 310 020
3399960 US United States Western Wireless Corporation-ia 310 590
3451445 US United States Cross Wireless L.l.c. 310 140
3477723 US United States Sprint Spectrum L.p. - Id 310 020
3531741 US United States Alltel Communications, Inc. - Ms 310 500
3578020 US United States Windstream Missouri, Inc. 310 500
3599478 US United States Western Wireless Corporation-mo 310 590
3621397 US United States Cincinnati Bell, Inc. 310 420
3662341 US United States Alltel Communications, Inc. - Va 310 500
3781463 US United States Western Wireless Corporation-nd 310 590
3843011 US United States Sprint Spectrum L.p.- Sc 310 020
3845403 US United States Western Wireless Corporation-id 310 590
3980472 US United States Sprint Spectrum L.p.- Wi 310 020
4007228 US United States Sprint Spectrum L.p.- Ky 310 020
4034133 US United States Windstream Kentucky West, Inc. 310 500
4053729 US United States Sprint Spectrum L.p.- Va 310 020
4061586 US United States Consolidated Telecom, Inc. 310 060
4089657 US United States Alltel Comm. Holdings Of The Midwest, Inc. - Ne 310 500
4112474 US United States Sprint Spectrum L.p.- Ia 310 020
4162174 US United States Sprint Spectrum L.p.- Mo 310 020
4268116 US United States New Cingular Wireless Pcs, Llc - Ar 310 410
4294278 US United States Keystone Farms Cooperative Telephone Co. 310 690
4323181 US United States Omnipoint Communications, Inc. - Nj 310 260
4346771 US United States Sprint Spectrum L.p.- Ut 310 020
4384799 US United States Western Wireless Corporation-co 310 590
4562196 US United States Powertel Atlanta Licenses, Inc. 310 260
4682104 US United States Leap Wireless Intl, Inc. Dba Cricket Comm, Inc. 310 016
4719923 US United States Cellco Partnership Dba Verizon Wireless - Vt 310 012
4895385 US United States New Cingular Wireless Pcs, Lcc - Tx 310 410
4972022 US United States Windstream 310 500
4978896 US United States Alltel Communications, Inc. - Nm 310 500
5041112 US United States Sprint Spectrum L.p.- Nc 310 020
5083579 US United States Omnipoint Communications, Inc. - Ny 310 260
5094861 US United States Windstream Alabama, Inc. 310 500
5114824 US United States Alltel Communications, Inc. - Nc 310 500
5136084 US United States Windstream Mississippi, Inc. 310 500
5192040 US United States Cellco Partnership Dba Verizon Wireless - Va 310 012
5266341 US United States New Cingular Wireless Pcs, Llc - Ky 310 410
5291348 US United States Powertel Jacksonville Licenses, Inc. 310 260
5320119 US United States Cellco Partnership Dba Verizon Wireless - Nj 310 012
5340932 US United States Windstream North Carolina, Inc. 310 500
5362154 US United States Cellco Partnership Dba Verizon Wireless - Nc 310 012
5416801 US United States Alltel Communications, Inc. - Pa 310 500
5450987 US United States Sprint Spectrum L.p.- Nm 310 020
5510776 US United States Omnipoint Communications, Inc. - Ct 310 260
5548137 US United States Keystone Wireless, Llc 310 690
5564527 US United States Western Wireless Corporation-sd 310 590
5646168 US United States Cellco Partnership Dba Verizon Wireless - Ky 310 012
5710042 US United States Poka Lambro Telecomms, Ltd. Dba Digital Cellular T 310 940
5716339 US United States Cellco Partnership Dba Verizon Wireless - Fl 310 012
5718022 US United States Cellco Partnership Dba Verizon Wireless - Wy 310 012
5813926 US United States Sprint Spectrum L.p. - Nv 310 020
5885404 US United States Cingular Wireless Llc - Ny 310 410
5927093 US United States Consolidated Communications Of Fort Bend Company 310 060
5957700 US United States Cellco Partnership Dba Verizon Wireless - Wv 310 012
5998120 US United States Cellco Partnership Dba Verizon Wireless - Sc 310 012
6075080 US United States Consolidated Telcom 310 060
6147048 US United States Sprint Spectrum L.p.- Az 310 020
6159380 US United States Western Wireless Corporation-nm 310 590
6161512 US United States Sprint Spectrum L.p. - Md 310 020
6174678 US United States Western Wireless Corporation-ca 310 590
6369446 US United States Sprint Spectrum L.p.- In 310 020
6430991 US United States Centennial Michiana License Company Llc 310 030
6467501 US United States Union Telephone Co. - Wi 310 020
6526462 US United States Centennial Caribbean Holding Corp. - Pr 310 030
6577038 US United States Cellco Partnership Dba Verizon Wireless - Mt 310 012
6624575 US United States Omnipoint Communications Enterprises, L.p. 310 260
6703351 US United States Sprint Spectrum L.p.- Ms 310 020
6717463 US United States Sprint Spectrum L.p.- Or 310 020
6738678 US United States New Cingular Wireless Pcs, Llc - Ma 310 410
6766109 US United States New Cingular Wireless Pcs, Llc 310 410
6772518 US United States Alltel Communications, Inc. - Ky 310 500
6862275 US United States Alltel Georgia Communication Corp. 310 500
6921039 US United States Cellco Partnership Dba Verizon Wireless - Mi 310 012
6940332 US United States Sprint Spectrum L.p.- Ga 310 020
6940774 US United States Cellco Partnership Dba Verizon Wireless - Ga 310 012
6951963 US United States Cellco Partnership Dba Verizon Wireless - Ia 310 012
6969134 US United States Alltel Communications, Inc. - Tn 310 500
7023304 US United States New Cingular Wireless Pcs, Llc - Pa 310 410
7035757 US United States New Cingular Wireless Pcs, Llc - Il 310 410
7072098 US United States Windstream Communications, Inc. - Ar 310 500
7077200 US United States Pine Telephone Co. 310 080
7079656 US United States Cellco Partnership Dba Verizon Wireless - Nd 310 012
7095092 US United States Sprint Spectrum L.p. - Wy 310 020
7224098 US United States Cellco Partnership Dba Verizon Wireless - Sd 310 012
7228332 US United States Sprint Spectrum L.p.- Wa 310 020
7338127 US United States First Communications, Llc - Oh 310 910
7348659 US United States Omnipoint Communications Cap Operations, Llc 310 260
7365373 US United States Cellco Partnership Dba Verizon Wireless - Nv 310 012
7422171 US United States Alltel Mobile Communications, Inc. - Alabama 310 500
7554857 US United States Cellco Partnership Dba Verizon Wireless - Hi 310 012
7561231 US United States Sprint Spectrum L.p.- Mi 310 020
7574401 US United States Cellco Partnership Dba Verizon Wireless - La 310 012
7587315 US United States Rural Cellular Corporation 310 890
7610053 US United States Panhandle Telephone Cooperative, Inc. 310 760
7686194 US United States Keystone Wireless, Inc. 310 690
7770891 US United States Alltel Communications Of The Southwest, Lp - Nm 310 500
7795587 US United States Powertel Birmingham Licenses, Inc. 310 260
7810789 US United States Cellco Partnership Dba Verizon Wireless - Ok 310 012
7825385 US United States Windstream Ohio, Inc. 310 500
7828180 US United States Wilkes Telephone Membership Corp. 311 050
7938461 US United States Union Telephone Co. - Nh 310 020
8013882 US United States Sprint Spectrum L.p.- Co 310 020
8023494 US United States Cellco Partnership Dba Verizon Wireless - Wi 310 012
8057761 US United States Coleman County Telephone Cooperative, Inc. 310 620
8126132 US United States Cellco Partnership Dba Verizon Wireless - Tn 310 012
8157364 US United States Windstream Georgia, Inc. 310 500
8161302 US United States Cellco Partnership Dba Verizon Wireless - Ct 310 012
8164777 US United States Voicestream Gsm I, Llc 310 260
8169322 US United States Powertel Nashville Licenses, Inc. 310 260
8170770 US United States New Cingular Wireless Pcs, Llc - Mi 310 410
8198755 US United States Sprint Spectrum L.p.- Oh 310 020
8217364 US United States Sprint Spectrum L.p.- Wv 310 020
8228690 US United States Consolidated Telephone Co., Inc. 310 060
8262745 US United States Sprint Spectrum L.p.- Ok 310 020
8305456 US United States Alltel Ohio, Lp - Oh 310 500
8338464 US United States Poka Lambro Telephone Company 310 940
8344861 US United States Windstream Kentucky East, Inc. - London 310 500
8417092 US United States Windstream Western Reserve, Inc. 310 500
8471336 US United States Windstream Arkansas, Inc. 310 500
8507540 US United States New Cingular Wireless Pcs, Llc - La 310 410
8516118 US United States Windstream Florida, Inc. 310 500
8522121 US United States Union Telephone Co. - Wy 310 020
8523292 US United States New Cingular Wireless Pcs, Llc - Tn 310 410
8643907 US United States Alltel Communications, Inc. - Sc 310 500
8665146 US United States Cellco Partnership Dba Verizon Wireless - Nm 310 012
8676775 US United States New Cingular Wireless Pcs, Llc - Ms 310 410
8753337 US United States Sprint Spectrum L.p.- Al 310 020
8771271 US United States Consolidated Communications Of Texas Company 310 060
8772270 US United States Cellco Partnership Dba Verizon Wireless - Mn 310 012
8784411 US United States Western Wireless Corporation-ok 310 590
8799080 US United States Sprint Spectrum L.p.- Pa 310 020
8812327 US United States Sprint Spectrum L.p.- Ma 310 020
8858919 US United States Western Wireless Corporation-wy 310 590
8907374 US United States Sprint Spectrum L.p. - Vt 310 020
8913948 US United States Alltel Communications, Inc. - Tx 310 500
8958364 US United States Cellco Partnership Dba Verizon Wireless - Tx 310 012
9006176 US United States Cellco Partnership Dba Verizon Wireless - Dc 310 012
9027137 US United States Western Wireless Corporation-mn 310 590
9145405 US United States T-mobile Usa, Inc. (Suncom) 310 260
9155107 US United States Cellco Partnership Dba Verizon Wireless - Az 310 012
9174346 US United States Cellco Partnership Dba Verizon Wireless - Ms 310 012
9260770 US United States Alltel Wireless Holdings, Llc - Fl 310 500
9274722 US United States New Cingular Wireless Pcs, Llc - In 310 410
9311817 US United States Cellco Partnership Dba Verizon Wireless - Ne 310 012
9452510 US United States Western Wireless Corporation-nv 310 590
9475851 US United States Powertel Memphis Licenses, Inc. 310 260
9550011 US United States Alltel Communications, Inc. - Oh 310 500
9601799 US United States Alltel Kansas Lp - Ks 310 500
9618728 US United States Verizon Wireless Of The East, Lp - Ga 310 012
9620341 US United States Cellco Partnership Dba Verizon Wireless - Il 310 012
9626425 US United States Windstream New York, Inc. - Red Jacket 310 500
9741373 US United States Sprint Spectrum L.p.- Il 310 020
9790854 US United States New Cingular Wireless Pcs, Llc - Al 310 410
9826870 US United States Alltel Communications, Inc. - Co 310 500
9946482 US United States Windstream Communications, Inc. - Nc 310 500
74801 UY Uruguay Antel 748 01
74807 UY Uruguay Telefónica Móviles Uruguay (Movistar) 748 07
74810 UY Uruguay AM Wireless Uruguay S.A. (Claro) 748 10
43401 UZ Uzbekistan Buztel 434 01
43402 UZ Uzbekistan Uzmacom 434 02
43403 UZ Uzbekistan Uzmobile (Uzbektelecom) 434 03
43404 UZ Uzbekistan Beeline (Unitel) 434 04
43405 UZ Uzbekistan UCell (Coscom) 434 05
43406 UZ Uzbekistan Perfectum (Rubicon) (CDMA) 434 06
43407 UZ Uzbekistan Universal Mobile Systems 434 07
360070 VC Saint Vincent And The Grenadines Digicel 360 070
360100 VC Saint Vincent And The Grenadines Cingular Wireless 360 100
360110 VC Saint Vincent And The Grenadines Lime (Cable & Wireless) (AT&T) 360 110
73401 VE Venezuela Digitel 734 01
73404 VE Venezuela Movistar 734 04
73406 VE Venezuela Movilnet 734 06
348170 VG Virgin Islands (British) Cable & Wireless (West Indies) 348 170
348570 VG Virgin Islands (British) Caribbean Cellular Telephone Ltd (CCT) 348 570
348770 VG Virgin Islands (British) Digicel (BVI) Limited 348 770
45201 VN Vietnam MobiFone 452 01
45202 VN Vietnam VinaPhone 452 02
45204 VN Vietnam Viettel Mobile (EVNTelecom) 452 04
45205 VN Vietnam Vietnam Mobile (Hanoi Telecom) 452 05
45207 VN Vietnam GTEL (formerly Beeline) 452 07
54100 VU Vanuatu ACeS International (AIL) 541 00
54101 VU Vanuatu Telecom Vanuatu (SMILE) 541 01
54105 VU Vanuatu Digicel 541 05
54901 WS Samoa Digicel 549 01
54927 WS Samoa SamoaTel 549 27
22101 XK Kosovo Vala 221 01
22102 XK Kosovo IPKO Telecommunications 221 02
22103 XK Kosovo MTS 221 03
42101 YE Yemen Sabafon 421 01
42102 YE Yemen Spacetel Yemen (MTN) 421 02
42103 YE Yemen Yemen Mobile 421 03
42104 YE Yemen Y (Hits-Unitel) 421 04
65501 ZA South Africa Vodacom 655 01
65502 ZA South Africa TELKOM SA (8TA) 655 02
65506 ZA South Africa Sentech (Pty) Ltd. 655 06
65507 ZA South Africa CELL C 655 07
65510 ZA South Africa MTN 655 10
65511 ZA South Africa SAPS Gauteng 655 11
65521 ZA South Africa Cape Town Metropolitan Counci 655 21
65530 ZA South Africa Bokamoso Consortium 655 30
65531 ZA South Africa Karabo Telecoms (Pty) Ltd. 655 31
65532 ZA South Africa Ilizwi Telecommunications 655 32
65533 ZA South Africa Thinta Thinta Telecommunications 655 33
64501 ZM Zambia Airtel (formerly Celtel/Zain) 645 01
64502 ZM Zambia MTN Zambia (Telecel Zambia) 645 02
64503 ZM Zambia Zamtel 645 03
64801 ZW Zimbabwe NetOne 648 01
64803 ZW Zimbabwe Telecel 648 03
64804 ZW Zimbabwe Econet 648 04
0 * * Unknown

MC Object

Object that are inside the json of your event data

Contact

An object to describe the source and destination contact of a message.

List of Contact types:

  • bot_username
  • phone_num
  • chat_id
Parameter Type Required Description
type String Required Type of the contact object.
id String Required The identifier of the contact object.

Content (Object)

Text Content

Parameter Format Description
type
required
string Restricted string: text
text
required
string The content string. Note for the maximum character limit imposed by the destination channel.
preview_url
optional
boolean Restricted string: true or false. When set to true, a preview of the URL from the text will be shown on the end user's handset.

Default: false
reply_to_msg_id
optional
string Message ID of the message that was intended to be replied with.

"Message ID" here refers to the "message_id" provided in the HTTP response after sending WhatsApp OR in the webhook of WhatsApp message.

Rich Media Content

Parameter Format Description
type
required
string Restricted string:
  • image
  • audio
  • document
  • video
  • sticker
rich_media_url
required
string The URL (direct link for download) of the hosted rich media.

Supported rich media types by Official WhatsApp here
text
optional
string Caption for rich media type image.
name
optional
string Name for rich media type document.
reply_to_msg_id
optional
string Message ID of the message that was intended to be replied with.

"Message ID" here refers to the "message_id" provided in the HTTP response after sending WhatsApp OR in the webhook of WhatsApp message.

Rich Media Types

Rich media Types Size limit
image image/jpeg, image/png
Images must be 8-bit, RGB or RGBA
5MB
audio audio/aac, audio/mp4, audio/mpeg, audio/amr, audio/ogg (only opus codecs, base audio/ogg is not supported) 16MB
document text/plain, application/pdf, application/vnd.ms-powerpoint, application/msword, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 100MB
video video/mp4, video/3gp

Note:
  • Only H.264 video codec and AAC audio codec is supported.
  • We support videos with a single audio stream or no audio stream.
16MB
sticker image/webp Static stickers: 100KB
Animated stickers: 500KB

Reaction Content

Parameter Format Description
type
required
string Restricted string: reaction
text
required
string Emoji of the reaction, need to encode it with UTF-16 unicode (escape sequences)

To send emoji 👍, JSON string example:

"text":"\uD83D\uDC4D"

Note:
  1. All emojis supported by Android and iOS devices are supported
  2. Only one emoji can be sent in a reaction message
  3. You can use an empty string to remove a previously sent emoji
reply_to_msg_id
required
string Message ID of the message that was intended to be replied with.

"Message ID" here refers to the "message_id" provided in the HTTP response after sending WhatsApp OR in the webhook of WhatsApp message.

Templates

Parameter Format Description
type
required
string Restricted string: template
wa_template
required
WhatsApp Template The template and the parameters to be sent.

WhatsApp Template

Parameter Format Description
name
required
string Name of the template to be sent.
language
required
string Language selection for the template.
header_params
optional
Array of Text or Rich Media Content Parameters for filling in template headers.

Template headers type can only be one of the following
  • Text
  • Rich media

Note:
  1. Text header is only needed if it contains a variable (maximum one variable is supported by Official WhatsApp). JSON string example:

    "header_params":[{"type":"text","text":"VARIABLE"}]

  2. Rich media header can only be image, video or document. The caption for the image is not supported in the template message. JSON string example:

    "header_params":[{"type":"image","rich_media_url":"https://www.mocean.com.my/logo.png"}]

body_params
optional
Array of Text Parameters for filling in template body.

Template body restricted type:
  • Text

Note:
  1. Text body is only needed if it contains one or multiple variables. Total two variables JSON string example:

    "body_params":[{"type":"text","text":"VARIABLE1"}, {"type":"text","text":"VARIABLE2"}]

wa_buttons
optional
Array of WhatsApp Button Parameters for buttons when available. Limitation is imposed to a maximum of 3 buttons per template message by WhatsApp.

Note:
  1. This parameter is required if one of the buttons is dynamic. Meaning to say, if the template doesn’t have any button or all of the buttons are static, this parameter is not required.

WhatsApp Button (Interactive message templates)

Parameter Format Description
type
required
string Restricted string:
  • url
  • quick_reply

Note:
  1. For OTP copy code & dynamic website URL button, please set the type as url
  2. For quick reply button, please set the type as quick_reply
  3. All WhatsApp buttons in the array of wa_buttons MUST be the same type, either url or quick_reply
  4. If the wa_buttons does not contain a quick_reply button while sending a template with a quick_reply button, the default payload value is the same as the button displayed value.
index
required
integer Index of current button.

"Index" here refers to the sequence number of a button. For example, the first added button during template creation, its index is 0, second added button, its index is 1 and so forth.
payload
required when type is quick_reply
string Payload of quick reply upon end user interaction.
url_parameter
required when type is url
string If the button is a dynamic website, please set a URL for customers to visit upon end user interaction.

If the button is OTP copy code, please set an OTP code that allows the end user to click & copy it.

Interactive Content

Parameter Format Description
type
required
string Restricted string:
  • interactive
wa_interactive
required
WhatsApp Interactive The interactive and the parameters to be sent

WhatsApp Interactive

Parameter Format Description
type
required
string Restricted string:
  • button
  • list
  • product
  • product_list
header
required when type is product_list. Optional for other types
Text or Rich Media Content Parameter for filling in the interactive header.

Header content displayed on top of a message can only be one of the following:
  • Text
  • Rich media


Note:
  1. Text header JSON string example:

    "header":{"type":"text","text":"HEADER CONTENT"}

  2. Rich media header can only be image, video or document. JSON string example:

    "header":{"type":"image","rich_media_url":"https://www.mocean.com.my/logo.png"}

body
optional for type product. Required for other message types
Text Content Parameter for filling in the interactive body.

Body content restricted type:
  • Text


Note:
  1. Text body JSON string example:

    "body":{"type":"text","text":"BODY CONTENT"}

footer
optional
Text Content Parameter for filling in the interactive footer.

Footer content restricted type:
  • Text


Note:
  1. Text footer JSON string example:

    "footer":{"type":"text","text":"FOOTER CONTENT"}

action
required
Action Action you want the user to perform after reading the message.

For example, you can create an action with the main menu button that redirects to selection buttons after the user clicks it. You can also create an action for product messages that allow the user to place an order.

Action

Parameter Format Description
button_text
required when type is list
string The list is shown after pressing a button which displays this text.
wa_buttons
required when type is button
Array of WhatsApp Button Parameter for buttons when available. Limitation is imposed to a maximum of 3 buttons per message.
catalog_id
required when type is product, product_list
string The ID that uniquely identifies the catalog registered with Facebook and connected to the WhatsApp Business Account the sender phone number belongs to.
product_retailer_id string The ID that uniquely identifies the product in the catalog.
sections Array of Section Parameter for multi product sections when available. Limitation is imposed to a maximum of 10 and minimum of 1 section per message.

WhatsApp Button (Interactive message)

Parameter Format Description
type
required
string Restricted string:
  • reply
title
required
string Unique title of the button.
id
required
string Unique identifier for your button. This ID is returned in the webhook when the button is clicked by the user.

Note:
  1. You cannot have leading or trailing spaces when setting the ID.

Section

Parameter Format Description
title
required if the message has more than one section
string Title of the section.
rows
required when type is list
Array of Row An array of rows sent within a section.

Row object restricted string type parameters:
  • id
  • title
  • description


Note:
  1. The “id” is the identifier of the row. It must be unique across all sections.
  2. The “title” is the title of the row.
  3. The “description” is the description of the row, it is an optional.
  4. A Section object can contain a maximum of 10 and minimum of 1 row per message.
  5. Array of row JSON string example:

    "rows":[{"id":"ROW_ID1","title":"ROW_TITLE1","description":"ROW_DESCRIPTION1"},{"id":"ROW_ID2","title":"ROW_TITLE2","description":"ROW_DESCRIPTION2"}]

product_items
required when type is product_list
Array of Product Item Parameter for filling in product items as defined in the catalog.

Product item object restricted string type parameter:
  • product_retailer_id


Note:
  1. The “product_retailer_id” is an ID that uniquely identifies the product in the catalog.
  2. If the “product_retailer_id” doesn't exist in your catalog, the product won't be displayed.
  3. Array of product item JSON string example:

    "product_items":[{"product_retailer_id":"PRODUCT_ID1"},{"product_retailer_id":"PRODUCT_ID2"}]


Location Content

Name Type Required Description
type String Required Restricted string: location
location Location Required The location and the parameters to be sent.

Location

Name Type Required Description
latitude Number Required The latitude position as a float number.
longitude Number Required The longitude position as a float number.
name String Required Location name. Will be displayed in the message.
address String Required Location address. Will be displayed in the message.

Contacts Content

Name Type Required Description
type String Required Restricted string: contacts
wa_contacts Array of WhatsApp Contact Required List of contact cards to be sent.

WhatsApp Contact

Name Type Required Description
addresses Array of Address Optional Address object parameters:
street – Optional. Street number and name.
city – Optional. City name.
state – Optional. State abbreviation.
zip – Optional. ZIP code.
country – Optional. Full country name.
country_code – Optional. Two-letter country abbreviation.
type – Optional. Type of the address. Standard values are HOME and WORK.

Note:
i. Array of address JSON string example:
"addresses": [{"city":"CITY1","country":"Malaysia","country_code":"MY","state":"STATE1","street":"STREET1","type":"HOME","zip":"ZIP1"},{"city":"CITY2","country":"Malaysia","state":"STATE2","street":"STREE2","type":"WORK","zip":"ZIP2"}]
birthday String Optional Date of birth in YYYY-MM-DD format.
emails Array of Email Optional Email object parameters:
email – Optional. Email address.
type – Optional. Type of the email. Standard values are HOME and WORK.

Note:
i. Array of email JSON string example:
"emails": [{"email":"name1_home@gmail.com","type":"HOME"},{"email":"name1_work@gmail.com","type":"WORK"}]
name Name object Required Name object parameters:
formatted_name – Required. Full name, as it normally appears.
first_name – Optional. First name.
last_name – Optional. Last name.
middle_name – Optional. Middle name.
suffix – Optional. Name suffix.
prefix – Optional. Name prefix.

Note:
i. At least one of the optional parameters needs to be included along with the formatted_name parameter.
ii. Name object JSON string example:
"name": {"formatted_name":"NAME1","first_name":"FIRST_NAME1","last_name":"LAST_NAME1","middle_name":"MIDDLE_NAME1","suffix_name":"SUFFIX1"}
org Org object Optional Organization object parameters:
company – Optional. Name of the contact's company.
department – Optional. Name of the contact's department.
title – Optional. Contact's business title.

Note:
i. Organization object JSON string example:
"org": {"company":"COMPANY1","title":"TITLE1","department":"DEPARTMENT1"}
phones Array of Phone Optional Phone object parameters:
phone – Optional. Contact's phone number. Automatically populated with the wa_id value as a formatted phone number.
type – Optional. Type of the phone number. Standard Values are CELL, MAIN, IPHONE, HOME, and WORK.
wa_id – Optional. WhatsApp ID

Note:
i. Array of phone JSON string example:
"phones": [{"phone":"0123456789","type":"HOME"},{"phone":"0193456789","type":"WORK"}]
urls Array of URL Optional URL object parameters:
url – Optional. Contact's url.
type – Optional. Type of the url. Standard values are HOME and WORK.

Note:
i. Array of URL JSON string example:
"urls": [{"url":"URL1","type":"HOME"},{"url":"URL2","type":"WORK"}]

How to send an interactive product or product list messages on Mocean WhatsApp API?

  1. After you’ve done the embedded signup in Mocean API dashboard (which means you own the WABA), please use your Facebook account to which your WABA is connected to create a catalog using Meta's Commerce Manager.
  2. Once created, you'll need to add items to that catalog. For a quick start, we suggest you manually add items into the catalog using Meta’s Commerce Manager.
  3. It is worth noting that Meta must approve any item added to a catalog before you can send messages regarding that item. You could check the approval status by clicking the “Issues” tab in Commerce Manager.
  4. Once the approved items are added into the catalog, you will need to connect your WABA to the catalog.
  5. After completing all the steps above, you can start sending a product or product list message to the end-user.