Diagnostic Tools API Resources

This section provides details on the API’s operations and request parameters.

API Summary

Operation Method Endpoint
Ghost Locations   (download RAML)
List Available Ghost Locations GET /diagnostic-tools/v2/ghost-locations/available
Run dig from a Ghost Location GET /diagnostic-tools/v2/ghost-locations/{locationId}/dig-info{?hostName,queryType}
Run mtr from a Ghost Location GET /diagnostic-tools/v2/ghost-locations/{locationId}/mtr-data{?destinationDomain,resolveDns}
Run curl from a Ghost Location POST /diagnostic-tools/v2/ghost-locations/{locationId}/curl-results
Get Log Lines from a Ghost Location GET /diagnostic-tools/v2/ghost-locations/{locationId}/log-lines{?endTime,arl,clientIp,cpCode,duration,hostHeader,httpStatusCode,logType,maxLogLines,objStatus,requestId,userAgent}
IP Addresses   (download RAML)
Get CDN Status GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/is-cdn-ip
Launch a CDN Status Request POST /diagnostic-tools/v2/ip-addresses/{ipAddress}/is-cdn-ip
Get an IP Address’s Geolocation GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/geo-location
Run dig from an IP Address GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/dig-info{?hostName,queryType}
Run mtr from an IP Address GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/mtr-data{?destinationDomain,resolveDns}
Run curl from an IP Address POST /diagnostic-tools/v2/ip-addresses/{ipAddress}/curl-results
Get Log Lines from an IP Address GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/log-lines{?endTime,arl,clientIp,cpCode,duration,hostHeader,httpStatusCode,logType,maxLogLines,objStatus,requestId,userAgent}
Is CDN IP Requests   (download RAML)
Check a CDN Status Request GET /diagnostic-tools/v2/is-cdn-ip-requests/{requestId}
Get CDN Status Asynchronously GET /diagnostic-tools/v2/is-cdn-ip-requests/{requestId}/is-cdn-ip
End Users   (download RAML)
Generate a Diagnostic Link for an End User POST /diagnostic-tools/v2/end-users/diagnostic-url
List End User Diagnostic Requests GET /diagnostic-tools/v2/end-users/ip-requests
Get an End User’s IP Addresses GET /diagnostic-tools/v2/end-users/ip-requests/{requestId}/ip-details
Global Traffic Management   (download RAML)
List GTM Properties GET /diagnostic-tools/v2/gtm/gtm-properties
List a GTM Property’s IP Addresses GET /diagnostic-tools/v2/gtm/{property}/{domain}/gtm-property-ips
Estats   (download RAML)
Get Error Statistics GET /diagnostic-tools/v2/estats{?url}
Launch an Error Stats Request POST /diagnostic-tools/v2/estats
CP Codes   (download RAML)
Get CP Code Error Stats GET /diagnostic-tools/v2/cpcodes/{cpCode}/estats
Launch a CP Code Error Stats Request POST /diagnostic-tools/v2/cpcodes/{cpCode}/estats
Estats Requests   (download RAML)
Check an Error Stats Request GET /diagnostic-tools/v2/estats-requests/{requestId}
Get Error Statistics Asynchronously GET /diagnostic-tools/v2/estats-requests/{requestId}/estats
Translated Errors   (download RAML)
Translate an Error GET /diagnostic-tools/v2/errors/{errorCode}/translated-error
Launch an Error Translation Request POST /diagnostic-tools/v2/errors/{errorCode}/translate-error
Translate Error Requests   (download RAML)
Check an Error Translation Request GET /diagnostic-tools/v2/translate-error-requests/{requestId}
Translate an Error Asynchronously GET /diagnostic-tools/v2/translate-error-requests/{requestId}/translated-error
URL Debugger   (download RAML)
Debug a URL GET /diagnostic-tools/v2/url-debug{?url,edgeIp,header}
Launch a URL Debug Request POST /diagnostic-tools/v2/url-debug
URL Debugger Requests   (download RAML)
Check a URL Debug Request GET /diagnostic-tools/v2/url-debug-requests/{requestId}
Debug a URL Asynchronously GET /diagnostic-tools/v2/url-debug-requests/{requestId}/debugged-url
Translated URLs   (download RAML)
Get a Translated URL GET /diagnostic-tools/v2/translated-url{?url}

List Available Ghost Locations

Lists active Akamai edge server locations from which you can run diagnostic tools. Use any id value from the response object for use in other ghost location-based operations. See Location for details on the response object.

GET /diagnostic-tools/v2/ghost-locations/available

Status 200 application/json

Response Body:

{
    "locations": [
        {
            "id": "oakbrook-il-unitedstates",
            "value": "Oakbrook, IL, United States"
        },
        {
            "id": "santiago-chile",
            "value": "Santiago, Chile"
        },
        {
            "id": "jakarta-indonesia",
            "value": "Jakarta, Indonesia"
        },
        {
            "id": "moscow-russianfederation",
            "value": "Moscow, Russian Federation"
        },
        {
            "id": "hongkong-hongkong",
            "value": "Hongkong, Hong Kong"
        }
    ]
}

Run dig from a Ghost Location

Run dig on a hostname to get DNS information, associating hostnames and IP addresses, from a location within the Akamai network not local to you. Specify any locationId parameter from the output of List Available Ghost Locations. Specify the hostName as a query parameter, and an optional DNS queryType. See the Dig object for details on the response data.

GET /diagnostic-tools/v2/ghost-locations/{locationId}/dig-info{?hostName,queryType}

Sample: /diagnostic-tools/v2/ghost-locations/NewYork-US/dig-info?hostName=www.test.com&queryType=A

Parameter Type Sample Description
URL Parameters
locationId String NewYork-US The location on the Akamai edge network from which you want to test connectivity. Run the List Available Ghost Locations operation for values.
Required Query Parameters
hostName String www.test.com The hostname to which to run the test.
Optional Query Parameters
queryType Enumeration A The type of DNS record, either A, AAAA, CNAME, MX, NS, PTR, or SOA. The default is A.

Status 200 application/json

Response Body:

{
    "digInfo": {
        "answerSection": [
            {
                "preferenceValues": null,
                "domain": "www.example.com.",
                "recordType": "A",
                "value": "NN.NN.NN.NN",
                "ttl": 5,
                "recordClass": "IN"
            }
        ],
        "hostname": "www.example.com.",
        "authoritySection": [
            {
                "preferenceValues": null,
                "domain": "example.com.",
                "recordType": "NS",
                "value": "a.example.net.",
                "ttl": 86399,
                "recordClass": "IN"
            },
            {
                "preferenceValues": null,
                "domain": "example.com.",
                "recordType": "NS",
                "value": "b.example.net.",
                "ttl": 86399,
                "recordClass": "IN"
            }
        ],
        "queryType": "A",
        "result": "\n; <<>> DiG 9.8.1-P1 <<>> www.example.com -t A\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59761\n;; "
    }
}

Run mtr from a Ghost Location

Run mtr to check connectivity between a domain and a location within the Akamai network not local to you. Specify any locationId parameter from the output of List Available Ghost Locations. Specify the destinationDomain to which you want to test connectivity. Optionally specify resolveDns to use DNS to resolve hostnames. The output shows the network hops a packet of data takes, and the duration of each hop. See the Mtr object for details on the response data.

GET /diagnostic-tools/v2/ghost-locations/{locationId}/mtr-data{?destinationDomain,resolveDns}

Sample: /diagnostic-tools/v2/ghost-locations/NewYork-US/mtr-data?destinationDomain=developer.test.com&resolveDns=true

Parameter Type Sample Description
URL Parameters
locationId String NewYork-US The location on the Akamai edge network from which you want to test connectivity. Run the List Available Ghost Locations operation for values.
Required Query Parameters
destinationDomain String developer.test.com The domain name to which to test connectivity.
Optional Query Parameters
resolveDns Boolean true Whether to use DNS to resolve hostnames. When disabled, output features only IP addresses.

Status 200 application/json

Response Body:

