Asynchronous request

This method gives you the ability to make an asynchronous Number Lookup request over HTTP.

Resource

https://api.infobip.com/number/1/notify

The Number Lookup response is sent to a notify URL at your call back server.

This API method is designed for batch numbers processing, to validate large amounts of phone numbers. One example use-case would be validating previously collected numbers from a database.

Parameters

Property name Type Description
to* array_string Array of Number Lookup destination addresses. If the Number Lookup is requested for one phone number, a single String is supported instead of an Array. Destination addresses must be in international format (Example: 41793026727).
notifyURL string The URL on your call back server on which the Number Lookup response will be sent.
notifyContentType string Preferred content type of the response. Could be application/json or application/xml.

Request Example

					POST /number/1/notify HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
Accept: application/json

{  
   "to":[  
      "41793026727"
   ],
   "notifyUrl":"https://example.com/notifyUrl",
   "notifyContentType":"application/json"
}
					
				

Response

					{  
   "results":[  
      {  
         "to":"41793026727",
         "status":{  
            "groupId":1,
            "groupName":"PENDING",
            "id":3,
            "name":"PENDING_WAITING_DELIVERY",
            "description":"Message sent, waiting for delivery report"
         },
         "messageId":"2b691c32-1233-4716-a763-4f70cc929eae"
      }
   ]
}
					
				

Response format

If successful, the response header HTTP status code will be 200 OK and include Number Lookup information in the response body.

If you try to send a Number Lookup without authorization, you will get a response with the HTTP status code 401 Unauthorized.

NCResponseAsync

Parameter Type Description
bulkId String The ID that uniquely identifies the request. Bulk ID will be received only when you send a Number Lookup to more than one destination address.
results NCResponseDetails Array of Number Lookup results, one per every phone number.

NCResponseDetails

Parameter Type Description
to String The Number Lookup destination address.
status Status Indicates whether the Number Lookup query was successfully executed, not executed or any other possible status.
messageId String The ID that uniquely identifies the performed lookup on destination address.

Status

Parameter Type Description
groupId int Status group ID.
groupName String Status group name.
id int Status ID.
name String Status name.
description String Human-readable description of the status.
action String Action that should be taken to eliminate the error.

Error

Parameter Type Description
groupId int Error group ID.
groupName String Error group name.
id int Error ID.
name String Error name.
description String Human-readable description of the error.
permanent boolean Tells if the error is permanent.

Note:

The result you will receive on your notify URL will be the same as the response in Synchronous Number Lookup, apart the XML root name.

Various Number Lookup packages are available. Depending on your package, some information may not be accessible. For a package change, contact your Account Manager.

The result format you will receive on notify URL:

{  
   "results":[  
      {  
         "to":"41793026727",
         "mccMnc":"22801",
         "originalNetwork":{  
            "networkPrefix":"79",
            "countryPrefix":"41"
         },
         "ported":false,
         "roaming":false,
         "status":{  
            "groupId":2,
            "groupName":"UNDELIVERABLE",
            "id":9,
            "name":"UNDELIVERABLE_NOT_DELIVERED",
            "description":"Message sent not delivered"
         },
         "error":{  
            "groupId":1,
            "groupName":"HANDSET_ERRORS",
            "id":27,
            "name":"EC_ABSENT_SUBSCRIBER",
            "description":"Absent Subscriber",
            "permanent":false
         }
      }
   ]
}
<reportResponse>
   <results>
      <result>
         <to>41793026727</to>
         <mccMnc>22801</mccMnc>
         <originalNetwork>
            <networkPrefix>79</networkPrefix>
            <countryPrefix>41</countryPrefix>
         </originalNetwork>
         <ported>false</ported>
         <roaming>false</roaming>
         <status>
            <groupId>2</groupId>
            <groupName>UNDELIVERABLE</groupName>
            <id>9</id>
            <name>UNDELIVERABLE_NOT_DELIVERED</name>
            <description>Message sent not delivered</description>
         </status>
         <error>
            <groupId>1</groupId>
            <groupName>HANDSET_ERRORS</groupName>
            <id>27</id>
            <name>EC_ABSENT_SUBSCRIBER</name>
            <description>Absent Subscriber</description>
            <permanent>false</permanent>
         </error>
      </result>
   </results>
</reportResponse>

Important:

When sending Number Lookup to multiple destinations, we will process your request immediately. In the response you will receive status information for every destination address, whether it is ok or not. Please see the example below.

