NAV Navbar
shell ruby python javascript php java csharp
  • Introduction
  • Installation
  • Authentication
  • SMS API
  • Voice API
  • Verify API
  • Number Lookup API
  • WhatsApp API
  • Query API
  • Network Code
  • MC Object
  • 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
    
    
    
    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 credentials in all HTTP POST data to authorize, as demonstrated below:
    
    curl -X GET "https://rest.moceanapi.com/rest/2/account/balance?
                 mocean-api-key=API_KEY_HERE&
                 mocean-api-secret=API_SECRET_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_KEY_HERE", "API_SECRET_HERE")
    )
    
    <?php
    $mocean = new \Mocean\Client(
            new \Mocean\Client\Credentials\Basic('API_KEY_HERE', 'API_SECRET_HERE')
    );
    ?>
    
    const moceansdk = require('mocean-sdk');
    
    const mocean = new moceansdk.Mocean(
            new moceansdk.Client('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_HERE")
    );
    
    Client client = new Client(
                new Basic("API_KEY_HERE", "API_SECRET_HERE")
    );
    

    Make sure to replace API_KEY_HERE and API_SECRET_HERE with your API credential.

    To make the API requests, you need to create a Client and provide it with authentication credentials (which can be found at https://dashboard.moceanapi.com/).

    SMS API

    Overview

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

    Concepts

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

    Getting Started

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

    Using your Mocean API_KEY and API_SECRET, available from the dashboard page, you can now send an SMS message:

    Send SMS

    Example request

    curl -X POST "https://rest.moceanapi.com/rest/2/sms" \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-from=YourCompany&
          mocean-to=60123456789&
          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_KEY_HERE", "API_SECRET_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('API_KEY_HERE', 'API_SECRET_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('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    mocean.sms().send({
      mocean-from: 'MOCEAN',
      mocean-to: '60123456789',
      mocean-text: 'Hello World'
    }, function(err, res) {
      if(err) throw err;
    
      console.log(res);
    });
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_HERE")
    );
    
    String res = mocean.sms()
                 .setFrom("MOCEAN")
                 .setTo("60123456789")
                 .setText("Hello World")
                 .send();
    
    System.out.println(res);        
    
    Client client = new Client(
                new Basic("API_KEY_HERE", "API_SECRET_HERE")
    );
    
    Mocean.Message.Message _message = new Mocean.Message.Message()
    {
        mocean_to = "60123456789",
        mocean_from = "MOCEAN",
        mocean_text = "Hello World",
        mocean_resp_format = "json",
    };
    
    string response = Mocean.Message.Client.Send(_message, creds);
    
    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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret.
    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)
    {
      console.log(res.body);
      res.status(204).send();
    }
    
    app.listen(8080)
    
    import mocean.system.*;
    
    class program {
    
        public static void main(String [] args)
        {
            Client token = new Client("API_KEY_HERE","API_SECRET_HERE");
            Mocean mocean = new Mocean(token);
    
            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)
        {
            Client token = new Client("API_KEY_HERE","API_SECRET_HERE");
            Mocean mocean = new Mocean(token);
    
            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();
    

    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" \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-msgid=MSG_ID&
          mocean-delivered=false"
    
    
    
    
    
    
    
    
    
    
    
    
    

    Request a Conversion API with your message id.

    Conversion API helps to determine:

    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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret or IP not whitelisted.
    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

    Concepts

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

    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.

    3. Your Mocean API_KEY and API_SECRET are available on the dashboard page, it is required to authenticate with all request to Voice Service.

    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:

    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)]
    • 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" \
        -d "mocean-api-key=API_KEY_HERE"
        -d "mocean-api-secret=API_SECRET_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_KEY_HERE", "API_SECRET_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('API_KEY_HERE', 'API_SECRET_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('API_KEY_HERE', 'API_SECRET_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_KEY_HERE", "API_SECRET_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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret.
    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" \
         -d "mocean-api-key=API_KEY_HERE" \
         -d "mocean-api-secret=API_SECRET_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_KEY_HERE", "API_SECRET_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('API_KEY_HERE', 'API_SECRET_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('API_KEY_HERE', 'API_SECRET_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_KEY_HERE", "API_SECRET_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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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
         -d "mocean-api-key=API_KEY_HERE" \
         -d "mocean-api-secret=API_SECRET_HERE" \
         -d "mocean-call-uuid=218fc2f6-fed8-11e9-952a-31afba325635" \
         "https://rest.moceanapi.com/rest/2/voice/rec" > 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_KEY_HERE", "API_SECRET_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('API_KEY_HERE', 'API_SECRET_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('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    $res = $mocean->voice()->recording([
        'mocean-call-uuid' => 'YOUR_TRANSACTION_CALL_UUID',
    ]);
    
    echo $res;
    ?>
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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:

    Pay-per-conversion (Charges will occur after a transaction has been successfully converted):

    Pay-per-attempt (Charges will occur after an attempt from a transaction):

    Tags:

    Verify Request

    PPC Send Code

    Example request

    curl -X POST https://rest.moceanapi.com/rest/2/verify/req \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-to=60123456789&
          mocean-brand=BRAND_NAME"
    
    const moceansdk = require('mocean-sdk');
    
    const mocean = new moceansdk.Mocean(
            new moceansdk.Client('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    mocean.verify_request().create({
      'mocean-to': '60123456789',
      'mocean-brand': 'BRAND_NAME'
    }).send((err,res) => {    
      if (err) throw err;
      console.log(res);
    });
    
    <?php
    $mocean = new \Mocean\Client(
            new \Mocean\Client\Credentials\Basic('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    $res = $mocean->verify()->start([
        'mocean-to' => '60123456789',
        'mocean-brand' => 'BRAND_NAME',
        'mocean-resp-format' => 'json'
    ]);
    
    echo $res;
    ?>
    
    Mocean.Verify.Verify _verification = new Mocean.Verify.Verify(){
        mocean_to = "60123456789",
        mocean_brand = "BRAND_NAME"
    };
    
    string response = Mocean.Verify.Client.Start(_verification, creds);
    
    require 'moceansdk'
    
    mocean = Moceansdk::Client.new(
        Moceansdk::Auth::Basic.new('API_KEY_HERE', 'API_SECRET_HERE')
    )
    
    res = mocean.verify_request.create({
        "mocean-to" => "60123456789",
        "mocean-brand" => "BRAND_NAME"
    }).send()
    
    print res
    
    String res = mocean.verify_request().setTo("60123456789")
                 .setBrand("BRAND_NAME")
                 .send();
    
    System.out.println(res);
    
    from moceansdk import Client, Basic, Transmitter
    
    mocean = Client(
        Basic("API_KEY_HERE", "API_SECRET_HERE")
    )
    
    res = mocean.verify_request.create({
        "mocean-to": "60123456789",
        "mocean-brand":"BRAND_NAME"
    }).send()
    
    print(res)
    

    Successful response

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

    Unsuccessful response

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

    Send a random generated code to a specified contact number for verification purpose. This method is charge per successful convertion in a transaction.

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

    Parameter Format Description
    mocean-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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 6 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.
    mocean-next-event-wait
    optional
    number Each channel waiting time for verification code before next attemp.

    An integer value between 60 and 900 seconds.

    The defaut mocean-next-event-wait will follow your account setting if configured else default is 60 seconds.

    PPA Send Code over SMS

    Example request

    curl -X POST https://rest.moceanapi.com/rest/2/verify/req/sms \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-to=60123456789&
          mocean-brand=BRAND_NAME"
    
    const moceansdk = require('mocean-sdk');
    
    const mocean = new moceansdk.Mocean(
            new moceansdk.Client('API_KEY_HERE', 'API_SECRET_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('API_KEY_HERE', 'API_SECRET_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
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_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_KEY_HERE", "API_SECRET_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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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.

    PPA Resend Code over SMS

    Example request

    curl -X POST https://rest.moceanapi.com/rest/2/verify/resend/sms \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-reqid=XXXXXXXXXXXXXXXXXXXXXX"
    
    const moceansdk = require('mocean-sdk');
    const mocean = new moceansdk.Mocean(
            new moceansdk.Client('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    mocean.verify_request()
            .resend({
                'mocean-reqid': 'XXXXXXXXXXXXXXXXXXXXXX'
            }, function (err, res) {
                console.log(res)
            })
    
    
    <?php
    $mocean = new \Mocean\Client(
            new \Mocean\Client\Credentials\Basic('API_KEY_HERE', 'API_SECRET_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
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_HERE")
    );
    
    VerifyRequestResponse res = mocean.verifyRequest()
                        .setReqId("XXXXXXXXXXXXXXXXXXXXXX")
                        .resend();
    
    System.out.println(res);
    
    from moceansdk import Client, Basic, Transmitter
    
    mocean = Client(
        Basic("API_KEY_HERE", "API_SECRET_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 a new 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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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

    PPA Send Code over Telegram

    Example request

    curl -X POST https://rest.moceanapi.com/rest/2/verify/req/telegram \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-from=BOT_USERNAME_HERE&
          mocean-to=CHAT_ID_HERE&
          mocean-brand=BRAND_NAME"
    
    const moceansdk = require('mocean-sdk');
    
    const Client = new mocean.Mocean(new
            mocean.Client('MOCEAN_API_KEY','MOCEAN_API_SECRET')
    );
    
    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('API_KEY_HERE', 'API_SECRET_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
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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 \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-reqid=XXXXXXXXXXXXXXXXXXXXXX&
          mocean-code=123456&
          mocean-resp-format=json"
    
    const moceanjs = require('mocean-sdk');
    
    var token = new moceanjs.Client('API_KEY_HERE','API_SECRET_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(
        'API_KEY_HERE',
        'API_SECRET_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("API_KEY_HERE", "API_SECRET_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
    
    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:

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

    Parameter Format Description
    mocean-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret.
    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.
    26 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:

    Getting Started

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

    Using your Mocean API_KEY and API_SECRET, available from the dashboard page, you can now Request a Number Lookup:

    Request Number Lookup

    Example request

    curl -X POST "https://rest.moceanapi.com/rest/2/nl" \
      -d "mocean-api-key=API_KEY_HERE&
          mocean-api-secret=API_SECRET_HERE&
          mocean-to=60123456789&
          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_KEY_HERE", "API_SECRET_HERE")
    )
    
    res = mocean.number_lookup.inquiry({
        'mocean-to': '60123456789'
    })
    
    print(res)
    
    <?php
    $mocean = new \Mocean\Client(
            new \Mocean\Client\Credentials\Basic('API_KEY_HERE', 'API_SECRET_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('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    mocean.number_lookup()
            .inquiry({
                'mocean-to': '60123456789'
            }, function (err, res) {
                console.log(res);
            });
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret or IP not whitelisted.
    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)
        {
            Client token = new Client("API_KEY_HERE","API_SECRET_HERE");
            Mocean mocean = new Mocean(token);
    
            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 \
      -d '
      {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-event-url": "http://webhook.tld/path",
        "mocean-content": {
          "type": "template",
          "wa_template": {
            "name": "test_template",
            "language": "en",
            "header_params": [
              {
                "type": "image",
                "rich_media_url": "https://a_link.com/image.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 \
      -d '
      {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-event-url": "http://webhook.tld/path",
        "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 \
      -d '
      {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-content": {
            "type": "image",
            "text": "Caption for image",
            "rich_media_url": "http://www.moceansms.com/images/header_logo.png"
        },
        "mocean-event-url": "http://webhook.tld/path"
    }'
    

    Reaction Content

    curl -X POST \
      https://rest.moceanapi.com/rest/2/send-message/whatsapp \
      -d '
      {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-event-url": "http://webhook.tld/path",
        "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 \
      -d '
      {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-event-url": "http://webhook.tld/path",
        "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 \
      -d '
     {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-event-url": "http://webhook.tld/path",
        "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 \
      -d '
     {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-event-url": "http://webhook.tld/path",
        "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 \
      -d '
     {
        "mocean-api-key": "CLIENT_API_KEY",
        "mocean-api-secret": "CLIENT_API_SECRET",
        "mocean-from": "60123456789",
        "mocean-to": "601987654321",
        "mocean-event-url": "http://webhook.tld/path",
        "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"
                  }
                ]
              }
            ]
          }
        }
      }
    }'
    

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

    Request parameters

    Parameter Format Description
    mocean-api-key
    required
    string API key of the account.
    mocean-api-secret
    required
    string API secret of the account.
    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.

    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. Invalid mocean-api-key or mocean-api-secret or IP not whitelisted.
    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.

    Delivery Report

    Sent

    {
      "message_id": "in-message-id",
      "event_type": "delivery-status",
      "event_data": {
        "channel_type": "WHATSAPP",
        "from": "end-user-phone-number",
        "to": "WABA-phone-number",
        "meta_delivery_status": "sent",
        "timestamp": 1682668041,
        "meta_whatsapp_conversation": {
          "conversation_id": "ad72a86d9cebac0950e3c38b5f77a473",
          "expiration_timestamp": 1681282080,
          "pricing_category": "utility"
        }
      }
    }
    

    Delivered

    {
      "message_id": "in-message-id",
      "event_type": "delivery-status",
      "event_data": {
        "channel_type": "WHATSAPP",
        "from": "end-user-phone-number",
        "to": "WABA-phone-number",
        "meta_delivery_status": "delivered",
        "timestamp": 1682669084,
        "meta_whatsapp_conversation": {
          "conversation_id": "ad72a86d9cebac0950e3c38b5f77a473",
          "pricing_category": "utility"
        }
      }
    }
    

    Read

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

    Error

    {
      "message_id": "in-message-id",
      "event_type": "delivery-status",
      "event_data": {
        "channel_type":"WHATSAPP",
        "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 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.
    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_conversation Meta Whatsapp Conversation Details about the conversation the message belongs to.

    Note:
    • 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

    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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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'.
    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.

    Receive Whatsapp 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.

    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-api-key=CLIENT_API_KEY&\
    mocean-api-secret=CLIENT_API_SECRET&\
    mocean-from=60123456789&\
    mocean-media-id=MEDIA_ID" \
    --output media_file
    

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

    Request parameters

    Parameter Format Description
    mocean-api-key
    required
    string API key of the account.
    mocean-api-secret
    required
    string API secret of the account.
    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. Invalid mocean-api-key or mocean-api-secret or IP not whitelisted.
    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.

    Query API

    Overview

    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?
                 mocean-api-key=API_KEY_HERE&
                 mocean-api-secret=API_SECRET_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_KEY_HERE", "API_SECRET_HERE")
    )
    
    res = mocean.balance.inquiry()
    print(res)
    
    <?php
    $mocean = new \Mocean\Client(
            new \Mocean\Client\Credentials\Basic('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    $result = $mocean->account()->getBalance([
        'mocean-resp-format' => 'json'
    ]);
    
    echo $result;
    ?>
    
    const moceansdk = require('mocean-sdk');
    
    const mocean = new moceansdk.Mocean(
            new moceansdk.Client('API_KEY_HERE', 'API_SECRET_HERE')
    );
    
    mocean.balance().inquiry((err, res) => {
      if(err) throw err;
    
      console.log(res);
    });
    
    Mocean mocean = new Mocean(
                    new Basic("API_KEY_HERE", "API_SECRET_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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret.
    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?
                 mocean-api-key=API_KEY_HERE&
                 mocean-api-secret=API_SECRET_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("API_KEY_HERE", "API_SECRET_HERE")
    mocean = Mocean(token)
    
    res = mocean.price_list.inquiry()
    print(res)
    
    <?php
    require_once '../vendor/autoload.php';
    
    $token = new Mocean\Client\Credentials\Basic(
        'API_KEY_HERE',
        'API_SECRET_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('API_KEY_HERE','API_SECRET_HERE');
    var mocean = new moceanjs.Mocean(token);
    
    mocean.pricing_list().inquiry((err, res) => {
      if(err) throw err;
      console.log(res);
    });
    
    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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret.
    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-api-key=API_KEY_HERE&
                 mocean-api-secret=API_SECRET_HERE&
                 mocean-msgid=MSG_ID"
    
    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('API_KEY_HERE','API_SECRET_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("API_KEY_HERE", "API_SECRET_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(
        'API_KEY_HERE',
        'API_SECRET_HERE'
    );
    $mocean = new Mocean\Client($token);
    
    $res = $mocean->message()->search([
        'mocean-msgid' => 'example0528181518667384.0002',
        'mocean-resp-format' => 'json'
    ]);
    
    echo $res;
    ?>
    
    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-api-key
    required
    string Your account API key.
    mocean-api-secret
    required
    string Your account API secret.
    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. Invalid mocean-api-key or mocean-api-secret.
    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:

    Parameter Type Required Description
    type String Required Type of the contact object.
    id String Required The identifier of the contact object.

    Content

    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"}]