{
    "mtr": {
        "packetLoss": 0.0,
        "hops": [
            {
                "loss": 0.0,
                "last": 0.2,
                "number": 1,
                "host": "NNNN:NNN:N:NNN::N",
                "worst": 0.8,
                "sent": 10,
                "stDev": 0.0,
                "avg": 0.3,
                "best": 0.2
            },
            {
                "loss": 0.0,
                "last": 0.3,
                "number": 2,
                "host": "XXN-NNN.XXXNN.example.net",
                "worst": 33.9,
                "sent": 10,
                "stDev": 10.7,
                "avg": 4.6,
                "best": 0.3
            },
            {
                "loss": 0.0,
                "last": 0.6,
                "number": 3,
                "host": "XX-N-N-N.XXXNN.example.net",
                "worst": 0.6,
                "sent": 10,
                "stDev": 0.0,
                "avg": 0.4,
                "best": 0.3
            }
        ],
        "destination": "www.example.com",
        "analysis": "",
        "source": "123.123.123.123",
        "host": "aNNN-NNN-NNN-NN.deploy.example.net",
        "avgLatency": 0.3,
        "result": "Start: Thu Feb 25 22:01:09 2016\nHOST: aNNN-NNN-NNN-NNN.deploy.net Loss% Snt Last Avg Best Wrst StDev\n 1.|-- NNNN:NNNN:NN::N 0.0% 10 0.7 0.6 0.5 0.7 0.0\n 2.|-- NNNN:NNN::NNN 0.0% 10 1.4 1.4 1.2 1.4 0.0\n 3.|-- NNN:NNNN:NN:NNN::NNNN 0.0% 10 0.7 0.6 0.6 0.7 0.0\n",
        "startTime": "2016-02-01T23:49:01Z"
    }
}

Run curl from a Ghost Location

Run curl based on a location within the Akamai network. Specify any locationId parameter from the output of List Available Ghost Locations. In the request object, specify a url to download and userAgent. See the Curl object for details on the response data.

POST /diagnostic-tools/v2/ghost-locations/{locationId}/curl-results

Sample: /diagnostic-tools/v2/ghost-locations/NewYork-US/curl-results

Content-Type: application/json

Request Body:

{
    "url": "http://developer.test.com/index.html",
    "userAgent": "Mozilla/5.0"
}
Parameter Type Sample Description
URL Parameters
locationId String NewYork-US The location on the Akamai edge network from which you want to test connectivity. Run the List Available Ghost Locations operation for values.

Status 200 application/json

Response Body:

{
    "curlResults": {
        "responseBody": "HTTP/1.1 403 Forbidden\nServer: AkamaiGHost\r\nMime-Version: 1.0\r\nContent-Type: text/html\r\nContent-Length: 270\r\nExpires: Fri, 22 Jan 2016 02:01:42 GMT\r\nDate: Fri, 22 Jan 2016 02:01:42 GMT\r\nConnection: close\r\n<HTML><HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD><BODY>\n<H1>Access Denied</H1>\n \nYou don't have permission to access \"http://www.akamai.co.jp/\" on this server.<P>\nReference #1.f7e1aagd.1453428102.7329a0q1\n</BODY>\n</HTML>\n",
        "responseHeaders": {
            "Content-Length": "270",
            "Expires": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Server": "AkamaiGHost",
            "Connection": "close",
            "Date": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Content-Type": "text/html",
            "Mime-Version": "1.0"
        },
        "httpStatusCode": 403
    }
}

Get Log Lines from a Ghost Location

Lists log lines from a location within the Akamai network, using parameters to filter the data. Logs provide low-level details on how each request was handled, which you can use to troubleshoot caching and performance issues, and to ensure the correct set of Akamai features was applied to the traffic. Data is generally available for 48 hours after the traffic occurs. Specify any locationId parameter from the output of List Available Ghost Locations. See the LogLines object for details on the response data.

GET /diagnostic-tools/v2/ghost-locations/{locationId}/log-lines{?endTime,arl,clientIp,cpCode,duration,hostHeader,httpStatusCode,logType,maxLogLines,objStatus,requestId,userAgent}

Sample: /diagnostic-tools/v2/ghost-locations/NewYork-US/log-lines?endTime=2016–02–01%2022%3A23%3A00&arl=www.example.com&clientIp=123.123.13.123&cpCode=12345&duration=30&hostHeader=www.example.com&httpStatusCode=500&logType=r&maxLogLines=200&objStatus=d&requestId=22828292&userAgent=Chrome

Parameter Type Sample Description
URL Parameters
locationId String NewYork-US The location on the Akamai edge network from which you want to test connectivity. Run the List Available Ghost Locations operation for values.
Required Query Parameters
endTime String 2016-02-01 22:23:00 An ISO 8601 timestamp for a point of time in the past when the log search window ends.
Optional Query Parameters
arl String www.example.com Filter by the ARL log field value.
clientIp String 123.123.13.123 Filter by IP address specified in the Client-IP log field.
cpCode Integer 12345 Filter by CP code.
duration Integer 30 The number of minutes before the endTime for which to collect logs, 30 by default, and a maximum 360 for six hours.
hostHeader String www.example.com Filter by the Host header log field value.
httpStatusCode Integer 500 Filter by HTTP status code.
logType Enumeration r Filter the type of log lines, either r for incoming client requests, or f for requests to other edge servers or to the origin server. Any f log type specifying a Forward-IP in the 10.x.x.x range means the request was forwarded to another edge server.
maxLogLines Integer 200 The maximum number of log lines to include in the results, 200 by default and no more than 1000.
objStatus String d Filter by single-character code that provides details the requested content. See Object Status Codes for details on each code.
requestId String 22828292 The end user requestId to filter by. This is the same value that identifies an end user’s diagnostic URL.
userAgent String Chrome Filter by the User-Agent log field.

Status 200 application/json

Response Body:

{
    "logLines": {
        "headers": "date time\tlog-type\tcs-ip\tfw-ip\tcs-method\tcs-uri\tcs-status\tcontent-type\tbytes_served\tbytes_received\tobj-size\ttime-taken\tcs(referer)\tcs(user-agent)\tcs(cookie)\terror\tssl-version\thost-header",
        "logs": [
            "04/13/2017 22:33\tf\t127.0.0.1\t127.0.0.1\tGET\t/L/507/106471/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t-\t316\t-\t0\t-\t-\t-\t-\t-\t-",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106471/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t572\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\t-\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/static_content/images/sprite/sister-brands-2x.png&I=1.1.1.1\t200\ttext/html\t506\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_2_a.jpg&I=1.1.1.1\t200\ttext/html\t547\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/desktop/041117_US_EC_HP_ANIM_DESK_main1_a.jpg&I=1.1.1.1\t200\ttext/html\t548\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_sculpt_2x.jpg&I=1.1.1.1\t200\ttext/html\t553\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/176/507/assets/desktop/040417_US_EC_HP_DESK_free_video.jpg&I=1.1.1.1\t200\ttext/html\t548\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_2_b.jpg&I=1.1.1.1\t200\ttext/html\t549\t-\t0\t1\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/158/364/assets/041317_Spring_Sale_HP_BANNER_without_CTA_US.gif&I=1.1.1.1\t200\ttext/html\t550\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tf\t127.0.0.1\t127.0.0.1\tGET\t/D/507/106481/000/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t-\t367\t-\t0\t-\t-\t-\t-\t-\t-",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/D/507/106481/000/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t512\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net"
        ]
    }
}

NOTE: Log searches by server location may yield empty data for content served from the Secure Content Delivery Network (ESSL). In that case, Run dig from a Ghost Location to get the IP address, then Get Log Lines from an IP Address. The edge IP address is also available in origin server logs, in response headers for specific HTTP requests, and in a secure ESSL domain’s DNS resolution.

Get CDN Status

Checks whether the specified ipAddress is part of the Akamai edge network. The IsCdnIp response reflects this as a boolean. This operation gets the data directly. To avoid any latency problems, run Launch a CDN Status Request to access the data asynchronously.

GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/is-cdn-ip

Sample: /diagnostic-tools/v2/ip-addresses/1.1.1.1/is-cdn-ip

Parameter Type Sample Description
URL Parameters
ipAddress String 1.1.1.1 The IP address of the server from which to run the diagnostics test.

