Probe API Documentation API Reference

This API provides access to our global measurement network

Each API call needs to have an API key. To get a trial access to our API, please sign up here.

Best way to start using our API is to follow our Quickstart tutorial

Two-request data query model

All of the methods which execute measurements on your behalf follow two-request API model. In Start method (e..g StartPingTest) you specify test parameters which control what should be tested and how. In Get methods (e.g. GetPingResults) you retrieve the results based on testID you were returned from Start method.

Flexible data output

Probe API allows to return many properties of the test as well as the information about the probe itself. To save bandwidth we output only properties that you ask for. You can explicitly define what information you would like to get back by specifying list of properties as a list in ProbeInfoProperties

Date-time format

We use Unix Epoch time to display all datetime properties in the API response. Here is handy online tool for converting back/forth from human readable format.

Encoding

All input parameters/variables should be encoded in UTF8.

API Quota usage

You can use this page to see API usage per day. By clicking on the rows on the page you can also see break down by Test type and used bandwidth. Alternatively, you can check your API usage stats using Helper method /GetUsageStats.

API usage is updated in realtime.

API Endpoint
https://kong.speedcheckerapi.com:8443/ProbeAPIv2
Schemes: http, https
Version: 2.3.0

Authentication

apikey

name
apikey
in
query

Ping

Methods related to running Ping test.

POST /StartPingTest

Starts PING method using ICMP or TCP from selected sources to selected destinations

settings defining the test parameters