Additional examples

Number Lookup - Single phone number

Request:

POST /number/1/notify HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
Accept: application/json

{  
   "to":[  
      "41793026727"
   ],
   "notifyUrl":"http://example.com/notifyUrl",
   "notifyContentType":"application/json"
}
POST /number/1/notify HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/xml
Accept: application/xml

<request>
   <to>41793026727</to>
   <notifyUrl>http://example.com/notifyUrl</notifyUrl>
   <notifyContentType>application/xml</notifyContentType>
</request> 
curl -X POST \
-H "Content-Type: application/json" \
-H 'Accept: application/json' \
-H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=" \
-d '{  
   "to":[  
      "41793026727"
   ],
   "notifyUrl":"http://example.com/notifyUrl",
   "notifyContentType":"application/json"
}' https://api.infobip.com/number/1/notify
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.infobip.com/number/1/notify",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"to\":[\"41793026727\"],\"notifyUrl\":\"http://example.com/notifyUrl\",\"notifyContentType\":\"application/json\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
require 'uri'
require 'net/http'

url = URI("https://api.infobip.com/number/1/notify")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["authorization"] = 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='
request["accept"] = 'application/json'
request["content-type"] = 'application/json'

request.body = "{\"to\":[\"41793026727\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}"

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.infobip.com")

payload = "{\"to\":[\"41793026727\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}"