Status 200 application/json

Response Body:

{
    "isCdnIp": false
}

Launch a CDN Status Request

Provides the same functionality as the Get CDN Status operation, but this launches a request to retrieve the data asynchronously. Check the PollResponse’s link after the retryAfter interval or use the requestId to Check a CDN Status Request. For details, see Asynchronous Requests.

POST /diagnostic-tools/v2/ip-addresses/{ipAddress}/is-cdn-ip

Sample: /diagnostic-tools/v2/ip-addresses/1.1.1.1/is-cdn-ip

Parameter Type Sample Description
URL Parameters
ipAddress String 1.1.1.1 The IP address of the server from which to run the diagnostics test.

Status 202 application/json

Response Body:

{
    "retryAfter": 3,
    "link": "/is-cdn-ip-requests/1.1.1.1",
    "requestId": "88972782"
}

Get an IP Address’s Geolocation

Provides the geolocation for an ipAddress within the Akamai network. This operation’s requests are limited to 500 per day. See the Geolocation object for details on the response data.

GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/geo-location

Sample: /diagnostic-tools/v2/ip-addresses/1.1.1.1/geo-location

Parameter Type Sample Description
URL Parameters
ipAddress String 1.1.1.1 The IP address of the server from which to run the diagnostics test.

Status 200 application/json

Response Body:

{
    "geoLocation": {
        "dma": 501,
        "network": null,
        "countryCode": "US",
        "city": "NEWYORK",
        "areaCode": "212, 213",
        "pmsa": 5600,
        "zipCode": "10001-10014+10016-10041+10043-10045+10055+10060+10065",
        "longitude": -73.9967,
        "county": "NEWYORK",
        "regionCode": "NY",
        "fips": "36061",
        "proxy": null,
        "timeZone": "EST",
        "latitude": 40.75,
        "networkType": null,
        "clientIp": "NNN.NNN.NNN.NNN",
        "throughput": "vhigh",
        "continent": "NA",
        "msa": 5602,
        "asNum": 1299
    }
}

Run dig from an IP Address

Run dig on a hostname to get DNS information, associating hostnames and IP addresses, from an IP address within the Akamai network not local to you. Specify the hostName as a query parameter, and an optional DNS queryType. See the Dig object for details on the response data.

GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/dig-info{?hostName,queryType}

Sample: /diagnostic-tools/v2/ip-addresses/1.1.1.1/dig-info?hostName=www.test.com&queryType=A

Parameter Type Sample Description
URL Parameters
ipAddress String 1.1.1.1 The IP address of the server from which to run the diagnostics test.
Required Query Parameters
hostName String www.test.com The hostname to which to run the test.
Optional Query Parameters
queryType Enumeration A The type of DNS record, either A, AAAA, CNAME, MX, NS, PTR, or SOA. The default is A.

Status 200 application/json

Response Body:

{
    "digInfo": {
        "answerSection": [
            {
                "preferenceValues": null,
                "domain": "www.example.com.",
                "recordType": "A",
                "value": "NN.NN.NN.NN",
                "ttl": 5,
                "recordClass": "IN"
            }
        ],
        "hostname": "www.example.com.",
        "authoritySection": [
            {
                "preferenceValues": null,
                "domain": "example.com.",
                "recordType": "NS",
                "value": "a.example.net.",
                "ttl": 86399,
                "recordClass": "IN"
            },
            {
                "preferenceValues": null,
                "domain": "example.com.",
                "recordType": "NS",
                "value": "b.example.net.",
                "ttl": 86399,
                "recordClass": "IN"
            }
        ],
        "queryType": "A",
        "result": "\n; <<>> DiG 9.8.1-P1 <<>> www.example.com -t A\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59761\n;; "
    }
}

Run mtr from an IP Address

Run mtr to check connectivity between a domain and an IP address within the Akamai network. Specify the destinationDomain to which you want to test connectivity. Optionally specify resolveDns to use DNS to resolve hostnames. The output shows the network hops a packet of data takes, and the duration of each hop. See the Mtr object for details on the response data.

GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/mtr-data{?destinationDomain,resolveDns}

Sample: /diagnostic-tools/v2/ip-addresses/1.1.1.1/mtr-data?destinationDomain=developer.test.com&resolveDns=true

Parameter Type Sample Description
URL Parameters
ipAddress String 1.1.1.1 The IP address of the server from which to run the diagnostics test.
Required Query Parameters
destinationDomain String developer.test.com The domain name to which to test connectivity.
Optional Query Parameters
resolveDns Boolean true Whether to use DNS to resolve hostnames. When disabled, output features only IP addresses.

Status 200 application/json

Response Body:

{
    "mtr": {
        "packetLoss": 0.0,
        "hops": [
            {
                "loss": 0.0,
                "last": 0.2,
                "number": 1,
                "host": "NNNN:NNN:N:NNN::N",
                "worst": 0.8,
                "sent": 10,
                "stDev": 0.0,
                "avg": 0.3,
                "best": 0.2
            },
            {
                "loss": 0.0,
                "last": 0.3,
                "number": 2,
                "host": "XXN-NNN.XXXNN.example.net",
                "worst": 33.9,
                "sent": 10,
                "stDev": 10.7,
                "avg": 4.6,
                "best": 0.3
            },
            {
                "loss": 0.0,
                "last": 0.6,
                "number": 3,
                "host": "XX-N-N-N.XXXNN.example.net",
                "worst": 0.6,
                "sent": 10,
                "stDev": 0.0,
                "avg": 0.4,
                "best": 0.3
            }
        ],
        "destination": "www.example.com",
        "analysis": "",
        "source": "123.123.123.123",
        "host": "aNNN-NNN-NNN-NN.deploy.example.net",
        "avgLatency": 0.3,
        "result": "Start: Thu Feb 25 22:01:09 2016\nHOST: aNNN-NNN-NNN-NNN.deploy.net Loss% Snt Last Avg Best Wrst StDev\n 1.|-- NNNN:NNNN:NN::N 0.0% 10 0.7 0.6 0.5 0.7 0.0\n 2.|-- NNNN:NNN::NNN 0.0% 10 1.4 1.4 1.2 1.4 0.0\n 3.|-- NNN:NNNN:NN:NNN::NNNN 0.0% 10 0.7 0.6 0.6 0.7 0.0\n",
        "startTime": "2016-02-01T23:49:01Z"
    }
}

Run curl from an IP Address

Run curl based on an IP address within the Akamai network. In the request object, specify a url to download and userAgent. Specify a parameter for the ipAddress you want to test. See the Curl object for details on the response data.

POST /diagnostic-tools/v2/ip-addresses/{ipAddress}/curl-results

Sample: /diagnostic-tools/v2/ip-addresses/1.1.1.1/curl-results

Content-Type: application/json

Request Body:

{
    "url": "http://developer.test.com/index.html",
    "userAgent": "Mozilla/5.0"
}
Parameter Type Sample Description
URL Parameters
ipAddress String 1.1.1.1 The IP address of the server from which to run the diagnostics test.

Status 200 application/json

Response Body:

{
    "curlResults": {
        "responseBody": "HTTP/1.1 403 Forbidden\nServer: AkamaiGHost\r\nMime-Version: 1.0\r\nContent-Type: text/html\r\nContent-Length: 270\r\nExpires: Fri, 22 Jan 2016 02:01:42 GMT\r\nDate: Fri, 22 Jan 2016 02:01:42 GMT\r\nConnection: close\r\n<HTML><HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD><BODY>\n<H1>Access Denied</H1>\n \nYou don't have permission to access \"http://www.akamai.co.jp/\" on this server.<P>\nReference #1.f7e1aagd.1453428102.7329a0q1\n</BODY>\n</HTML>\n",
        "responseHeaders": {
            "Content-Length": "270",
            "Expires": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Server": "AkamaiGHost",
            "Connection": "close",
            "Date": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Content-Type": "text/html",
            "Mime-Version": "1.0"
        },
        "httpStatusCode": 403
    }
}

Get Log Lines from an IP Address