Request Example
{
  "testSettings": {
    "PingType": "icmp",
    "BufferSize": 32,
    "Count": 3,
    "Fragment": 1,
    "Ipv4only": 0,
    "Ipv6only": 0,
    "Resolve": 0,
    "Sleep": 1000,
    "Ttl": 128,
    "Timeout": 1000,
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

GET /GetPingResults

Retrieves results of ping test with particular testID (which was retrieved using StartPingTest method).

testID

ID of the test

type
number
in
query

OK

Response Example (200 OK)
{
  "PingTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "Router",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "Destination": "8.8.8.8",
      "IP": "8.8.8.8",
      "PingArray": [
        "22",
        "22",
        "22"
      ],
      "PingTime": 22,
      "Status": "OK"
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

Pageload

Methods related to running Pageload test.

POST /StartPageLoadTest

Starts page load test from selected sources to selected destinations. Webpage must load within 60 seconds otherwise timeout event will occur and not all performance metrics be available.

settings defining the test parameters

Request Example
{
  "testSettings": {
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

GET /GetPageLoadResults

Retrieves results of page load test with particular testID (which was retrieved using StartPageLoadTest method).

testID

ID of the test

type
number
in
query
Response Example (200 OK)
{
  "PageLoadTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "DNSLookupTime": 0,
      "Destination": "http://www.google.com",
      "HTTPStatus": "200",
      "InitialConnection": 133,
      "NumberOfRequests": 14,
      "PageLoadTime": 3030,
      "SSLNegotiationTime": 0,
      "TTFB": 1268,
      "TotalDownloadedBytes": 358439
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

DIG

Methods related to running DIG test.

DIG

POST /StartDigTest

Starts DIG test from selected sources to selected destinations. DNS query is using user’s DNS server as the DNS Resolver server and returns the “Query time” in milliseconds. Query type: A. Query class: IN. Cache:0. Recurse:0. Protocol:UDP. Tries:1. Time:2.

settings defining the test parameters

Request Example
{
  "testSettings": {
    "Cache": 0,
    "QClass": "IN",
    "QType": "A",
    "Recurse": 0,
    "Retries": 0,
    "Server": "",
    "Tcp": 0,
    "Time": 2000,
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}
DIG

GET /GetDigResults

Retrieves results of DIG test with particular testID (which was retrieved using StartDigTest method).

testID

ID of the test

type
number
in
query

OK

Response Example (200 OK)
{
  "DigTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "Destination": "8.8.8.8",
      "QueryTime": "3",
      "Status": "NoError"
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

HTTP

Methods related to running HTTP tests.

POST /StartHttpGetTest (deprecated)

Starts Http GET test from selected sources to selected destinations.

settings defining the test parameters

Request Example
{
  "testSettings": {
    "MaxBytes": 10485760,
    "Timeout": 2000,
    "UserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

GET /GetHttpGetResults (deprecated)

Retrieves results of Http GET test with particular testID (which was retrieved using StartHttpGetTest method).

testID

ID of the test

type
number
in
query
Response Example (200 OK)
{
  "HttpGetTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "ContentLength": -1,
      "Destination": "http://www.google.com",
      "DownloadedBytes": 102,
      "Status": "200",
      "TimeToFirstByte": 105,
      "TotalTime": 105
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

POST /StartHttpTest

Starts Http test (HEAD,GET or POST) from selected sources to selected destinations.

settings defining the test parameters

Request Example
{
  "testSettings": {
    "Method": "GET",
    "MaxBytes": 10485760,
    "Timeout": 2000,
    "Headers": [
      "content-type: application/json",
      "apikey: 1234556-1975-1978-9876-abcdefghjj"
    ],
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      },
      {
        "Platform": "Android"
      },
      {
        "MinimumVersion": "3.5.0"
      }
    ],
    "Destinations": [
      "http://httpbin.org/headers"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

GET /GetHttpResults

Retrieves results of Http test with particular testID (which was retrieved using StartHttpTest method).

testID

ID of the test

type
number
in
query

OK

Response Example (200 OK)
{
  "HttpTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "ContentLength": -1,
      "Destination": "http://www.google.com",
      "DownloadedBytes": 102,
      "Status": "200",
      "TimeToFirstByte": 105,
      "TotalTime": 105
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

VideoTest

Methods related to running Video test.

POST /StartVideoTest

Starts Video test from selected sources to selected destinations. At the moment maximum video length is 15 seconds and only supported platform is Youtube. If longer video is supplied, only first 15 seconds are played (performance metrics should be available in the response if timeout occurs). Some Video IDs (specified in VideoURL querystring) cannot report video speed - e.g ozv4q2ov3Mk , you will notice videoDownloadSpeed=-1 (if you specify it in the TestResultProperties) . This is because some videos have restrictions on playback (this particular ID is from VEVO and they imposed some restrictions on Youtube playback). Other metrics are fine for this video ID, but if you want to get videodownloadspeed, you need to pick different videoID

settings defining the test parameters

Request Example
{
  "testSettings": {
    "VideoUrl": "http://pcsucdn.com/YoutubeVideoTest.html?v=F4vEyqPcfqk",
    "VideoControlScript": "Youtube4.js",
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ],
    "TestResultProperties": [
      "VideoDownloadSpeed"
    ]
  }
}

OK

Response Example (200 OK)
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

GET /GetVideoResults

Retrieves results of Video test with particular testID (which was retrieved using StartHttpGetTest method).

testID

ID of the test

type
number
in
query

OK

Response Example (200 OK)
{
  "VideoTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "VideoID": "string",
      "VideoResolution": "string",
      "VideoHostname": "string",
      "InitialBufferingLatency": "number",
      "RebufferingTimes": "number",
      "DurationOfEachRebuffering": "number",
      "VideoPlayDuration": "number",
      "VideoDownloadSpeed": "number",
      "VideoPlayFinishEvent": "string",
      "TestDateTime": "string (date-time)",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      }
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

Traceroute

Methods related to running Traceroute test.

POST /StartTracertTest

Starts Traceroute test from selected sources to selected destinations.

settings defining the test parameters

Request Example
{
  "testSettings": {
    "BufferSize": 32,
    "Count": 3,
    "Fragment": 1,
    "Ipv4only": 0,
    "Ipv6only": 0,
    "MaxFailedHops": 0,
    "Resolve": 1,
    "Sleep": 300,
    "Ttl": 128,
    "TtlStart": 1,
    "Timeout": 60000,
    "HopTimeout": 1000,
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

GET /GetTracertResults

Retrieves results of Traceroute test with particular testID (which was retrieved using StartHttpGetTest method).

testID

ID of the test

type
number
in
query
Response Example (200 OK)
{
  "TracerouteTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "Destination": "8.8.8.8",
      "HostName": "google-public-dns-a.google.com",
      "IP": "8.8.8.8",
      "Tracert": [
        {
          "HostName": "",
          "IP": "",
          "PingTimeArray": [
            null,
            null,
            null
          ]
        },
        {
          "HostName": "gv-rc0011-cr101-ae101-0.core.as9143.net",
          "IP": "213.51.174.209",
          "PingTimeArray": [
            "14",
            "11",
            "15"
          ]
        },
        {
          "HostName": "",
          "IP": "",
          "PingTimeArray": [
            null,
            null,
            null
          ]
        },
        {
          "HostName": "nl-ams14a-ri1-ae8-0.aorta.net",
          "IP": "84.116.135.38",
          "PingTimeArray": [
            "12",
            "20",
            "13"
          ]
        },
        {
          "HostName": "",
          "IP": "74.125.146.228",
          "PingTimeArray": [
            "11",
            "11",
            "12"
          ]
        },
        {
          "HostName": "",
          "IP": "108.170.241.129",
          "PingTimeArray": [
            "14",
            "10",
            "16"
          ]
        },
        {
          "HostName": "",
          "IP": "209.85.244.55",
          "PingTimeArray": [
            null,
            null,
            null
          ]
        },
        {
          "HostName": "google-public-dns-a.google.com",
          "IP": "8.8.8.8",
          "PingTimeArray": [
            "14",
            "11",
            "13"
          ]
        }
      ]
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

Helper

Helper methods such as getting probe information, usage stats and more.

POST /GetNewProbes

Get newly logged in probes based on given criteria

criteria on the basis of which probes are selected

Request Example
{
  "criteria": {
    "FromXMinutes": 5,
    "Sources": [
      {
        "CountryCode": "PL"
      }
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "GetProbesResult": {
    "ResponseStatus": {
      "StatusCode": "200",
      "StatusText": "Test finished, you can retreive results now"
    },
    "Probes": [
      {
        "ASN": 5617,
        "CityName": "Gliwice",
        "ConnectionType": "Wireless80211",
        "CountryCode": "PL",
        "DNSResolver": "82.163.143.15",
        "GeolocationAccuracy": 10000,
        "IPAddress": "83.26.232.236",
        "Latitude": 50.1908,
        "Longitude": 18.4508,
        "Network": "Orange Polska",
        "NetworkID": 305,
        "Platform": "PC",
        "ProbeID": "c8c27774-e188-4625-82db-eb34c54a3841",
        "Version": "1.0.44.0"
      },
      {
        "ASN": 39603,
        "CityName": "Warsaw",
        "ConnectionType": "Wireless80211",
        "CountryCode": "PL",
        "DNSResolver": "185.89.185.1",
        "GeolocationAccuracy": 177,
        "IPAddress": "94.254.231.151",
        "Latitude": 52.238763,
        "Longitude": 21.114586,
        "Network": "Play",
        "NetworkID": 454,
        "Platform": "PC",
        "ProbeID": "0f69bf53-2479-48b7-95f6-a4c6a83bc531",
        "Version": "1.0.44.0"
      }
    ]
  }
}

GET /GetCountries (deprecated)

Get List of countries

Response Example (200 OK)
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Test finished, you can retreive results now"
  },
  "Countries": [
    {
      "CountryCode": "FR",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/fr.png",
      "CountryName": "",
      "ProbesCount": 624
    },
    {
      "CountryCode": "DE",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/de.png",
      "CountryName": "",
      "ProbesCount": 1231
    },
    {
      "CountryCode": "US",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/us.png",
      "CountryName": "",
      "ProbesCount": 3413
    },
    {
      "CountryCode": "AU",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/au.png",
      "CountryName": "",
      "ProbesCount": 431
    }
  ]
}

GET /GetNetworks (deprecated)

Get List of networks

countryCode

Country from which Networks are taken, if null all networks are returned

type
string
in
query
Response Example (200 OK)
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Test finished, you can retreive results now"
  },
  "Networks": [
    {
      "CountryCode": null,
      "LogoURL": null,
      "NetworkID": "352",
      "NetworkName": "Servei de Telecomunicacions d'Andorra"
    }
  ]
}

POST /GetProbes

Get probes based on given criteria

criteria on the basis of which probes are selected

Request Example
{
  "criteria": {
    "Sources": [
      {
        "CountryCode": "PL"
      }
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

OK

Response Example (200 OK)
{
  "GetProbesResult": {
    "ResponseStatus": {
      "StatusCode": "200",
      "StatusText": "Test finished, you can retreive results now"
    },
    "Probes": [
      {
        "ASN": 5617,
        "CityName": "Gliwice",
        "ConnectionType": "Wireless80211",
        "CountryCode": "PL",
        "DNSResolver": "82.163.143.15",
        "GeolocationAccuracy": 10000,
        "IPAddress": "83.26.232.236",
        "Latitude": 50.1908,
        "Longitude": 18.4508,
        "Network": "Orange Polska",
        "NetworkID": 305,
        "Platform": "PC",
        "ProbeID": "c8c27774-e188-4625-82db-eb34c54a3841",
        "Version": "1.0.44.0"
      },
      {
        "ASN": 39603,
        "CityName": "Warsaw",
        "ConnectionType": "Wireless80211",
        "CountryCode": "PL",
        "DNSResolver": "185.89.185.1",
        "GeolocationAccuracy": 177,
        "IPAddress": "94.254.231.151",
        "Latitude": 52.238763,
        "Longitude": 21.114586,
        "Network": "Play",
        "NetworkID": 454,
        "Platform": "PC",
        "ProbeID": "0f69bf53-2479-48b7-95f6-a4c6a83bc531",
        "Version": "1.0.44.0"
      }
    ]
  }
}

GET /GetCities (deprecated)

Get List of cities for a given country which have online probes at the moment.

countryCode

Specify countryCode to retrieve list of cities which are located in corresponding Country.

type
string
in
query

OK

Response Example (200 OK)
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Test finished, you can retreive results now"
  },
  "Cities": [
    {
      "CityName": "La Massana",
      "CountryCode": "AD",
      "ProbesCount": 1
    }
  ]
}

GET /GetUsageStats

Method to query your used test quota and bandwidth in realtime. If you do not put start/end dates, you will get usage quota for today. Bandwidth is in Bytes.

startDate

(Optional) Specify starting date to retrieve the stats from. Format: YYYY-MM-DD , e.g. 2017-05-20

type
string
in
query
endDate

(Optional) Specify ending date to retrieve the stats to. Format: YYYY-MM-DD , e.g. 2017-05-20

type
string
in
query
Response Example (200 OK)
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Stats retreived"
  },
  "usageStats": [
    {
      "Date": "/Date(1510931862112)/",
      "NumberOfTests": 264,
      "TestType": "PageLoad",
      "UsedBandwidth": 1563461720
    },
    {
      "Date": "/Date(1510931863520)/",
      "NumberOfTests": 3706,
      "TestType": "Ping",
      "UsedBandwidth": 1333800
    },
    {
      "Date": "/Date(1510931858559)/",
      "NumberOfTests": 165326,
      "TestType": "Traceroute",
      "UsedBandwidth": 823469520
    }
  ]
}

Schema Definitions

Source: object

ProbeID: string

ID of the probe

IPAddress: string

IP of the probe

CountryCode: string

Country code to target

ASN: number

ASN to target

NetworkID: number

NetworkID to target. To get NetworkID, call GetNetworks endpoint.

CityName: string

City to target. To get list of Cities available, call GetCities endpoint.

BoundingBox: BoundingBox
GeolocationPrecision: number

Specify to target only probes with higher geolocation accuracy (in meters). e.g. putting 5000 will mean only probes geolocated with 5km accuracy or better will be considered.

Platform: string

Supported 'PC' to target desktop devices and 'Android' to target Android probes

MinimumVersion: string

Minimum version of the probe to target. If not entered then for PC platform it is 1.0.40.0. For Android it is 3.0.0.0. For Router 1.1.

Example
{
  "ProbeID": "10dc545f-6d4f-4b60-a4d6-756c7e85eb69",
  "IPAddress": "213.23.12.87",
  "CountryCode": "US",
  "ASN": 7018,
  "CityName": "Dayton",
  "GeolocationPrecision": 5000,
  "NetworkID": 618,
  "Platform": "PC",
  "MinimumVersion": "1.0.44.0"
}

BoundingBox: object

Rectangle area defined by minimum and maximum latitudes and longitudes.

MinLatitude: number
MaxLatitude: number
MinLongitude: number
MaxLongitude: number
Example
{
  "MinLatitude": 51.21610667738272,
  "MaxLatitude": 51.64420417946697,
  "MinLongitude": -0.82672119140625,
  "MaxLongitude": 0.73883056640625
}

PingTestSettings: object

PingType: string

specify whether to send ICMP ("icmp") or TCP packets ("tcp")

BufferSize: number

Size of the packet data (default 32, max 65500)

Count: number

Number of pings to run (default 3, max 100). If number of pings is changed, timeout parameter should be changed as well to ensure probe has time to execute all pings

Fragment: number

allow fragmentation of sending packets (default 1)

Ipv4only: number

Force using IPv4. If no IPv4 IP address is returned will return error (default 0)

Ipv6only: number

Force using IPv6. If no IPv6 IP address is returned will return error (default 0)

Resolve: number

resolveIP address to domain name (default 0)

Sleep: number

sleep time between pings as executed on one probe in milliseconds (default 1000ms, max 5000ms)

Ttl: number

Max allowed hops for packet (default 128, max 255)

Timeout: number

Ping timeout in milliseconds that one ping can take (default 1000ms, max 5000ms)

TestCount: number

how many probes will be used for testing (for each source)

Sources: Source
Destinations: string[]

List of destinations for testing (e.g. hostnames or IPs)

ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

TestResultProperties: string[]

List of properties of PingTestResult which API should respond. By default we respond with Status, Destination, IP, PingTime, PingArray, TestDateTime. Rest of the properties need to be specified

Example
{
  "testSettings": {
    "PingType": "icmp",
    "BufferSize": 32,
    "Count": 3,
    "Fragment": 1,
    "Ipv4only": 0,
    "Ipv6only": 0,
    "Resolve": 0,
    "Sleep": 1000,
    "Ttl": 128,
    "Timeout": 1000,
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

PingTestResponse: object

PingTestResults: PingTestResult
ResponseStatus: ResponseStatus
Example
{
  "PingTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "Router",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "Destination": "8.8.8.8",
      "IP": "8.8.8.8",
      "PingArray": [
        "22",
        "22",
        "22"
      ],
      "PingTime": 22,
      "Status": "OK"
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

PingTestResult: object

ProbeInfo: ProbeInfo
Status: string
Destination: string

Destination that was specified in StartPingTest API request

HostName: string

Destination Hostname resolved from IP

IP: string

Destination IP

PingTime: number

Average ping latency in milliseconds from results in PingArray

PingArray: number[]
TestDateTime: string (date-time)
TestStatus: ResponseStatus
Example
{
  "ProbeInfo": {
    "ASN": 9600,
    "CityName": "Tokyo",
    "ConnectionType": "fiber",
    "CountryCode": "JP",
    "DNSResolver": "",
    "GeolocationAccuracy": 10000,
    "IPAddress": "211.9.53.171",
    "Latitude": 34.6551456,
    "Longitude": 133.9195019,
    "Network": "So-net Corporation",
    "Platform": "Router",
    "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
    "Version": "1.1"
  },
  "TestDateTime": "/Date(1510927973085+0000)/",
  "TestStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  },
  "Destination": "8.8.8.8",
  "IP": "8.8.8.8",
  "PingArray": [
    "22",
    "22",
    "22"
  ],
  "PingTime": 22,
  "Status": "OK"
}

CountryProbe: object

CountryCode: string
CountryName: string
ProbesCount: number

Number of probes in the country at the time of API call.

Example
{
  "CountryCode": "US",
  "CountryName": "United States",
  "ProbesCount": 5232
}

CityProbe: object

CountryCode: string
CityName: string
ProbesCount: number

Number of probes in the City at the time of API call.

Example
{
  "CountryCode": "US",
  "CityName": "Denver",
  "ProbesCount": 15
}

UsageStat: object

Date: string (date-time)
TestType: string
NumberOfTests: number

Number of measurements of given test type executed on given date.

UsedBandwidth: number

Bandwidth consumed by measurements of given test type executed on given date.

Example
{
  "Date": "/Date(1510931862112)/",
  "NumberOfTests": 264,
  "TestType": "PageLoad",
  "UsedBandwidth": 1563461720
}

ProbeInfo: object

ProbeID: string

ID of the probe

IPAddress: string

IP of the probe

Latitude: number
Longitude: number
GeolocationAccuracy: number

in meters

ASN: number
Network: string

ISP Organization

NetworkID: number
CountryCode: string

In ISO format, e.g. US for United States

CityName: string
CountryName: string
DNSResolver: string

IP address of the DNS resolver used by the probe.

ConnectionType: string

Internet connection type (e.g. wifi, lan, mobile)

Platform: string

Platform of the probe (e.g. desktop, android, router)

Screensize: string

Screen size of the probe (applicable for desktop and android)

Example
{
  "ASN": 9600,
  "CityName": "Tokyo",
  "ConnectionType": "fiber",
  "CountryCode": "JP",
  "DNSResolver": "",
  "GeolocationAccuracy": 10000,
  "IPAddress": "211.9.53.171",
  "Latitude": 34.6551456,
  "Longitude": 133.9195019,
  "Network": "So-net Corporation",
  "Platform": "PC",
  "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
  "Version": "1.1"
}

PageLoadTestSettings: object

TestCount: number

how many probes will be used for testing (for each source)

Sources: Source
Destinations: string[]

List of URLs for testing (inc. http or https)

ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

TestResultProperties: string[]

List of properties of PageLoadTestResult which API should respond. By default we respond with HTTPStatus, Destination, InitialConnection, DNSLookupTime, PageLoadTime, TTFB, SSLNegotiationTime, TotalDownloadedBytes, NumberOfRequests, TestDateTime. Rest of the properties need to be specified

Example
{
  "testSettings": {
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

PageLoadTestResponse: object

PageLoadTestResults: PageLoadTestResult
ResponseStatus: ResponseStatus
Example
{
  "PageLoadTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "DNSLookupTime": 0,
      "Destination": "http://www.google.com",
      "HTTPStatus": "200",
      "InitialConnection": 133,
      "NumberOfRequests": 14,
      "PageLoadTime": 3030,
      "SSLNegotiationTime": 0,
      "TTFB": 1268,
      "TotalDownloadedBytes": 358439
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

PageLoadTestResult: object

ProbeInfo: ProbeInfo
HTTPStatus: string
Destination: string
DNSLookupTime: number
InitialConnection: number
SSLNegotiationTime: number
TTFB: number
PageLoadTime: number
TotalDownloadedBytes: number

All downloaded bytes by the web browser from the destination URL (inc. any sub requests)

NumberOfRequests: number

Number of sub requests done by the web browser while loading the webpage

HARFile: string

Base64 encoded and GZIPped HAR file of the webpage request by the browser. To get the content you need to decode using Base64 then unzip using GZIP. ( https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/HAR/Overview.html). For some metrics in HAR file, value '-1' means that we don't have this value available, unfortunately the browser component doesn't give us all the information at the moment that we would need to construct HAR file with all information.

TestDateTime: string (date-time)
TestStatus: ResponseStatus
Example
{
  "ProbeInfo": {
    "ASN": 9600,
    "CityName": "Tokyo",
    "ConnectionType": "fiber",
    "CountryCode": "JP",
    "DNSResolver": "",
    "GeolocationAccuracy": 10000,
    "IPAddress": "211.9.53.171",
    "Latitude": 34.6551456,
    "Longitude": 133.9195019,
    "Network": "So-net Corporation",
    "Platform": "PC",
    "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
    "Version": "1.1"
  },
  "TestDateTime": "/Date(1510927973085+0000)/",
  "TestStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  },
  "DNSLookupTime": 0,
  "Destination": "http://www.google.com",
  "HTTPStatus": "200",
  "InitialConnection": 133,
  "NumberOfRequests": 14,
  "PageLoadTime": 3030,
  "SSLNegotiationTime": 0,
  "TTFB": 1268,
  "TotalDownloadedBytes": 358439
}

DigTestSettings: object

Cache: number

Cache result in local cache, e.g. 0 means don’t cache results (default 0)

QClass: string

Query class (default IN)

QType: string

Query type (default A)

Recurse: number

Set Recursion Desired flag (default 0)

Retries: number

Total number of retries (default 0)

Server: string

DNS server to use as a resolver, e.g. 8.8.8.8 (default, empty string, uses local DNS setting)

Tcp: number

Use tcp as a transport, e.g. 0 means use UDP, 1 means use TCP, both use port 53 (default 0)

Time: number

Maximum time available to probes for testing in milliseconds (default 2000ms)

TestCount: number

how many probes will be used for testing (for each source)

Sources: Source
Destinations: string[]

List of destinations for testing (e.g. hostnames or URLs)

ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

TestResultProperties: string[]

List of properties of DigTestResult which API should respond. By default we respond with Status, Destination, QueryTime, TestDateTime. Rest of the properties need to be specified

Example
{
  "testSettings": {
    "Cache": 0,
    "QClass": "IN",
    "QType": "A",
    "Recurse": 0,
    "Retries": 0,
    "Server": "",
    "Tcp": 0,
    "Time": 2000,
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

DigTestResponse: object

DigTestResults: DigTestResult
ResponseStatus: ResponseStatus
Example
{
  "DigTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "Destination": "8.8.8.8",
      "QueryTime": "3",
      "Status": "NoError"
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

DigTestResult: object

ProbeInfo: ProbeInfo
Status: string
Destination: string
QueryTime: number
QueryText: string

Full DNS DIG output

TestDateTime: string (date-time)
TestStatus: ResponseStatus
Example
{
  "ProbeInfo": {
    "ASN": 9600,
    "CityName": "Tokyo",
    "ConnectionType": "fiber",
    "CountryCode": "JP",
    "DNSResolver": "",
    "GeolocationAccuracy": 10000,
    "IPAddress": "211.9.53.171",
    "Latitude": 34.6551456,
    "Longitude": 133.9195019,
    "Network": "So-net Corporation",
    "Platform": "PC",
    "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
    "Version": "1.1"
  },
  "TestDateTime": "/Date(1510927973085+0000)/",
  "TestStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  },
  "Destination": "8.8.8.8",
  "QueryTime": "3",
  "Status": "NoError"
}

HttpGetTestSettings: object

MaxBytes: number

Max bytes to download from response stream. By default 10485760 bytes (10MB) are downloaded. Each platform has slightly different way of handling MaxBytes, PC platform - If you request Headers or Body contents in HttpGetTestProperties object then 102400 bytes (100kB) will be downloaded. (Total size of body<100kB), Android platform - If you request Headers or Body contents in HttpGetTestProperties object then 102400 bytes (100kB) will be downloaded. (Total size of body<100kB). Please note that downloadedBytes may be up to 8kB larger than MaxBytes in some cases., Router platform - If you request Headers or Body contents in HttpGetTestProperties object then 51200 bytes (50kB) will be downloaded. (Total size of body+headers<50kB)

Timeout: number

Maximum time available to probes for testing in milliseconds (default 2000ms, maximum 60000ms). Timeout and Maxbytes settings are related. If Timeout is too small, not all bytes may be downloaded.

TestCount: number

how many probes will be used for testing (for each source)

UserAgent: string

Set request's User-Agent header.

Sources: Source
Destinations: string[]

List of destinations for testing (inc. http or https prefix)

ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

TestResultProperties: string[]

List of properties of HttpGetResult which API should respond. By default we respond with Status, ContentLength, Destination, DownloadedBytes, TimeToFirstByte, TotalTime, TestDateTime. Rest of the properties need to be specified

Example
{
  "testSettings": {
    "MaxBytes": 10485760,
    "Timeout": 2000,
    "UserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

HttpTestSettings: object

Method: string

GET/POST/HEAD . POST and HEAD supported only on Android platform and minimumVersion 3.5.0

MaxBytes: number

Max bytes to download from response stream. By default 10485760 bytes (10MB) are downloaded. Each platform has slightly different way of handling MaxBytes, PC platform - If you request Headers or Body contents in HttpTestProperties object then 102400 bytes (100kB) will be downloaded. (Total size of body<100kB), Android platform - If you request Headers or Body contents in HttpTestProperties object then 102400 bytes (100kB) will be downloaded. (Total size of body<100kB). Please note that downloadedBytes may be up to 8kB larger than MaxBytes in some cases., Router platform - If you request Headers or Body contents in HttpTestProperties object then 51200 bytes (50kB) will be downloaded. (Total size of body+headers<50kB)

Timeout: number

Maximum time available to probes for testing in milliseconds (default 2000ms, maximum 60000ms). Timeout and Maxbytes settings are related. If Timeout is too small, not all bytes may be downloaded.

TestCount: number

how many probes will be used for testing (for each source)

Sources: Source
Destinations: string[]

List of destinations for testing (inc. http or https prefix)

Headers: string[]

List of http headers to pass to the destination (use BinaryHeaders instead if you want to pass special characters or binary content).This is supported only on Android platform and minimumVersion 3.5.0

Body: string

Escaped body in clear text (use BinaryBody instead if you want to pass special characters or binary content). Applicable only to HTTP POST.This is supported only on Android platform and minimumVersion 3.5.0

BinaryHeaders: string[]

List of http headers to pass to the destination. The headers should be first ZIPped and then encoded using Base64.This is supported only on Android platform and minimumVersion 3.5.0

BinaryBody: string

Body of the HTTP POST request. The headers should be first ZIPped and then encoded using Base64.This is supported only on Android platform and minimumVersion 3.5.0

ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

TestResultProperties: string[]

List of properties of HttpResult which API should respond. By default we respond with Status, ContentLength, Destination, DownloadedBytes, TimeToFirstByte, TotalTime, TestDateTime. Rest of the properties need to be specified

Example
{
  "testSettings": {
    "Method": "GET",
    "MaxBytes": 10485760,
    "Timeout": 2000,
    "Headers": [
      "content-type: application/json",
      "apikey: 1234556-1975-1978-9876-abcdefghjj"
    ],
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      },
      {
        "Platform": "Android"
      },
      {
        "MinimumVersion": "3.5.0"
      }
    ],
    "Destinations": [
      "http://httpbin.org/headers"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

HttpGetTestResponse: object

HttpGetTestResults: HttpGetTestResult
ResponseStatus: ResponseStatus
Example
{
  "HttpGetTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "ContentLength": -1,
      "Destination": "http://www.google.com",
      "DownloadedBytes": 102,
      "Status": "200",
      "TimeToFirstByte": 105,
      "TotalTime": 105
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

HttpTestResponse: object

HttpTestResults: HttpTestResult
ResponseStatus: ResponseStatus
Example
{
  "HttpTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "ContentLength": -1,
      "Destination": "http://www.google.com",
      "DownloadedBytes": 102,
      "Status": "200",
      "TimeToFirstByte": 105,
      "TotalTime": 105
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

HttpGetTestResult: object

ProbeInfo: ProbeInfo
Status: string

HTTP status code

ContentLength: number
Destination: string
DownloadedBytes: number

Number of bytes downloaded from the destination url. This number is influenced by the MaxBytes parameter.

TimeToFirstByte: number
TotalTime: number

Time in milliseconds that took to retrieve all DownloadedBytes, inc. any initialization requests.

ConnectTime: number

TCP Connect Time in milliseconds. This can be measured only for HTTP endpoints and needs to be specified in TestResultProperties

Headers: string

Contains headers from HTTP GET response. This parameter will be empty unless you specify 'Headers' in HttpGetTestProperties object in call to /StartHttpGetTest. Output encoded using Base64 and zipped using GZIP. To get the QueryText you need to decode using Base64 then unzip using GZIP.

Body: string

Contains body from HTTP GET response. This parameter will be empty unless you specify 'Body' in HttpGetTestProperties object in call to /StartHttpGetTest. Output encoded using Base64 and zipped using GZIP. To get the QueryText you need to decode using Base64 then unzip using GZIP.

TestDateTime: string (date-time)
TestStatus: ResponseStatus
Example
{
  "ProbeInfo": {
    "ASN": 9600,
    "CityName": "Tokyo",
    "ConnectionType": "fiber",
    "CountryCode": "JP",
    "DNSResolver": "",
    "GeolocationAccuracy": 10000,
    "IPAddress": "211.9.53.171",
    "Latitude": 34.6551456,
    "Longitude": 133.9195019,
    "Network": "So-net Corporation",
    "Platform": "PC",
    "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
    "Version": "1.1"
  },
  "TestDateTime": "/Date(1510927973085+0000)/",
  "TestStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  },
  "ContentLength": -1,
  "Destination": "http://www.google.com",
  "DownloadedBytes": 102,
  "Status": "200",
  "TimeToFirstByte": 105,
  "TotalTime": 105
}

HttpTestResult: object

ProbeInfo: ProbeInfo
Status: string

HTTP status code

ContentLength: number
Destination: string
DownloadedBytes: number

Number of bytes downloaded from the destination url. This number is influenced by the MaxBytes parameter.

TimeToFirstByte: number
TotalTime: number

Time in milliseconds that took to retrieve all DownloadedBytes, inc. any initialization requests.

ConnectTime: number

TCP Connect Time in milliseconds. This can be measured only for HTTP endpoints and needs to be specified in TestResultProperties

Headers: string

Contains headers from HTTP response in clear text. This parameter will be empty unless you specify 'Headers' in HttpTestProperties object in call to /StartHttpTest.

Body: string

Contains body from HTTP response in clear text. This parameter will be empty unless you specify 'Body' in HttpTestProperties object in call to /StartHttpTest.

BinaryHeaders: string

Contains headers from HTTP response. This parameter will be empty unless you specify 'BinaryHeaders' in HttpTestProperties object in call to /StartHttpTest. Output encoded using Base64 and zipped using GZIP. To get the QueryText you need to decode using Base64 then unzip using GZIP.

BinaryBody: string

Contains body from HTTP response. This parameter will be empty unless you specify 'BinaryBody' in HttpTestProperties object in call to /StartHttpTest. Output encoded using Base64 and zipped using GZIP. To get the body you need to decode using Base64 then unzip using GZIP.

TestDateTime: string (date-time)
TestStatus: ResponseStatus
Example
{
  "ProbeInfo": {
    "ASN": 9600,
    "CityName": "Tokyo",
    "ConnectionType": "fiber",
    "CountryCode": "JP",
    "DNSResolver": "",
    "GeolocationAccuracy": 10000,
    "IPAddress": "211.9.53.171",
    "Latitude": 34.6551456,
    "Longitude": 133.9195019,
    "Network": "So-net Corporation",
    "Platform": "PC",
    "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
    "Version": "1.1"
  },
  "TestDateTime": "/Date(1510927973085+0000)/",
  "TestStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  },
  "ContentLength": -1,
  "Destination": "http://www.google.com",
  "DownloadedBytes": 102,
  "Status": "200",
  "TimeToFirstByte": 105,
  "TotalTime": 105
}

VideoTestSettings: object

TestCount: number

how many probes will be used for testing (for each source)

Sources: Source
VideoUrl: string

VideoUrl. For Youtube its recomended to set http://pcsucdn.com/YoutubeVideoTest2.html?v=Bw9zSMsKcwk. Success ratio of completed test relies heavily on chosen videoID (e.g. Bw9zSMsKcwk). VideoUrl can be also used to specify desired Video Quality using pw,ph and pq parameters e.g. http://pcsucdn.com/YoutubeVideoTest2.html?v=Bw9zSMsKcwk&pw=640&ph=360&pq=medium . For all available modes, look at following Youtube documentation: https://developers.google.com/youtube/iframe_api_reference#Playback_quality

VideoControlScript: string

jsVideoControlUrl. For Youtube its recommended to set Youtube-Empty.js

ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

TestResultProperties: string[]

List of properties of VideoTestResult which API should respond. By default we respond with VideoID, VideoResolution, VideoHostname, InitialBufferingStartupLatency, RebufferingTimes, DurationOfEachRebuffering, VideoPlayDuration, VideoPlayFinishEvent, TestDateTime. You can optionaly specify VideoDownloadSpeed

Example
{
  "testSettings": {
    "VideoUrl": "http://pcsucdn.com/YoutubeVideoTest.html?v=F4vEyqPcfqk",
    "VideoControlScript": "Youtube4.js",
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ],
    "TestResultProperties": [
      "VideoDownloadSpeed"
    ]
  }
}

VideoTestResponse: object

VideoTestResults: VideoTestResult
ResponseStatus: ResponseStatus
Example
{
  "VideoTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "VideoID": "string",
      "VideoResolution": "string",
      "VideoHostname": "string",
      "InitialBufferingLatency": "number",
      "RebufferingTimes": "number",
      "DurationOfEachRebuffering": "number",
      "VideoPlayDuration": "number",
      "VideoDownloadSpeed": "number",
      "VideoPlayFinishEvent": "string",
      "TestDateTime": "string (date-time)",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      }
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

VideoTestResult: object

ProbeInfo: ProbeInfo
VideoID: string
VideoResolution: string
VideoHostname: string
InitialBufferingLatency: number
RebufferingTimes: number
DurationOfEachRebuffering: number
VideoPlayDuration: number
VideoDownloadSpeed: number

Specified in kbps. You need to specify in TestResultProperties to have this available in results. Despite that, not all results have videoDownloadSpeed, that metric is taken by loading additional page from Youtube and that not always works. If results are missing for particular video result, then videoDownloadSpeed is missing from the list of properties.

VideoPlayFinishEvent: string
TestDateTime: string (date-time)
TestStatus: ResponseStatus
Example
{
  "ProbeInfo": {
    "ASN": 9600,
    "CityName": "Tokyo",
    "ConnectionType": "fiber",
    "CountryCode": "JP",
    "DNSResolver": "",
    "GeolocationAccuracy": 10000,
    "IPAddress": "211.9.53.171",
    "Latitude": 34.6551456,
    "Longitude": 133.9195019,
    "Network": "So-net Corporation",
    "Platform": "PC",
    "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
    "Version": "1.1"
  },
  "VideoID": "string",
  "VideoResolution": "string",
  "VideoHostname": "string",
  "InitialBufferingLatency": "number",
  "RebufferingTimes": "number",
  "DurationOfEachRebuffering": "number",
  "VideoPlayDuration": "number",
  "VideoDownloadSpeed": "number",
  "VideoPlayFinishEvent": "string",
  "TestDateTime": "string (date-time)",
  "TestStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

TracerouteTestSettings: object

BufferSize: number

Size of the packet data (default 32, max 65500)

Count: number

Number of pings to each hop (default 3, maximum 10)

Fragment: number

allow fragmentation of sending packets (default 1)

Ipv4only: number

Force using IPv4. If no IPv4 IP address is returned will return error (default 0)

Ipv6only: number

Force using IPv6. If no IPv6 IP address is returned will return error (default 0)

MaxFailedHops: number

Stop the command execution after maximum errors in a row (e.g. stop after 5 ping timeouts, default 0)

Resolve: number

IP addresses will be resolved to domain names for each hop (default 1)

Sleep: number

Sleep between pings as executed on one probe in milliseconds (default 300ms, max 5000ms)

Ttl: number

Max number of hops (default 32). If you specify more than 255, then it will default to 128.

TtlStart: number

First Hop from which the trace route should start (default 1)

TestCount: number

how many probes will be used for testing (for each source)

Timeout: number

Maximum time available to probes for testing in milliseconds (default 60000ms).

HopTimeout: number

Ping timeout in milliseconds that one ping can take in one hop (default 1000ms, max 5000ms).

Sources: Source
Destinations: string[]

List of destinations for testing (e.g. hostnames or IPs)

ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

TestResultProperties: string[]

List of properties of TracerouteTestResult which API should respond. By default we respond with Destination, HostName, IP, Tracert, TestDateTime.

Example
{
  "testSettings": {
    "BufferSize": 32,
    "Count": 3,
    "Fragment": 1,
    "Ipv4only": 0,
    "Ipv6only": 0,
    "MaxFailedHops": 0,
    "Resolve": 1,
    "Sleep": 300,
    "Ttl": 128,
    "TtlStart": 1,
    "Timeout": 60000,
    "HopTimeout": 1000,
    "TestCount": 10,
    "Sources": [
      {
        "CountryCode": "US"
      }
    ],
    "Destinations": [
      "www.google.com"
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

TracerouteTestResponse: object

TracerouteTestResults: TracerouteTestResult
ResponseStatus: ResponseStatus
Example
{
  "TracerouteTestResults": [
    {
      "ProbeInfo": {
        "ASN": 9600,
        "CityName": "Tokyo",
        "ConnectionType": "fiber",
        "CountryCode": "JP",
        "DNSResolver": "",
        "GeolocationAccuracy": 10000,
        "IPAddress": "211.9.53.171",
        "Latitude": 34.6551456,
        "Longitude": 133.9195019,
        "Network": "So-net Corporation",
        "Platform": "PC",
        "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
        "Version": "1.1"
      },
      "TestDateTime": "/Date(1510927973085+0000)/",
      "TestStatus": {
        "StatusCode": "200",
        "StatusText": "OK"
      },
      "Destination": "8.8.8.8",
      "HostName": "google-public-dns-a.google.com",
      "IP": "8.8.8.8",
      "Tracert": [
        {
          "HostName": "",
          "IP": "",
          "PingTimeArray": [
            null,
            null,
            null
          ]
        },
        {
          "HostName": "gv-rc0011-cr101-ae101-0.core.as9143.net",
          "IP": "213.51.174.209",
          "PingTimeArray": [
            "14",
            "11",
            "15"
          ]
        },
        {
          "HostName": "",
          "IP": "",
          "PingTimeArray": [
            null,
            null,
            null
          ]
        },
        {
          "HostName": "nl-ams14a-ri1-ae8-0.aorta.net",
          "IP": "84.116.135.38",
          "PingTimeArray": [
            "12",
            "20",
            "13"
          ]
        },
        {
          "HostName": "",
          "IP": "74.125.146.228",
          "PingTimeArray": [
            "11",
            "11",
            "12"
          ]
        },
        {
          "HostName": "",
          "IP": "108.170.241.129",
          "PingTimeArray": [
            "14",
            "10",
            "16"
          ]
        },
        {
          "HostName": "",
          "IP": "209.85.244.55",
          "PingTimeArray": [
            null,
            null,
            null
          ]
        },
        {
          "HostName": "google-public-dns-a.google.com",
          "IP": "8.8.8.8",
          "PingTimeArray": [
            "14",
            "11",
            "13"
          ]
        }
      ]
    }
  ],
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

TracertData: object

HostName: string

resolved hostname of the particular hop

IP: string

IP address of particular hop

PingTimeArray: number[]
Example
{
  "HostName": "string",
  "IP": "string",
  "PingTimeArray": [
    "number"
  ]
}

TracerouteTestResult: object

ProbeInfo: ProbeInfo
Destination: string

Destination as entered into StartTracert API call

HostName: string

Resolved hostname of the destination

IP: string

IP address of the destination

Tracert: TracertData
TestDateTime: string (date-time)
TestStatus: ResponseStatus
Example
{
  "ProbeInfo": {
    "ASN": 9600,
    "CityName": "Tokyo",
    "ConnectionType": "fiber",
    "CountryCode": "JP",
    "DNSResolver": "",
    "GeolocationAccuracy": 10000,
    "IPAddress": "211.9.53.171",
    "Latitude": 34.6551456,
    "Longitude": 133.9195019,
    "Network": "So-net Corporation",
    "Platform": "PC",
    "ProbeID": "1097c070-29d5-4fba-959a-b07f73e3a17b",
    "Version": "1.1"
  },
  "TestDateTime": "/Date(1510927973085+0000)/",
  "TestStatus": {
    "StatusCode": "200",
    "StatusText": "OK"
  },
  "Destination": "8.8.8.8",
  "HostName": "google-public-dns-a.google.com",
  "IP": "8.8.8.8",
  "Tracert": [
    {
      "HostName": "",
      "IP": "",
      "PingTimeArray": [
        null,
        null,
        null
      ]
    },
    {
      "HostName": "gv-rc0011-cr101-ae101-0.core.as9143.net",
      "IP": "213.51.174.209",
      "PingTimeArray": [
        "14",
        "11",
        "15"
      ]
    },
    {
      "HostName": "",
      "IP": "",
      "PingTimeArray": [
        null,
        null,
        null
      ]
    },
    {
      "HostName": "nl-ams14a-ri1-ae8-0.aorta.net",
      "IP": "84.116.135.38",
      "PingTimeArray": [
        "12",
        "20",
        "13"
      ]
    },
    {
      "HostName": "",
      "IP": "74.125.146.228",
      "PingTimeArray": [
        "11",
        "11",
        "12"
      ]
    },
    {
      "HostName": "",
      "IP": "108.170.241.129",
      "PingTimeArray": [
        "14",
        "10",
        "16"
      ]
    },
    {
      "HostName": "",
      "IP": "209.85.244.55",
      "PingTimeArray": [
        null,
        null,
        null
      ]
    },
    {
      "HostName": "google-public-dns-a.google.com",
      "IP": "8.8.8.8",
      "PingTimeArray": [
        "14",
        "11",
        "13"
      ]
    }
  ]
}

ResponseStatus: object

StatusCode: string
StatusText: string
Example
{
  "StatusCode": "200",
  "StatusText": "OK"
}

GetProbesSettings: object

Sources: Source
ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

Example
{
  "criteria": {
    "Sources": [
      {
        "CountryCode": "PL"
      }
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

GetNewProbesSettings: object

FromXMinutes: number

Number of minutes to look back to find new probes. Default is 15 minutes

Sources: Source
ProbeInfoProperties: string[]

List of properties of ProbeInfo which API should respond. By default we respond with probeID. Rest of the properties need to be specified

Example
{
  "criteria": {
    "FromXMinutes": 5,
    "Sources": [
      {
        "CountryCode": "PL"
      }
    ],
    "ProbeInfoProperties": [
      "Latitude",
      "Longitude",
      "ProbeID",
      "CountryCode",
      "CityName"
    ]
  }
}

StartTestResponse: object

TestID: string

ID of the API Call Test. use that ID in GetResults calls to retrieve the measurement results.

ResponseStatus: ResponseStatus
Example
{
  "TestID": "4b4e9ffd-93b0-4156-ae37-1d2887c2c719",
  "Status": {
    "StatusCode": "200",
    "StatusText": "OK"
  }
}

GetProbesResponse: object

Probes: ProbeInfo
ResponseStatus: ResponseStatus
Example
{
  "GetProbesResult": {
    "ResponseStatus": {
      "StatusCode": "200",
      "StatusText": "Test finished, you can retreive results now"
    },
    "Probes": [
      {
        "ASN": 5617,
        "CityName": "Gliwice",
        "ConnectionType": "Wireless80211",
        "CountryCode": "PL",
        "DNSResolver": "82.163.143.15",
        "GeolocationAccuracy": 10000,
        "IPAddress": "83.26.232.236",
        "Latitude": 50.1908,
        "Longitude": 18.4508,
        "Network": "Orange Polska",
        "NetworkID": 305,
        "Platform": "PC",
        "ProbeID": "c8c27774-e188-4625-82db-eb34c54a3841",
        "Version": "1.0.44.0"
      },
      {
        "ASN": 39603,
        "CityName": "Warsaw",
        "ConnectionType": "Wireless80211",
        "CountryCode": "PL",
        "DNSResolver": "185.89.185.1",
        "GeolocationAccuracy": 177,
        "IPAddress": "94.254.231.151",
        "Latitude": 52.238763,
        "Longitude": 21.114586,
        "Network": "Play",
        "NetworkID": 454,
        "Platform": "PC",
        "ProbeID": "0f69bf53-2479-48b7-95f6-a4c6a83bc531",
        "Version": "1.0.44.0"
      }
    ]
  }
}

GetCountriesResponse: object

Countries: CountryProbe
ResponseStatus: ResponseStatus
Example
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Test finished, you can retreive results now"
  },
  "Countries": [
    {
      "CountryCode": "FR",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/fr.png",
      "CountryName": "",
      "ProbesCount": 624
    },
    {
      "CountryCode": "DE",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/de.png",
      "CountryName": "",
      "ProbesCount": 1231
    },
    {
      "CountryCode": "US",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/us.png",
      "CountryName": "",
      "ProbesCount": 3413
    },
    {
      "CountryCode": "AU",
      "CountryFlag": "http://bscapi.blob.core.windows.net/bsc-img-country-logos/au.png",
      "CountryName": "",
      "ProbesCount": 431
    }
  ]
}

GetNetworksResponse: object

Networks: Network
ResponseStatus: ResponseStatus
Example
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Test finished, you can retreive results now"
  },
  "Networks": [
    {
      "CountryCode": null,
      "LogoURL": null,
      "NetworkID": "352",
      "NetworkName": "Servei de Telecomunicacions d'Andorra"
    }
  ]
}

GetCitiesResponse: object

Cities: CityProbe
ResponseStatus: ResponseStatus
Example
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Test finished, you can retreive results now"
  },
  "Cities": [
    {
      "CityName": "La Massana",
      "CountryCode": "AD",
      "ProbesCount": 1
    }
  ]
}

GetUsageStatsResponse: object

usageStats: UsageStat
ResponseStatus: ResponseStatus
Example
{
  "ResponseStatus": {
    "StatusCode": "200",
    "StatusText": "Stats retreived"
  },
  "usageStats": [
    {
      "Date": "/Date(1510931862112)/",
      "NumberOfTests": 264,
      "TestType": "PageLoad",
      "UsedBandwidth": 1563461720
    },
    {
      "Date": "/Date(1510931863520)/",
      "NumberOfTests": 3706,
      "TestType": "Ping",
      "UsedBandwidth": 1333800
    },
    {
      "Date": "/Date(1510931858559)/",
      "NumberOfTests": 165326,
      "TestType": "Traceroute",
      "UsedBandwidth": 823469520
    }
  ]
}

Network: object

ID: number
Name: string

ISP Organization as reported by MaxMind database.

Example
{
  "ID": 2153,
  "Name": "Cerberos s.r.o."
}