headers = {
    'authorization': "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/number/1/notify", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
HttpResponse<String> response = Unirest.post("https://api.infobip.com/number/1/notify")
  .header("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==")
  .header("accept", "application/json")
  .header("content-type", "application/json")
  .body("{\"to\":[\"41793026727\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}")
  .asString();
var client = new RestClient("https://api.infobip.com/number/1/notify");

var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
request.AddParameter("application/json", "{\"to\":[\"41793026727\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}", ParameterType.RequestBody);

IRestResponse response = client.Execute(request);
var data = JSON.stringify({
  "to": [
    "41793026727"
  ],
  "notifyUrl": "http://example.com/notifyUrl",
  "notifyContentType": "application/json"
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.infobip.com/number/1/notify");
xhr.setRequestHeader("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);

Response:

HTTP/1.1 200 OK
Content-Type: application/json

{  
   "results":[  
      {  
         "to":"41793026727",
         "status":{  
            "groupId":1,
            "groupName":"PENDING",
            "id":3,
            "name":"PENDING_WAITING_DELIVERY",
            "description":"Message sent, waiting for delivery report"
         },
         "messageId":"2b691c32-1233-4716-a763-4f70cc929eae"
      }
   ]
}
HTTP/1.1 200 OK
Content-Type: application/xml

<ncResponseAsync>
   <results>
      <result>
         <to>41793026727</to>
         <status>
            <groupId>1</groupId>
            <groupName>PENDING</groupName>
            <id>3</id>
            <name>PENDING_WAITING_DELIVERY</name>
            <description>Message sent, waiting for delivery report</description>
         </status>
         <messageId>2b691c32-1233-4716-a763-4f70cc929eae</messageId>
      </result>
   </results>
</ncResponseAsync>

Number Lookup - Multiple phone numbers

Request:

POST /number/1/notify HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
Accept: application/json

{  
   "to":[  
      "41793026727",
      "12345678",
      "Alphanumeric"
   ],
   "notifyUrl":"http://example.com/notifyUrl",
   "notifyContentType":"application/json"
}
POST /number/1/notify HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/xml
Accept: application/xml

<request>
   <to>
      <to>41793026727</to>
      <to>12345678</to>
      <to>Alphanumeric</to>
   </to>
   <notifyUrl>http://example.com/notifyUrl</notifyUrl>
   <notifyContentType>application/xml</notifyContentType>
</request>
curl -X POST 
-H "Content-Type: application/json" 
-H 'Accept: application/json' 
-H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=" 
-d '{  
   "to":[  
      "41793026727",
      "12345678",
      "Alphanumeric"
   ],
   "notifyUrl":"http://example.com/notifyUrl",
   "notifyContentType":"application/json"
}' https://api.infobip.com/number/1/notify
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.infobip.com/number/1/notify",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"to\":[\"41793026727\",\"12345678\",\"Alphanumeric\"],\"notifyUrl\":\"http://example.com/notifyUrl\",\"notifyContentType\":\"application/json\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
require 'uri'
require 'net/http'

url = URI("https://api.infobip.com/number/1/notify")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["authorization"] = 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='
request["accept"] = 'application/json'
request["content-type"] = 'application/json'

request.body = "{\"to\":[\"41793026727\", \"12345678\", \"Alphanumeric\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}"

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.infobip.com")

payload = "{\"to\":[\"41793026727\", \"12345678\", \"Alphanumeric\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}"

headers = {
    'authorization': "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/number/1/notify", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
HttpResponse<String> response = Unirest.post("https://api.infobip.com/number/1/notify")
  .header("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==")
  .header("accept", "application/json")
  .header("content-type", "application/json")
  .body("{\"to\":[\"41793026727\", \"12345678\", \"Alphanumeric\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}")
  .asString();
var client = new RestClient("https://api.infobip.com/number/1/notify");

var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
request.AddParameter("application/json", "{\"to\":[\"41793026727\", \"12345678\", \"Alphanumeric\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}", ParameterType.RequestBody);

IRestResponse response = client.Execute(request);
var data = JSON.stringify({
  "to": [
    "41793026727",
    "12345678",
    "Alphanumeric"
  ],
  "notifyUrl": "http://example.com/notifyUrl",
  "notifyContentType": "application/json"
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.infobip.com/number/1/notify");
xhr.setRequestHeader("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);

Response:

HTTP/1.1 200 OK
Content-Type: application/json

{  
   "bulkId":"f5c4322c-10e7-a41e-5528-34fa0b032134",
   "results":[  
      {  
         "to":"41793026727",
         "status":{  
            "groupId":1,
            "groupName":"PENDING",
            "id":7,
            "name":"PENDING_ENROUTE",
            "description":"Message sent to next instance"
         },
         "messageId":"c2598a78-ba88-423f-8ac3-5dac4af816cf"
      },
      {  
         "to":"12345678",
         "status":{  
            "groupId":5,
            "groupName":"REJECTED",
            "id":14,
            "name":"REJECTED_DESTINATION",
            "description":"By Destination",
            "action":"Remove destination from blacklist"
         },
         "messageId":"a70437bc-872c-5462-837a-4ede899af3bf"
      },
      {  
         "to":"Alphanumeric",
         "status":{  
            "groupId":5,
            "groupName":"REJECTED",
            "id":52,
            "name":"REJECTED_DESTINATION",
            "description":"Invalid destination address.",
            "action":"Check to parameter."
         }
      }
   ]
}
HTTP/1.1 200 OK
Content-Type: application/xml

<ncResponseAsync>
   <bulkId>f5c4322c-10e7-a41e-5528-34fat43er4134</bulkId>
   <results>
      <result>
         <to>41793026727</to>
         <status>
            <groupId>1</groupId>
            <groupName>Pending</groupName>
            <id>3</id>
            <name>PENDING_WAITING_DELIVERY</name>
            <description>Message sent, waiting for delivery report</description>
         </status>
         <messageId>c2598a78-ba88-423f-8ac3-5dac4af816cf</messageId>
      </result>
      <result>
         <to>12345678</to>
         <status>
            <groupId>5</groupId>
            <groupName>REJECTED</groupName>
            <id>14</id>
            <name>REJECTED_DESTINATION</name>
            <description>By Destination</description>
            <action>Remove destination from blacklist</action>
         </status>
         <messageId>a70437bc-872c-5462-837a-4ede899af3bf</messageId>
      </result>
      <result>
         <to>Alphanumeric</to>
         <status>
            <groupId>5</groupId>
            <groupName>REJECTED</groupName>
            <id>52</id>
            <name>REJECTED_DESTINATION</name>
            <description>Invalid destination address.</description>
            <action>Check to parameter.</action>
         </status>
      </result>
   </results>
</ncResponseAsync>

Number Lookup - Ported phone number

Request:

POST /number/1/notify HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
Accept: application/json

{  
   "to":[  
      "44788740087"
   ],
   "notifyUrl":"http://example.com/notifyUrl",
   "notifyContentType":"application/json"
}
POST /number/1/notify HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/xml
Accept: application/xml

<request>
   <to>44788740087</to>
   <notifyUrl>http://example.com/notifyUrl</notifyUrl>
   <notifyContentType>application/xml</notifyContentType>
</request> 
curl -X POST \
-H "Content-Type: application/json" \
-H 'Accept: application/json' \
-H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=" \
-d '{  
   "to":[  
      "44788740087"
   ],
   "notifyUrl":"http://example.com/notifyUrl",
   "notifyContentType":"application/json"
}' https://api.infobip.com/number/1/notify
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.infobip.com/number/1/notify",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"to\":[\"44788740087\"],\"notifyUrl\":\"http://example.com/notifyUrl\",\"notifyContentType\":\"application/json\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
require 'uri'
require 'net/http'

url = URI("https://api.infobip.com/number/1/notify")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["authorization"] = 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='
request["accept"] = 'application/json'
request["content-type"] = 'application/json'

request.body = "{\"to\":[\"44788740087\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}"

response = http.request(request)
puts response.read_body
import http.client

conn = http.client.HTTPSConnection("api.infobip.com")

payload = "{\"to\":[\"44788740087\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}"

headers = {
    'authorization': "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/number/1/notify", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
HttpResponse<String> response = Unirest.post("https://api.infobip.com/number/1/notify")
  .header("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==")
  .header("accept", "application/json")
  .header("content-type", "application/json")
  .body("{\"to\":[\"44788740087\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}")
  .asString();
var client = new RestClient("https://api.infobip.com/number/1/notify");

var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
request.AddParameter("application/json", "{\"to\":[\"44788740087\"], \"notifyUrl\":\"http://example.com/notifyUrl\", \"notifyContentType\":\"application/json\"}", ParameterType.RequestBody);

IRestResponse response = client.Execute(request);
var data = JSON.stringify({
  "to": [
    "44788740087"
  ],
  "notifyUrl": "http://example.com/notifyUrl",
  "notifyContentType": "application/json"
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.infobip.com/number/1/notify");
xhr.setRequestHeader("authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);

Response:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "results": [
        {
            "to": "44788740087",
            "mccMnc": "23410",
            "imsi": "23410988740087",
            "originalNetwork": {
                "networkName": "Vodafone UK",
                "networkPrefix": "78874",
                "countryName": "United Kingdom",
                "countryPrefix": "44"
            },
            "ported": true,
            "portedNetwork": {
                "networkName": "O2 (Telefonica UK Ltd)",
                "networkPrefix": "76020",
                "countryName": "United Kingdom",
                "countryPrefix": "44"
            },
            "roaming": false,
            "servingMSC": "447802",
            "status": {
                "groupId": 3,
                "groupName": "DELIVERED",
                "id": 5,
                "name": "DELIVERED_TO_HANDSET",
                "description": "Message delivered to handset"
            },
            "error": {
                "groupId": 0,
                "groupName": "OK",
                "id": 0,
                "name": "NO_ERROR",
                "description": "No Error",
                "permanent": false
            }
        }
    ]
}
HTTP/1.1 200 OK
Content-Type: application/xml

<ncResponse>
    <results>
        <result>
            <to>44788740087</to>
            <mccMnc>23410</mccMnc>
            <imsi>23410988740087</imsi>
            <originalNetwork>
                <networkName>Vodafone UK</networkName>
                <networkPrefix>78874</networkPrefix>
                <countryName>United Kingdom</countryName>
                <countryPrefix>44</countryPrefix>
            </originalNetwork>
            <ported>true</ported>
            <portedNetwork>
                <networkName>O2 (Telefonica UK Ltd)</networkName>
                <networkPrefix>76020</networkPrefix>
                <countryName>United Kingdom</countryName>
                <countryPrefix>44</countryPrefix>
            </portedNetwork>
            <roaming>false</roaming>
            <servingMSC>447802</servingMSC>
            <status>
                <groupId>3</groupId>
                <groupName>DELIVERED</groupName>
                <id>5</id>
                <name>DELIVERED_TO_HANDSET</name>
                <description>Message delivered to handset</description>
            </status>
            <error>
                <groupId>0</groupId>
                <groupName>OK</groupName>
                <id>0</id>
                <name>NO_ERROR</name>
                <description>No Error</description>
                <permanent>false</permanent>
            </error>
        </result>
    </results>
</ncResponse>

Async NC results push retry cycle

If your Notify URL is unavailable for any reason, forward attempts will be made according to formula: 1min + (1min * <retryNumber/> * <retryNumber/>). Examples for first few retry attempts are shown in the table below. Maximum number of retries is 20, i.e. the last retry will be done 41:30h after the initial one. If your URL is not available for the entire time, NC results will not be available to you.

0 1min 00:01h
1 2min 00:03h
2 5min 00:08h
3 10min 00:18h
4 17min 00:35h
5 26min 01:01h