Lists log lines from an IP address within the Akamai network, using parameters to filter the data. Logs provide low-level details on how each request was handled, which you can use to troubleshoot caching and performance issues, and to ensure the correct set of Akamai features was applied to the traffic. Data is generally available for 48 hours after the traffic occurs. See the LogLines object for details on the response data.

GET /diagnostic-tools/v2/ip-addresses/{ipAddress}/log-lines{?endTime,arl,clientIp,cpCode,duration,hostHeader,httpStatusCode,logType,maxLogLines,objStatus,requestId,userAgent}

Sample: /diagnostic-tools/v2/ip-addresses/1.1.1.1/log-lines?endTime=2016–02–01%2022%3A23%3A00&arl=www.example.com&clientIp=123.123.13.123&cpCode=12345&duration=30&hostHeader=www.example.com&httpStatusCode=500&logType=r&maxLogLines=200&objStatus=d&requestId=22828292&userAgent=Chrome

Parameter Type Sample Description
URL Parameters
ipAddress String 1.1.1.1 The IP address of the server from which to run the diagnostics test.
Required Query Parameters
endTime String 2016-02-01 22:23:00 An ISO 8601 timestamp for a point of time in the past when the log search window ends.
Optional Query Parameters
arl String www.example.com Filter by the ARL log field value.
clientIp String 123.123.13.123 Filter by IP address specified in the Client-IP log field.
cpCode Integer 12345 Filter by CP code.
duration Integer 30 The number of minutes before the endTime for which to collect logs, 30 by default, and a maximum 360 for six hours.
hostHeader String www.example.com Filter by the Host header log field value.
httpStatusCode Integer 500 Filter by HTTP status code.
logType Enumeration r Filter the type of log lines, either r for incoming client requests, or f for requests to other edge servers or to the origin server. Any f log type specifying a Forward-IP in the 10.x.x.x range means the request was forwarded to another edge server.
maxLogLines Integer 200 The maximum number of log lines to include in the results, 200 by default and no more than 1000.
objStatus String d Filter by single-character code that provides details the requested content. See Object Status Codes for details on each code.
requestId String 22828292 The end user requestId to filter by. This is the same value that identifies an end user’s diagnostic URL.
userAgent String Chrome Filter by the User-Agent log field.

Status 200 application/json

Response Body:

{
    "logLines": {
        "headers": "date time\tlog-type\tcs-ip\tfw-ip\tcs-method\tcs-uri\tcs-status\tcontent-type\tbytes_served\tbytes_received\tobj-size\ttime-taken\tcs(referer)\tcs(user-agent)\tcs(cookie)\terror\tssl-version\thost-header",
        "logs": [
            "04/13/2017 22:33\tf\t127.0.0.1\t127.0.0.1\tGET\t/L/507/106471/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t-\t316\t-\t0\t-\t-\t-\t-\t-\t-",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106471/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t572\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\t-\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/static_content/images/sprite/sister-brands-2x.png&I=1.1.1.1\t200\ttext/html\t506\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_2_a.jpg&I=1.1.1.1\t200\ttext/html\t547\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/desktop/041117_US_EC_HP_ANIM_DESK_main1_a.jpg&I=1.1.1.1\t200\ttext/html\t548\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_sculpt_2x.jpg&I=1.1.1.1\t200\ttext/html\t553\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/176/507/assets/desktop/040417_US_EC_HP_DESK_free_video.jpg&I=1.1.1.1\t200\ttext/html\t548\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_2_b.jpg&I=1.1.1.1\t200\ttext/html\t549\t-\t0\t1\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/158/364/assets/041317_Spring_Sale_HP_BANNER_without_CTA_US.gif&I=1.1.1.1\t200\ttext/html\t550\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tf\t127.0.0.1\t127.0.0.1\tGET\t/D/507/106481/000/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t-\t367\t-\t0\t-\t-\t-\t-\t-\t-",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/D/507/106481/000/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/assets/common/backgroundtile.gif&I=1.1.1.1\t200\ttext/html\t512\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net"
        ]
    }
}

Check a CDN Status Request

After running the Launch a CDN Status Request operation, this checks the status of an asynchronous request for data. A 200 PollResponse with a Retry-After header indicates the request is still processing. When the data is ready, a 303 response provides a Location header where you can GET the data using the Get CDN Status Asynchronously operation.

GET /diagnostic-tools/v2/is-cdn-ip-requests/{requestId}

Sample: /diagnostic-tools/v2/is-cdn-ip-requests/67368292

Parameter Type Sample Description
URL Parameters
requestId String 67368292 Unique identifier for each asynchronous request to check CDN status, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Headers:

Retry-After: 3

Response Body:

{
    "retryAfter": 3,
    "link": "/is-cdn-ip-requests/1.1.1.1",
    "requestId": "88972782"
}

Status 303

Headers:

Location: /is-cdn-ip-requests/67368292/is-cdn-ip

Get CDN Status Asynchronously

Provides the same functionality as the Get CDN Status operation, but accesses the data asynchronously after running Launch a CDN Status Request. Data is available at this operation’s URL for at least 24 hours. See Asynchronous Requests for details.

GET /diagnostic-tools/v2/is-cdn-ip-requests/{requestId}/is-cdn-ip

Sample: /diagnostic-tools/v2/is-cdn-ip-requests/67368292/is-cdn-ip

Parameter Type Sample Description
URL Parameters
requestId String 67368292 Unique identifier for each asynchronous request to check CDN status, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Response Body:

{
    "isCdnIp": false
}

Generate a Diagnostic Link for an End User

Generates a unique link to send to a user to diagnose a problem. After the user loads the diagnostic link in a browser, run List End User Diagnostic Requests to be able to access associated data. In the DiagnosticUrlRequest object, specify an endUserName with which to identify the user, and a url you want to simulate the user loading. From the response object, send the diagnosticUrl to the end user with instructions to load it in a browser or with any client that calls it with the GET method.

POST /diagnostic-tools/v2/end-users/diagnostic-url

Content-Type: application/json

Request Body:

{
    "endUserName": "name",
    "url": "www.test.com"
}

Status 200 application/json

Response Body:

{
    "diagnosticUrl": "http://www.ipdiagnostics.com/request.action?client=test&portalSessionID=58854408213&URL=www.test.com"
}

List End User Diagnostic Requests

List users who have loaded diagnostic links over the past six months. After you Generate a Diagnostic Link for an End User, run this operation and, from the response array, match the endUserName and url from the original request. Use the accompanying requestId to Get an End User’s IP Addresses for diagnostic details. End users not present in the list have not yet loaded the diagnostic links provided to them.

GET /diagnostic-tools/v2/end-users/ip-requests

Status 200 application/json

Response Body:

{
    "endUserIpRequests": [
        {
            "endUserName": "name",
            "url": "www.test.com",
            "requestId": "314908841",
            "timestamp": "2015-09-30T00:00:00Z"
        },
        {
            "endUserName": "sample",
            "url": "www.example.com",
            "requestId": "312512835",
            "timestamp": "2015-09-30T00:00:00Z"
        }
    ]
}

Get an End User’s IP Addresses

Gets details on IP addresses used for an end user’s diagnostic link test. To get this data, you first need to Generate a Diagnostic Link for an End User, have the user load it in a browser, then List End User Diagnostic Requests to obtain the requestId parameter needed to run this operation. See EndUserIpDetails for details on the response data.

GET /diagnostic-tools/v2/end-users/ip-requests/{requestId}/ip-details

Sample: /diagnostic-tools/v2/end-users/ip-requests/462562/ip-details

Parameter Type Sample Description
URL Parameters
requestId String 462562 Unique identifier for each end user diagnostic link test.

Status 200 application/json

Response Body:

{
    "endUserIpDetails": {
        "name": "sample",
        "url": "www.example.com",
        "timestamp": "2015-09-30T00:00:00Z",
        "ips": [
            {
                "ip": "NN.NN.NN.NN",
                "location": "SEOUL, KR",
                "ipType": "client",
                "description": "Client IP"
            },
            {
                "ip": "NN.NN.NN.NN",
                "location": "CAMBRIDGE, MA US",
                "ipType": "dns",
                "description": "Client DNS IP"
            },
            {
                "ip": "NN.NN.NN.NNN",
                "location": "TOKYO, 13 JP",
                "ipType": "ipv6",
                "description": "Preferred IP"
            },
            {
                "ip": "NN.NN.NN.NN",
                "location": "CHICAGO, IL US",
                "ipType": "edge",
                "description": "CDN Edge Server IP"
            }
        ],
        "email": null,
        "browser": "Mozilla 5.0 / Macintosh"
    }
}

List GTM Properties

List all Global Traffic Management properties (subdomains) to which you have access. See the response’s GtmProperty object for details.

GET /diagnostic-tools/v2/gtm/gtm-properties

Status 200 application/json

Response Body:

{
    "gtmProperties": [
        {
            "property": "origin",
            "domain": "akadns.net",
            "hostName": "origin.akadns.net"
        },
        {
            "property": "origin-r3h",
            "domain": "akadns.net",
            "hostName": "origin-r3h.akadns.net"
        }
    ]
}

List a GTM Property’s IP Addresses

Gets test and target IPs for a domain and property. Run List GTM Properties for domain and property parameter values. See GtmPropertyIps for details on the response data.

GET /diagnostic-tools/v2/gtm/{property}/{domain}/gtm-property-ips

Sample: /diagnostic-tools/v2/gtm/origin/akadns.net/gtm-property-ips

Parameter Type Sample Description
URL Parameters
property String origin The Global Traffic Management property for which to collect IPs.
domain String akadns.net The Global Traffic Management domain to which the property subdomain belongs.

Status 200 application/json

Response Body:

{
    "gtmPropertyIps": {
        "testIps": [
            "65.173.24.245",
            "205.234.225.130",
            "204.2.160.183",
            "63.239.233.161",
            "72.247.124.172",
            "24.143.192.221",
            "72.246.193.231"
        ],
        "domain": "akadns.net",
        "property": "origin",
        "targetIps": [
            "204.8.50.81"
        ]
    }
}

Get Error Statistics

Get error statistics on a URL’s traffic from edge servers to both clients and the origin. Specify a url parameter in the request. See Estats for information on the response object. This operation gets the data directly. To avoid any latency problems, run Launch an Error Stats Request to access the data asynchronously.

GET /diagnostic-tools/v2/estats{?url}

Sample: /diagnostic-tools/v2/estats?url=http%3A//www.test.com

Parameter Type Sample Description
Required Query Parameters
url String http://www.test.com The URL for which to gather error statistics.

Status 200 application/json

Response Body:

{
    "eStats": {
        "cpCode": 11111,
        "edgeHits": 3534,
        "topEdgeIpsWithError": [
            {
                "hits": 7,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "pxR",
                "region": 16031,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            },
            {
                "hits": 5,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "pxR",
                "region": 20321,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            }
        ],
        "originFailurePercentage": 20.0,
        "edgeErrors": 188,
        "topEdgeIpsWithErrorFromOrigin": [
            {
                "hits": 15,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxPRW&httpStatusCode=401&endTime=1444408174",
                "objectStatus": "aoxPRW",
                "region": 23308,
                "httpStatus": 401,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            },
            {
                "hits": 12,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxCPRW&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "aoxCPRW",
                "region": 20449,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            }
        ],
        "topEdgeIpsWithSuccess": [
            {
                "hits": 13,
                "objectStatus": "pxR",
                "edgeI": "NN.NN.NN.NN",
                "region": 21524,
                "httpStatus": 302,
                "errorCode": "0:None",
                "ghostLog": null
            },
            {
                "hits": 9,
                "objectStatus": "pxR",
                "region": 24168,
                "httpStatus": 302,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN",
                "ghostLog": null
            }
        ],
        "edgeStatusCodeDistribution": [
            {
                "hits": 2942,
                "httpStatus": 200,
                "percentage": 83.0
            },
            {
                "hits": 152,
                "httpStatus": 304,
                "percentage": 4.0
            },
            {
                "hits": 137,
                "httpStatus": 302,
                "percentage": 3.0
            },
            {
                "hits": 80,
                "httpStatus": 400,
                "percentage": 2.0
            },
            {
                "hits": 74,
                "httpStatus": 401,
                "percentage": 2.0
            },
            {
                "hits": 68,
                "httpStatus": 404,
                "percentage": 1.0
            }
        ],
        "originStatusCodeDistribution": [
            {
                "hits": 404,
                "httpStatus": 200,
                "percentage": 52.0
            },
            {
                "hits": 112,
                "httpStatus": 302,
                "percentage": 14.0
            },
            {
                "hits": 75,
                "httpStatus": 400,
                "percentage": 9.0
            },
            {
                "hits": 71,
                "httpStatus": 401,
                "percentage": 9.0
            },
            {
                "hits": 44,
                "httpStatus": 404,
                "percentage": 5.0
            }
        ],
        "originHits": 765,
        "originErrors": 152,
        "topEdgeIpsWithSuccessFromOrigin": [],
        "edgeFailurePercentage": 5.0
    }
}

Launch an Error Stats Request

Provides the same functionality as the Get Error Statistics operation, but this launches a request to retrieve the data asynchronously. Instead of a query parameter, supply an EstatsRequest object containing the url for which you want error statistics. Check the PollResponse’s link after the retryAfter interval or use the requestId to Check an Error Stats Request. For details, see Asynchronous Requests.

POST /diagnostic-tools/v2/estats

Content-Type: application/json

Request Body:

{
    "url": "http://www.test.com"
}

Status 202 application/json

Response Body:

{
    "retryAfter": 10,
    "link": "/estats-requests/11111",
    "requestId": "88972782"
}

Get CP Code Error Stats

Get error statistics on a CP code’s traffic from edge servers to both clients and the origin. Specify a cpCode parameter in the request. See Estats for information on the response object. This operation gets the data directly. To avoid any latency problems, run Launch a CP Code Error Stats Request to access the data asynchronously.

GET /diagnostic-tools/v2/cpcodes/{cpCode}/estats

Sample: /diagnostic-tools/v2/cpcodes/11111/estats

Parameter Type Sample Description
URL Parameters
cpCode String 11111 The CP code for which to retrieve error statistics.

Status 200 application/json

Response Body:

{
    "eStats": {
        "cpCode": 11111,
        "edgeHits": 3534,
        "topEdgeIpsWithError": [
            {
                "hits": 7,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "pxR",
                "region": 16031,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            },
            {
                "hits": 5,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "pxR",
                "region": 20321,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            }
        ],
        "originFailurePercentage": 20.0,
        "edgeErrors": 188,
        "topEdgeIpsWithErrorFromOrigin": [
            {
                "hits": 15,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxPRW&httpStatusCode=401&endTime=1444408174",
                "objectStatus": "aoxPRW",
                "region": 23308,
                "httpStatus": 401,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            },
            {
                "hits": 12,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxCPRW&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "aoxCPRW",
                "region": 20449,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            }
        ],
        "topEdgeIpsWithSuccess": [
            {
                "hits": 13,
                "objectStatus": "pxR",
                "edgeI": "NN.NN.NN.NN",
                "region": 21524,
                "httpStatus": 302,
                "errorCode": "0:None",
                "ghostLog": null
            },
            {
                "hits": 9,
                "objectStatus": "pxR",
                "region": 24168,
                "httpStatus": 302,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN",
                "ghostLog": null
            }
        ],
        "edgeStatusCodeDistribution": [
            {
                "hits": 2942,
                "httpStatus": 200,
                "percentage": 83.0
            },
            {
                "hits": 152,
                "httpStatus": 304,
                "percentage": 4.0
            },
            {
                "hits": 137,
                "httpStatus": 302,
                "percentage": 3.0
            },
            {
                "hits": 80,
                "httpStatus": 400,
                "percentage": 2.0
            },
            {
                "hits": 74,
                "httpStatus": 401,
                "percentage": 2.0
            },
            {
                "hits": 68,
                "httpStatus": 404,
                "percentage": 1.0
            }
        ],
        "originStatusCodeDistribution": [
            {
                "hits": 404,
                "httpStatus": 200,
                "percentage": 52.0
            },
            {
                "hits": 112,
                "httpStatus": 302,
                "percentage": 14.0
            },
            {
                "hits": 75,
                "httpStatus": 400,
                "percentage": 9.0
            },
            {
                "hits": 71,
                "httpStatus": 401,
                "percentage": 9.0
            },
            {
                "hits": 44,
                "httpStatus": 404,
                "percentage": 5.0
            }
        ],
        "originHits": 765,
        "originErrors": 152,
        "topEdgeIpsWithSuccessFromOrigin": [],
        "edgeFailurePercentage": 5.0
    }
}

Launch a CP Code Error Stats Request

Provides the same functionality as the Get CP Code Error Stats operation, but this launches a request to retrieve the data asynchronously. Check the PollResponse’s link after the retryAfter interval or use the requestId to Check an Error Stats Request. For details, see Asynchronous Requests.

POST /diagnostic-tools/v2/cpcodes/{cpCode}/estats

Sample: /diagnostic-tools/v2/cpcodes/11111/estats

Parameter Type Sample Description
URL Parameters
cpCode String 11111 The CP code for which to retrieve error statistics.

Status 202 application/json

Response Body:

{
    "retryAfter": 10,
    "link": "/estats-requests/11111",
    "requestId": "88972782"
}

Check an Error Stats Request

After running the Launch an Error Stats Request operation, this checks the status of an asynchronous request for data. A 200 PollResponse with a Retry-After header indicates the request is still processing. When the data is ready, a 303 response provides a Location header where you can GET the data using the Get Error Statistics Asynchronously operation.

GET /diagnostic-tools/v2/estats-requests/{requestId}

Sample: /diagnostic-tools/v2/estats-requests/2567162

Parameter Type Sample Description
URL Parameters
requestId String 2567162 Unique identifier for each asynchronous error statistics request, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Headers:

Retry-After: 10

Response Body:

{
    "retryAfter": 10,
    "link": "/estats-requests/11111",
    "requestId": "88972782"
}

Status 303

Headers:

Location: /diagnostic-tools/v2/estats-requests/123938

Get Error Statistics Asynchronously

Provides the same functionality as the Get Error Statistics operation, but accesses the data asynchronously after running Launch an Error Stats Request. Data is available at this operation’s URL for at least 24 hours. See Asynchronous Requests for details.

GET /diagnostic-tools/v2/estats-requests/{requestId}/estats

Sample: /diagnostic-tools/v2/estats-requests/2567162/estats

Parameter Type Sample Description
URL Parameters
requestId String 2567162 Unique identifier for each asynchronous error statistics request, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Response Body:

{
    "eStats": {
        "cpCode": 11111,
        "edgeHits": 3534,
        "topEdgeIpsWithError": [
            {
                "hits": 7,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "pxR",
                "region": 16031,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            },
            {
                "hits": 5,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "pxR",
                "region": 20321,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            }
        ],
        "originFailurePercentage": 20.0,
        "edgeErrors": 188,
        "topEdgeIpsWithErrorFromOrigin": [
            {
                "hits": 15,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxPRW&httpStatusCode=401&endTime=1444408174",
                "objectStatus": "aoxPRW",
                "region": 23308,
                "httpStatus": 401,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            },
            {
                "hits": 12,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxCPRW&httpStatusCode=400&endTime=1444408174",
                "objectStatus": "aoxCPRW",
                "region": 20449,
                "httpStatus": 400,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN"
            }
        ],
        "topEdgeIpsWithSuccess": [
            {
                "hits": 13,
                "objectStatus": "pxR",
                "edgeI": "NN.NN.NN.NN",
                "region": 21524,
                "httpStatus": 302,
                "errorCode": "0:None",
                "ghostLog": null
            },
            {
                "hits": 9,
                "objectStatus": "pxR",
                "region": 24168,
                "httpStatus": 302,
                "errorCode": "0:None",
                "edgeIp": "NN.NN.NN.NN",
                "ghostLog": null
            }
        ],
        "edgeStatusCodeDistribution": [
            {
                "hits": 2942,
                "httpStatus": 200,
                "percentage": 83.0
            },
            {
                "hits": 152,
                "httpStatus": 304,
                "percentage": 4.0
            },
            {
                "hits": 137,
                "httpStatus": 302,
                "percentage": 3.0
            },
            {
                "hits": 80,
                "httpStatus": 400,
                "percentage": 2.0
            },
            {
                "hits": 74,
                "httpStatus": 401,
                "percentage": 2.0
            },
            {
                "hits": 68,
                "httpStatus": 404,
                "percentage": 1.0
            }
        ],
        "originStatusCodeDistribution": [
            {
                "hits": 404,
                "httpStatus": 200,
                "percentage": 52.0
            },
            {
                "hits": 112,
                "httpStatus": 302,
                "percentage": 14.0
            },
            {
                "hits": 75,
                "httpStatus": 400,
                "percentage": 9.0
            },
            {
                "hits": 71,
                "httpStatus": 401,
                "percentage": 9.0
            },
            {
                "hits": 44,
                "httpStatus": 404,
                "percentage": 5.0
            }
        ],
        "originHits": 765,
        "originErrors": 152,
        "topEdgeIpsWithSuccessFromOrigin": [],
        "edgeFailurePercentage": 5.0
    }
}

Translate an Error

Get information about error strings produced by edge servers when a request to retrieve content fails. The error represents an instance of a problem, and this operation gets details on what happened. See the TranslatedError object for details on the response data. This operation gets the data directly. To avoid any latency problems, run Launch an Error Translation Request to access the data asynchronously.

GET /diagnostic-tools/v2/errors/{errorCode}/translated-error

Sample: /diagnostic-tools/v2/errors/9.6f64d440.1318965461.2f2b078/translated-error

Parameter Type Sample Description
URL Parameters
errorCode String 9.6f64d440.1318965461.2f2b078 The error reference code to translate.

Status 200 application/json

Response Body:

{
    "translatedError": {
        "originHostname": "akamai1b.download.akamai.com",
        "epochTime": 1450383180,
        "wafDetails": "-",
        "requestMethod": "GET",
        "url": "http://etranslator.edgesuite.net/ERR_READ_TIMEOUT",
        "timestamp": "Thu, Dec 17, 2015 20:13 GMT",
        "httpResponseCode": 504,
        "serverIp": "80.67.64.110 (CAMBRIDGE,MA,US)",
        "reasonForFailure": "The forward connection to the origin server from the edge server timed out.",
        "connectingIp": "23.79.236.14 (CAMBRIDGE,MA,US)",
        "originIp": "23.15.201.13(ASHBURN,VA,US)",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36",
        "clientIp": "^ (Client IP - NA)",
        "logs": [
            {
                "fields": {
                    "received_b": "ERR_READ_TIMEOUT|before_resp_hdrs",
                    "Forward Request": "f",
                    "Request id": "1d5865b",
                    "Multi-Feature Status Field": "-",
                    "total estimated bytes received": "0",
                    "SureRouteRace-stat-dirRoute": "-",
                    "client IP (p-prefresh)": "23.79.236.14",
                    "Time spent deferring forward read": "0",
                    "Reason for Throttling": "0",
                    "HTTP method (GET HEAD etc)": "GET",
                    "HTTP status code": "0",
                    "Forward-side-http-overhead": "696",
                    "Forward Hostname": "akamai1b.download.akamai.com",
                    "object-max-age_s": "0",
                    "Forward ARL (if rewritten in metadata)": "/D/1682/3101/000/akamai1b.download.akamai.com/3101/crackme",
                    "Request Number": "0",
                    "timestamp": "1450383215.030",
                    "Ghost request size": "692",
                    "Multi-Purpose Key/Value Field": "mtse=g|0;aid=87676;pfs=c;hnd=1|n",
                    "Object Status 2": "-",
                    "Ghost IP": "80.67.64.110",
                    "Ghost request header size": "692",
                    "content bytes received": "0",
                    "SureRouteRaceStat-indirRoute": "-",
                    "Forward IP": "23.15.201.13",
                    "content-type": "-",
                    "SSL overhead bytes": "4181",
                    "Edgescape": "-",
                    "SSL": "TLSv1",
                    "range": "-",
                    "IMS (i-ims)": "-",
                    "Sureroute2info": "-",
                    "Real IP of Forward Ghost (ESSL)": "-",
                    "ARL": "/D/1682/3101/000/akamai1b.download.akamai.com/ERR_READ_TIMEOUT"
                },
                "description": "Edge Server: 80.67.64.110 going forward to 23.15.201.13"
            },
            {
                "fields": {
                    "content bytes served": "250",
                    "Accept-Language": "^",
                    "flv seek processing info": "^",
                    "Client-rate-limiting": "^",
                    "ARL": "/^/1682/3101/^/akamai1b.download.akamai.com/ERR_READ_TIMEOUT",
                    "host header": "etranslator.edgesuite.net",
                    "Reason for not caching (priv/released)": "^",
                    "object size": "250",
                    "total estimated bytes served": "568",
                    "Client Request": "r",
                    "Request byte-range": "-",
                    "timestamp": "1450383215.018",
                    "SSL": "U",
                    "True client ip": "^",
                    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36",
                    "dca-data": "-",
                    "c-http-overhead": "^",
                    "object-max-age_s": "-",
                    "persistent request number": "1",
                    "Rate Accounting info": "^",
                    "client IP": "23.79.236.14",
                    "Client request header size": "454",
                    "Client-request-body-size": "-",
                    "HTTP status code": "504",
                    "Edge Tokenization Information": "-",
                    "HTTP method": "GET",
                    "ssl-byte": "^",
                    "IMS": "-",
                    "Ghost IP": "80.67.64.110",
                    "Serial number and map": "1682.^",
                    "custom-field": "^",
                    "X-Akamai-Edge-Log": "-",
                    "referrer": "^",
                    "X-Forwarded-For": "-",
                    "Other-Error-Indication": "^",
                    "SSL overhead bytes": "4538",
                    "Web Application Firewall Information": "-",
                    "HTTP Streaming info": "-",
                    "Uncompressed length": "-",
                    "error": "ERR_READ_TIMEOUT",
                    "cookie": "^",
                    "Origin File Size": "^",
                    "content-type": "text/html",
                    "object-status-2": "oW"
                },
                "description": "Edge Server: 80.67.64.110 response to 23.79.236.14"
            }
        ]
    }
}

Launch an Error Translation Request

Provides the same functionality as the Translate an Error operation, but this launches a request to retrieve the data asynchronously. Check the PollResponse’s link after the retryAfter interval or use the requestId to Check an Error Translation Request. For details, see Asynchronous Requests.

POST /diagnostic-tools/v2/errors/{errorCode}/translate-error

Sample: /diagnostic-tools/v2/errors/9.6f64d440.1318965461.2f2b078/translate-error

Parameter Type Sample Description
URL Parameters
errorCode String 9.6f64d440.1318965461.2f2b078 The error reference code to translate.

Status 202 application/json

Response Body:

{
    "retryAfter": 10,
    "link": "/translate-error-requests/233233",
    "requestId": "88972782"
}

Check an Error Translation Request

After running the Launch an Error Translation Request operation, this checks the status of an asynchronous request for data. A 200 PollResponse with a Retry-After header indicates the request is still processing. When the data is ready, a 303 response provides a Location header where you can GET the data using the Translate an Error Asynchronously operation.

GET /diagnostic-tools/v2/translate-error-requests/{requestId}

Sample: /diagnostic-tools/v2/translate-error-requests/67368292

Parameter Type Sample Description
URL Parameters
requestId String 67368292 Unique identifier for each asynchronous error translation request, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Headers:

Retry-After: 10

Response Body:

{
    "retryAfter": 10,
    "link": "/translate-error-requests/233233",
    "requestId": "88972782"
}

Status 303

Headers:

Location: /translate-error-requests/67368292/translated-error

Translate an Error Asynchronously

Provides the same functionality as the Translate an Error operation, but accesses the data asynchronously after running Launch an Error Translation Request. Data is available at this operation’s URL for at least 24 hours. See Asynchronous Requests for details.

GET /diagnostic-tools/v2/translate-error-requests/{requestId}/translated-error

Sample: /diagnostic-tools/v2/translate-error-requests/67368292/translated-error

Parameter Type Sample Description
URL Parameters
requestId String 67368292 Unique identifier for each asynchronous error translation request, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Response Body:

{
    "translatedError": {
        "originHostname": "akamai1b.download.akamai.com",
        "epochTime": 1450383180,
        "wafDetails": "-",
        "requestMethod": "GET",
        "url": "http://etranslator.edgesuite.net/ERR_READ_TIMEOUT",
        "timestamp": "Thu, Dec 17, 2015 20:13 GMT",
        "httpResponseCode": 504,
        "serverIp": "80.67.64.110 (CAMBRIDGE,MA,US)",
        "reasonForFailure": "The forward connection to the origin server from the edge server timed out.",
        "connectingIp": "23.79.236.14 (CAMBRIDGE,MA,US)",
        "originIp": "23.15.201.13(ASHBURN,VA,US)",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36",
        "clientIp": "^ (Client IP - NA)",
        "logs": [
            {
                "fields": {
                    "received_b": "ERR_READ_TIMEOUT|before_resp_hdrs",
                    "Forward Request": "f",
                    "Request id": "1d5865b",
                    "Multi-Feature Status Field": "-",
                    "total estimated bytes received": "0",
                    "SureRouteRace-stat-dirRoute": "-",
                    "client IP (p-prefresh)": "23.79.236.14",
                    "Time spent deferring forward read": "0",
                    "Reason for Throttling": "0",
                    "HTTP method (GET HEAD etc)": "GET",
                    "HTTP status code": "0",
                    "Forward-side-http-overhead": "696",
                    "Forward Hostname": "akamai1b.download.akamai.com",
                    "object-max-age_s": "0",
                    "Forward ARL (if rewritten in metadata)": "/D/1682/3101/000/akamai1b.download.akamai.com/3101/crackme",
                    "Request Number": "0",
                    "timestamp": "1450383215.030",
                    "Ghost request size": "692",
                    "Multi-Purpose Key/Value Field": "mtse=g|0;aid=87676;pfs=c;hnd=1|n",
                    "Object Status 2": "-",
                    "Ghost IP": "80.67.64.110",
                    "Ghost request header size": "692",
                    "content bytes received": "0",
                    "SureRouteRaceStat-indirRoute": "-",
                    "Forward IP": "23.15.201.13",
                    "content-type": "-",
                    "SSL overhead bytes": "4181",
                    "Edgescape": "-",
                    "SSL": "TLSv1",
                    "range": "-",
                    "IMS (i-ims)": "-",
                    "Sureroute2info": "-",
                    "Real IP of Forward Ghost (ESSL)": "-",
                    "ARL": "/D/1682/3101/000/akamai1b.download.akamai.com/ERR_READ_TIMEOUT"
                },
                "description": "Edge Server: 80.67.64.110 going forward to 23.15.201.13"
            },
            {
                "fields": {
                    "content bytes served": "250",
                    "Accept-Language": "^",
                    "flv seek processing info": "^",
                    "Client-rate-limiting": "^",
                    "ARL": "/^/1682/3101/^/akamai1b.download.akamai.com/ERR_READ_TIMEOUT",
                    "host header": "etranslator.edgesuite.net",
                    "Reason for not caching (priv/released)": "^",
                    "object size": "250",
                    "total estimated bytes served": "568",
                    "Client Request": "r",
                    "Request byte-range": "-",
                    "timestamp": "1450383215.018",
                    "SSL": "U",
                    "True client ip": "^",
                    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36",
                    "dca-data": "-",
                    "c-http-overhead": "^",
                    "object-max-age_s": "-",
                    "persistent request number": "1",
                    "Rate Accounting info": "^",
                    "client IP": "23.79.236.14",
                    "Client request header size": "454",
                    "Client-request-body-size": "-",
                    "HTTP status code": "504",
                    "Edge Tokenization Information": "-",
                    "HTTP method": "GET",
                    "ssl-byte": "^",
                    "IMS": "-",
                    "Ghost IP": "80.67.64.110",
                    "Serial number and map": "1682.^",
                    "custom-field": "^",
                    "X-Akamai-Edge-Log": "-",
                    "referrer": "^",
                    "X-Forwarded-For": "-",
                    "Other-Error-Indication": "^",
                    "SSL overhead bytes": "4538",
                    "Web Application Firewall Information": "-",
                    "HTTP Streaming info": "-",
                    "Uncompressed length": "-",
                    "error": "ERR_READ_TIMEOUT",
                    "cookie": "^",
                    "Origin File Size": "^",
                    "content-type": "text/html",
                    "object-status-2": "oW"
                },
                "description": "Edge Server: 80.67.64.110 response to 23.79.236.14"
            }
        ]
    }
}

Debug a URL

Get various HTTP and DNS information for a URL. Specify a url query parameter, and optionally test a specific edgeIp with a given header. See the UrlDebug object for information on the response data. This operation gets the data directly. To avoid any latency problems, run Launch a URL Debug Request to access the data asynchronously.

GET /diagnostic-tools/v2/url-debug{?url,edgeIp,header}

Sample: /diagnostic-tools/v2/url-debug?url=http%3A//www.test.com&edgeIp=123.123.123.123&header=User-Agent%3A%20Mozilla/5.0

Parameter Type Sample Description
Required Query Parameters
url String http://www.test.com The URL for which to gather error statistics.
Optional Query Parameters
edgeIp String 123.123.123.123 The edge server IP address to test the URL against, otherwise a random server by default.
header String User-Agent: Mozilla/5.0 Any additional headers to add to the request. Repeat the parameter to specify more than one header.

Status 200 application/json

Response Body:

{
    "urlDebug": {
        "httpResponse": [
            {
                "name": "Edge Status Code",
                "value": " 200"
            },
            {
                "name": "Origin Response Code",
                "value": " NA"
            },
            {
                "name": "Edge Server IP",
                "value": " 184.51.102.49"
            },
            {
                "name": "Origin Server Host",
                "value": " Cannot determine the origin Server"
            },
            {
                "name": "Origin Server IP",
                "value": " NA"
            },
            {
                "name": "Cache Setting",
                "value": " TCP_MISS 30h"
            },
            {
                "name": "CpCode",
                "value": " 215959"
            },
            {
                "name": "Error Message (if any)",
                "value": " - "
            }
        ],
        "responseHeaders": [
            "HTTP/1.1 200 OK ",
            "Content-Length: 103402 ",
            "Content-Type: text/html;charset=UTF-8 "
        ],
        "logs": [
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/static_content/images/sprite/sister-brands-2x.png&I=1.1.1.1\t200\ttext/html\t506\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_2_a.jpg&I=1.1.1.1\t200\ttext/html\t547\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/desktop/041117_US_EC_HP_ANIM_DESK_main1_a.jpg&I=1.1.1.1\t200\ttext/html\t548\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net"
        ],
        "dnsInformation": [
            "www.example.com. 3360 IN CNAME www.example.com.edgesuite.net.",
            "www.example.com.edgesuite.net. 17577 IN CNAME a1111.b.akamai.net.",
            "a1111.b.akamai.net. 19 IN A 23.212.52.152",
            "a1111.b.akamai.net. 19 IN A 23.212.52.14 "
        ]
    }
}

Launch a URL Debug Request

Provides the same functionality as the Debug a URL operation, but this launches a request to retrieve the data asynchronously. Check the PollResponse’s link after the retryAfter interval or use the requestId to Check a URL Debug Request. For details, see Asynchronous Requests.

POST /diagnostic-tools/v2/url-debug

Content-Type: application/json

Request Body:

{
    "url": "http://www.test.com",
    "headers": [
        "Location:http//test.com",
        "Content-Type:application/json"
    ],
    "edgeIp": "123.123.123.123"
}

Status 202 application/json

Response Body:

{
    "retryAfter": 10,
    "link": "/url-debug-requests/88972782",
    "requestId": "88972782"
}

Check a URL Debug Request

After running the Launch a URL Debug Request operation, this checks the status of an asynchronous request for data. A 200 PollResponse with a Retry-After header indicates the request is still processing. When the data is ready, a 303 response provides a Location header where you can GET the data using the Debug a URL Asynchronously operation.

GET /diagnostic-tools/v2/url-debug-requests/{requestId}

Sample: /diagnostic-tools/v2/url-debug-requests/67368292

Parameter Type Sample Description
URL Parameters
requestId String 67368292 Unique identifier for each asynchronous URL debug request, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Headers:

Retry-After: 10

Response Body:

{
    "retryAfter": 10,
    "link": "/url-debug-requests/88972782",
    "requestId": "88972782"
}

Status 303

Headers:

Location: /url-debug-requests/67368292/debugged-url

Debug a URL Asynchronously

Provides the same functionality as the Debug a URL operation, but accesses the data asynchronously after running Launch a URL Debug Request. Data is available at this operation’s URL for at least 24 hours. See Asynchronous Requests for details.

GET /diagnostic-tools/v2/url-debug-requests/{requestId}/debugged-url

Sample: /diagnostic-tools/v2/url-debug-requests/67368292/debugged-url

Parameter Type Sample Description
URL Parameters
requestId String 67368292 Unique identifier for each asynchronous URL debug request, used to track progress. For details, see Asynchronous Requests.

Status 200 application/json

Response Body:

{
    "urlDebug": {
        "httpResponse": [
            {
                "name": "Edge Status Code",
                "value": " 200"
            },
            {
                "name": "Origin Response Code",
                "value": " NA"
            },
            {
                "name": "Edge Server IP",
                "value": " 184.51.102.49"
            },
            {
                "name": "Origin Server Host",
                "value": " Cannot determine the origin Server"
            },
            {
                "name": "Origin Server IP",
                "value": " NA"
            },
            {
                "name": "Cache Setting",
                "value": " TCP_MISS 30h"
            },
            {
                "name": "CpCode",
                "value": " 215959"
            },
            {
                "name": "Error Message (if any)",
                "value": " - "
            }
        ],
        "responseHeaders": [
            "HTTP/1.1 200 OK ",
            "Content-Length: 103402 ",
            "Content-Type: text/html;charset=UTF-8 "
        ],
        "logs": [
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/static_content/images/sprite/sister-brands-2x.png&I=1.1.1.1\t200\ttext/html\t506\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/mobile/041117_US_EC_HP_ANIM_DESK_MOB_2_a.jpg&I=1.1.1.1\t200\ttext/html\t547\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net",
            "04/13/2017 22:33\tr\t127.0.0.1\t-\tGET\t/L/507/106472/8s/twotree-ipa-ak1.abmr.net/akid/treatment/?D=example.com&H=www.example.com&U=/Asset_Archive/GPWeb/content/0013/220/415/assets/desktop/041117_US_EC_HP_ANIM_DESK_main1_a.jpg&I=1.1.1.1\t200\ttext/html\t548\t-\t0\t0\t-\tMozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/56.0.2924.87%20Safari/537.36\tASP1V=CT-1\t-\t-\tipa-ak1.abmr.net"
        ],
        "dnsInformation": [
            "www.example.com. 3360 IN CNAME www.example.com.edgesuite.net.",
            "www.example.com.edgesuite.net. 17577 IN CNAME a1111.b.akamai.net.",
            "a1111.b.akamai.net. 19 IN A 23.212.52.152",
            "a1111.b.akamai.net. 19 IN A 23.212.52.14 "
        ]
    }
}

Get a Translated URL

Gets high-level information about an Akamai-optimized URL (ARL), such as its time to live, origin server, and associated CP code. Specify the request’s url as a query parameter, and see the TranslatedUrl object for details on the response data.

GET /diagnostic-tools/v2/translated-url{?url}

Sample: /diagnostic-tools/v2/translated-url?url=http%3A//www.test.com

Parameter Type Sample Description
Required Query Parameters
url String http://www.test.com The URL for which to gather error statistics.

Status 200 application/json

Response Body:

{
    "translatedUrl": {
        "cpCode": 12345,
        "typeCode": "Object changes when ARL changes",
        "serialNumber": 54321,
        "originServer": "origin.example.com",
        "ttl": "Infinite"
    }
}

Last modified: 5/4/2017