loading

Diagnostic Tools API v2

Diagnose DNS and network problems from Akamai servers around the world.

Learn more:


Overview

Once you extend your web content onto the Akamai edge network and apply various Akamai features to accelerate and manipulate content, you need to be able to troubleshoot any problems your own users may encounter. The Diagnostic Tools API allows you to diagnose many common problems Akamai customers experience when delivering content to their end users. It offers a programmatic alternative to many of the features available in the Luna Control Center, under the ResolveDiagnostic Tools menu.

This major new API release supersedes the original version 1. Version 2 includes the following features:

  • The new API now allows you to access data asynchronously to avoid long-running requests that often time out. See Asynchronous Requests for more information.

  • It allows you to run many familiar networking tools such as dig, mtr, and curl, or get logs either from locations on the Akamai edge network, or from specific Akamai IP addresses.

  • A new error statistics feature allows you to research how edge servers communicate both with user client requests, and with your origin server.

  • You are also able to aggregate error statistics for each CP Code, the main system you use to organize categories of web content.

  • This API version allows you to diagnose problems with any Global Traffic Management properties (subdomains) you administer.

  • In addition to running tests on specific edge server locations or IP addresses, you can send individual end users diagnostic links to trace what happens to their requests.

See Diagnostic Utilities for more information on available tools. See the Resources section for a complete listing of API operations.

Who Should Use This API

Use this API to implement your own problem-resolution dashboard for Akamai-provisioned content, or to integrate it with other similar debugging tools. Use the end-user operations to implement interfaces to solicit feedback from your own users. In addition to helping solve any problems your end user experience, consider also leveraging these batch tools to design more proactive interfaces to monitor performance.

Getting Started

To configure this API for the first time:

  • Review Get Started with APIs for details on how to set up client tokens to access any Akamai API. These tokens appear as custom hostnames that look like this: https://akzz-XXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXX.luna.akamaiapis.net.

  • To enable this API, choose the API service named Diagnostic Tools, and set the access level to READ-WRITE.

  • Some of the diagnostic tools this API makes available require certain features to be available under your product and contract. For example, you need Global Traffic Management enabled to run the corresponding diagnostic tools, otherwise you get a 403 error. Make sure the identity under which you provision the API has access to all the features for which you want diagnostic data.

Diagnostic Utilities

Many of the utilities this API makes available to you effectively extend the range of standard networking tools so that you can run them from arbitrary locations within the Akamai network, rather than from your local network. The API makes these diagnostic utilities available:

  • Akamai Server Locations: This basic enabling utility lists available Akamai ghost server locations. You may need this information to run other utilities from a set of edge server locations.

  • Akamai CDN Status: This basic enabling utility confirms whether a specified IP address belongs to an Akamai edge server. You may need this information to run other utilities from a set of edge IP addresses.

  • Dig, by edge IP or location: This uses the dig command to provide Domain Name Server (DNS) details for the location of the edge server and hostname or domain name, allowing you to diagnose issues with domain name resolution.

  • Mtr, by edge IP or location: This uses the mtr command to provide information about the route, number of hops, and time that Internet traffic packets take between the edge server and a remote host or destination. The results can show you where network delays are being introduced in the path.

  • Curl, by edge IP or location: This uses the curl command to provide a specified URL’s raw HTML. Making an HTTP request from an edge server lets you gather information about the HTTP response.

  • Log Lines, by edge IP or location: This uses the grep command to retrieve and parse log records within the last 48 hours from either an edge server location or an IP address.

  • Geolocation: This provides the geographic and network location of any IP address.

  • End User Diagnostic Links: This tool generates a link to obtain client and Domain Name Server (DNS) IP information for a specific user. The results provide a URL to send to the end user. When the user visits the URL, the API captures user and mapping information that you may need to troubleshoot a problem.

  • Global Traffic Management: This tool provides a mapping of subdomain properties to domain names, and corresponding edge IP addresses.

  • Error Statistics: This provides details on errors that occur when delivering web content. It’s based on real-time traffic data, both for client-to-edge and edge-to-origin traffic.

  • Error Translations: This uses the error string from an error page’s reference number to fetch a summary and log information for the error.

  • URL Debugging: This provides DNS Information, HTTP response, response headers, and logs for a URL or ARL (Akamaized URL).

  • URL Translations: This provides basic information about a specified hostname or domain name, such as typecode, origin server, CP code, serial number, and TTL for an Akamaized URL (ARL).

Asynchronous Requests

In many cases, diagnostic data can’t be pre-cached, and Akamai edge servers need to dynamically assemble it for you. This introduces significant latencies when doing ordinary GET requests on the reporting data. Requests can run minutes long, and can time out. To address this problem, version 2 of the Diagnostic Tools API introduces a new way to access the data asynchronously. Instead of getting the data directly, you launch a request to fetch it later, and poll the status of that request. When the data is ready, a 303 response provides a link to the data in the same format as you would ordinarily get directly.

These steps form the basis for the asynchronous API workflow:

  1. For each relevant direct GET operation, choose instead the corresponding launch POST operation.

  2. The POST’s response body object features a requestId that you can store to run a follow-up check on the request’s status. Otherwise store the API hypermedia link to check it directly.

  3. Also store the retryAfter interval from the POST’s response body object. This represents the estimated number of seconds for when the data will be ready for you.

  4. Wait for the duration of the retryAfter interval, then either use the requestId to run the relevant check operation, or simply GET the link.

  5. If the response yields a 200 code, it means the process is still running, and the data is not yet ready. Store the revised value of the Retry-After header, or the response object’s retryAfter member, then run the check operation again.

  6. Once the response yields a 303 code, it means the request has completed, and your data is now ready. Use the requestId to run the operation where you get the data asynchronously, or simply run GET on the 303 response’s Location API hypermedia link. The API makes the requested data available at that link for at least 24 hours.

The API provides the following set of asynchronous operations as an alternative to accessing directly, but with latency:

POST async request GET request status GET data, without latency… …instead of this direct GET, with latency
Launch a CDN Status Request Check a CDN Status Request Get CDN Status Asynchronously Get CDN Status
Launch an Error Translation Request Check an Error Translation Request Translate an Error Asynchronously Translate an Error
Launch a URL Debug Request Check a URL Debug Request Debug a URL Asynchronously Debug a URL
Launch an Error Stats Request Check an Error Stats Request Get Error Statistics Asynchronously Get Error Statistics
Launch a CP Code Error Stats Request Check an Error Stats Request Get Error Statistics Asynchronously Get CP Code Error Stats

Rate limiting

Diagnostic Tools API endpoints impose a rate-limiting constraint of 10 requests per 60 seconds. When the limit is reached, the API responds with an HTTP 429 error, and you can’t make new requests for 60 seconds. You need to consider the limit when calling successive operations as part of a loop.

X-RateLimit-Limit: Total number of requests the client can make over the allotted span of time.

X-RateLimit-Remaining: The number of remaining requests allowed during the period.

Resources

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

API summary

Download the RAML descriptors for this API.

Operation Method Endpoint
Ghost Locations  
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,duration,maxLogLines,logType,hostHeader,clientIp,userAgent,httpStatusCode,arl,requestId,cpCode,objStatus}
IP Addresses  
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,duration,maxLogLines,logType,hostHeader,clientIp,userAgent,httpStatusCode,arl,requestId,cpCode,objStatus}
Is CDN IP Requests  
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  
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  
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  
Get Error Statistics GET /diagnostic-tools/v2/estats{?url}
Launch an Error Stats Request POST /diagnostic-tools/v2/estats
CP Codes  
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  
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  
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  
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  
Debug a URL GET /diagnostic-tools/v2/url-debug{?url,header,edgeIp}
Launch a URL Debug Request POST /diagnostic-tools/v2/url-debug
URL Debugger Requests  
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  
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"
        }
    ]
}

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

{
    "digInfo": {
        "hostname": "www.example.com.",
        "queryType": "A",
        "answerSection": [
            {
                "domain": "www.example.com.",
                "ttl": 5,
                "recordClass": "IN",
                "recordType": "A",
                "preferenceValues": null,
                "value": "NN.NN.NN.NN"
            }
        ],
        "authoritySection": [
            {
                "domain": "example.com.",
                "ttl": 86399,
                "recordClass": "IN",
                "recordType": "NS",
                "preferenceValues": null,
                "value": "a.example.net."
            },
            {
                "domain": "example.com.",
                "ttl": 86399,
                "recordClass": "IN",
                "recordType": "NS",
                "preferenceValues": null,
                "value": "b.example.net."
            }
        ],
        "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": {
        "source": "123.123.123.123",
        "destination": "www.example.com",
        "startTime": "2016-02-01T23:49:01Z",
        "host": "aNNN-NNN-NNN-NN.deploy.example.net",
        "packetLoss": 0.0,
        "avgLatency": 0.3,
        "analysis": "",
        "hops": [
            {
                "number": 1,
                "host": "NNNN:NNN:N:NNN::N",
                "loss": 0.0,
                "sent": 10,
                "last": 0.2,
                "avg": 0.3,
                "best": 0.2,
                "worst": 0.8,
                "stDev": 0.0
            },
            {
                "number": 2,
                "host": "XXN-NNN.XXXNN.example.net",
                "loss": 0.0,
                "sent": 10,
                "last": 0.3,
                "avg": 4.6,
                "best": 0.3,
                "worst": 33.9,
                "stDev": 10.7
            },
            {
                "number": 3,
                "host": "XX-N-N-N.XXXNN.example.net",
                "loss": 0.0,
                "sent": 10,
                "last": 0.6,
                "avg": 0.4,
                "best": 0.3,
                "worst": 0.6,
                "stDev": 0.0
            }
        ],
        "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"
    }
}

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

{
    "curlResults": {
        "httpStatusCode": 403,
        "responseHeaders": {
            "Server": "AkamaiGHost",
            "Connection": "close",
            "Expires": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Mime-Version": "1.0",
            "Content-Length": "270",
            "Date": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Content-Type": "text/html"
        },
        "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"
    }
}

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,duration,maxLogLines,logType,hostHeader,clientIp,userAgent,httpStatusCode,arl,requestId,cpCode,objStatus}

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

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

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

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

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

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

{
    "digInfo": {
        "hostname": "www.example.com.",
        "queryType": "A",
        "answerSection": [
            {
                "domain": "www.example.com.",
                "ttl": 5,
                "recordClass": "IN",
                "recordType": "A",
                "preferenceValues": null,
                "value": "NN.NN.NN.NN"
            }
        ],
        "authoritySection": [
            {
                "domain": "example.com.",
                "ttl": 86399,
                "recordClass": "IN",
                "recordType": "NS",
                "preferenceValues": null,
                "value": "a.example.net."
            },
            {
                "domain": "example.com.",
                "ttl": 86399,
                "recordClass": "IN",
                "recordType": "NS",
                "preferenceValues": null,
                "value": "b.example.net."
            }
        ],
        "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": {
        "source": "123.123.123.123",
        "destination": "www.example.com",
        "startTime": "2016-02-01T23:49:01Z",
        "host": "aNNN-NNN-NNN-NN.deploy.example.net",
        "packetLoss": 0.0,
        "avgLatency": 0.3,
        "analysis": "",
        "hops": [
            {
                "number": 1,
                "host": "NNNN:NNN:N:NNN::N",
                "loss": 0.0,
                "sent": 10,
                "last": 0.2,
                "avg": 0.3,
                "best": 0.2,
                "worst": 0.8,
                "stDev": 0.0
            },
            {
                "number": 2,
                "host": "XXN-NNN.XXXNN.example.net",
                "loss": 0.0,
                "sent": 10,
                "last": 0.3,
                "avg": 4.6,
                "best": 0.3,
                "worst": 33.9,
                "stDev": 10.7
            },
            {
                "number": 3,
                "host": "XX-N-N-N.XXXNN.example.net",
                "loss": 0.0,
                "sent": 10,
                "last": 0.6,
                "avg": 0.4,
                "best": 0.3,
                "worst": 0.6,
                "stDev": 0.0
            }
        ],
        "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"
    }
}

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

{
    "curlResults": {
        "httpStatusCode": 403,
        "responseHeaders": {
            "Server": "AkamaiGHost",
            "Connection": "close",
            "Expires": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Mime-Version": "1.0",
            "Content-Length": "270",
            "Date": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Content-Type": "text/html"
        },
        "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"
    }
}

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,duration,maxLogLines,logType,hostHeader,clientIp,userAgent,httpStatusCode,arl,requestId,cpCode,objStatus}

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

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:

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

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",
            "requestId": "314908841",
            "url": "www.test.com",
            "timestamp": "2015-09-30T00:00:00Z"
        },
        {
            "endUserName": "sample",
            "requestId": "312512835",
            "url": "www.example.com",
            "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",
        "email": null,
        "timestamp": "2015-09-30T00:00:00Z",
        "url": "www.example.com",
        "ips": [
            {
                "description": "Client IP",
                "location": "SEOUL, KR",
                "ip": "NN.NN.NN.NN",
                "ipType": "client"
            },
            {
                "description": "Client DNS IP",
                "location": "CAMBRIDGE, MA US",
                "ip": "NN.NN.NN.NN",
                "ipType": "dns"
            },
            {
                "description": "Preferred IP",
                "location": "TOKYO, 13 JP",
                "ip": "NN.NN.NN.NNN",
                "ipType": "ipv6"
            },
            {
                "description": "CDN Edge Server IP",
                "location": "CHICAGO, IL US",
                "ip": "NN.NN.NN.NN",
                "ipType": "edge"
            }
        ],
        "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": {
        "property": "origin",
        "domain": "akadns.net",
        "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"
        ],
        "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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

{
    "eStats": {
        "cpCode": 11111,
        "edgeErrors": 188,
        "edgeHits": 3534,
        "edgeFailurePercentage": 5.0,
        "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
            }
        ],
        "originErrors": 152,
        "originHits": 765,
        "originFailurePercentage": 20.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
            }
        ],
        "topEdgeIpsWithError": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 7,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 16031,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 5,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 20321,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithErrorFromOrigin": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 15,
                "httpStatus": 401,
                "objectStatus": "aoxPRW",
                "region": 23308,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxPRW&httpStatusCode=401&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 12,
                "httpStatus": 400,
                "objectStatus": "aoxCPRW",
                "region": 20449,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxCPRW&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithSuccess": [
            {
                "edgeI": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 13,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 21524
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 9,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 24168
            }
        ],
        "topEdgeIpsWithSuccessFromOrigin": []
    }
}

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

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

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

{
    "eStats": {
        "cpCode": 11111,
        "edgeErrors": 188,
        "edgeHits": 3534,
        "edgeFailurePercentage": 5.0,
        "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
            }
        ],
        "originErrors": 152,
        "originHits": 765,
        "originFailurePercentage": 20.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
            }
        ],
        "topEdgeIpsWithError": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 7,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 16031,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 5,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 20321,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithErrorFromOrigin": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 15,
                "httpStatus": 401,
                "objectStatus": "aoxPRW",
                "region": 23308,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxPRW&httpStatusCode=401&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 12,
                "httpStatus": 400,
                "objectStatus": "aoxCPRW",
                "region": 20449,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxCPRW&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithSuccess": [
            {
                "edgeI": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 13,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 21524
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 9,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 24168
            }
        ],
        "topEdgeIpsWithSuccessFromOrigin": []
    }
}

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

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

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:

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

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,
        "edgeErrors": 188,
        "edgeHits": 3534,
        "edgeFailurePercentage": 5.0,
        "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
            }
        ],
        "originErrors": 152,
        "originHits": 765,
        "originFailurePercentage": 20.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
            }
        ],
        "topEdgeIpsWithError": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 7,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 16031,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 5,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 20321,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithErrorFromOrigin": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 15,
                "httpStatus": 401,
                "objectStatus": "aoxPRW",
                "region": 23308,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxPRW&httpStatusCode=401&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 12,
                "httpStatus": 400,
                "objectStatus": "aoxCPRW",
                "region": 20449,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxCPRW&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithSuccess": [
            {
                "edgeI": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 13,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 21524
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 9,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 24168
            }
        ],
        "topEdgeIpsWithSuccessFromOrigin": []
    }
}

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

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

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

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

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:

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

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

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,header,edgeIp}

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

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

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

{
    "urlDebug": {
        "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 "
        ],
        "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"
        ]
    }
}

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",
    "edgeIp": "123.123.123.123",
    "headers": [
        "Location:http//test.com",
        "Content-Type:application/json"
    ]
}

Status 202 application/json

Headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 5

Response Body:

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

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:

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

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": {
        "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 "
        ],
        "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"
        ]
    }
}

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": {
        "typeCode": "Object changes when ARL changes",
        "originServer": "origin.example.com",
        "cpCode": 12345,
        "serialNumber": 54321,
        "ttl": "Infinite"
    }
}

Data

This section provides details for each type of data object the API exchanges. Most of these response objects feature data accessed from a single top-level object member that accesses a sub-object or array of objects. In the interest of clarity, the tables below only list data members that appear within these inner sub-objects.

Download the JSON schemas for this API.

Location

Encapsulates each edge server location within a top-level locations array.

Download schema: available.json

Sample GET response:

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

Location members

Member Type Description
id String A unique identifier for each location. Use this value for a locationId parameter in subsequent operations.
value String The name of the location.

Dig

Encapsulates a standard dig response within the top-level object’s digInfo member.

Download schema: digInfo.json

Sample GET response:

{
    "digInfo": {
        "hostname": "www.example.com.",
        "queryType": "A",
        "answerSection": [
            {
                "domain": "www.example.com.",
                "ttl": 5,
                "recordClass": "IN",
                "recordType": "A",
                "preferenceValues": null,
                "value": "NN.NN.NN.NN"
            }
        ],
        "authoritySection": [
            {
                "domain": "example.com.",
                "ttl": 86399,
                "recordClass": "IN",
                "recordType": "NS",
                "preferenceValues": null,
                "value": "a.example.net."
            },
            {
                "domain": "example.com.",
                "ttl": 86399,
                "recordClass": "IN",
                "recordType": "NS",
                "preferenceValues": null,
                "value": "b.example.net."
            }
        ],
        "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;; "
    }
}

Dig members

Member Type Description
answerSection DnsRecord Array The answering servers, a list of DnsRecord objects.
authoritySection DnsRecord Array Servers authorized to answer, a list of DnsRecord objects.
hostname String The hostname for which to run the dig, reflecting the hostName specified as a parameter.
queryType Enumeration The same DNS queryType specified as a parameter, either A, AAAA, CNAME, MX, PTR, SOA, or NS.
result String Raw dig utility output.

DnsRecord

Encapsulates a DNS record that appears within a Dig object’s answerSection or authoritySection.

Download schema: dnsRecord.json

DnsRecord members

Member Type Description
domain String The domain name for this record.
preferenceValues Integer Preference value, only valid for records of MX type, otherwise null.
recordClass String The class of the record, typically IN for internet.
recordType Enumeration The type of DNS record, either A, AAA, CNAME, MX, PTR, SOA, or nS.
ttl Integer The server’s default number of seconds to keep content cached.
value String The record’s value, either another domain or a final IP address.

Mtr

Encapsulates output of the mtr utility within a top-level mtr member.

Download schema: mtrData.json

Sample GET response:

{
    "mtr": {
        "source": "123.123.123.123",
        "destination": "www.example.com",
        "startTime": "2016-02-01T23:49:01Z",
        "host": "aNNN-NNN-NNN-NN.deploy.example.net",
        "packetLoss": 0.0,
        "avgLatency": 0.3,
        "analysis": "",
        "hops": [
            {
                "number": 1,
                "host": "NNNN:NNN:N:NNN::N",
                "loss": 0.0,
                "sent": 10,
                "last": 0.2,
                "avg": 0.3,
                "best": 0.2,
                "worst": 0.8,
                "stDev": 0.0
            },
            {
                "number": 2,
                "host": "XXN-NNN.XXXNN.example.net",
                "loss": 0.0,
                "sent": 10,
                "last": 0.3,
                "avg": 4.6,
                "best": 0.3,
                "worst": 33.9,
                "stDev": 10.7
            },
            {
                "number": 3,
                "host": "XX-N-N-N.XXXNN.example.net",
                "loss": 0.0,
                "sent": 10,
                "last": 0.6,
                "avg": 0.4,
                "best": 0.3,
                "worst": 0.6,
                "stDev": 0.0
            }
        ],
        "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"
    }
}

Mtr members

Member Type Description
analysis String Any special analysis of the network data, such as identifying anomalous loops.
avgLatency Number The average latency for all hops, in seconds.
destination String The domain or IP address that is the destination of this test request. Matches the destinationDomain request parameter.
hops Mtr.hops[] A list of network hops.
host String The hostname within the Akamai network that corresponds to the source IP address.
packetLoss Number Percentage of packets lost.
result String Raw mtr utility output.
source String The IP address that is the source of this test request. Matches the ipAddress request parameter.
startTime String An ISO 8601 timestamp for when this test occurred.
Mtr.hops[]: A list of network hops.
avg Number The average time for this hop, in milliseconds.
best Number Fastest time, in milliseconds.
host String The host or domain for the specific hop point.
last Number The last measured hop value, useful to detect ongoing problems.
loss Number Percentage of packets lost for this hop.
number Integer An index for each hop’s count within the full set.
sent Integer The number of tests for this hop.
stDev Number The standard deviation, in milliseconds.
worst Number Slowest time, in milliseconds.

CurlRequest

Represents a curl request body.

Download schema: curlRequest.json

Sample GET response:

{
    "url": "http://developer.test.com/index.html",
    "userAgent": "Mozilla/5.0"
}

CurlRequest members

Member Type Description
url String The URL for which to gather a curl response.
userAgent String A header field to spoof a type of browser.

Curl

Encapsulates curl results within a top-level curlResults member.

Download schema: curlResults.json

Sample GET response:

{
    "curlResults": {
        "httpStatusCode": 403,
        "responseHeaders": {
            "Server": "AkamaiGHost",
            "Connection": "close",
            "Expires": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Mime-Version": "1.0",
            "Content-Length": "270",
            "Date": "Fri, 22 Jan 2016 02:01:42 GMT",
            "Content-Type": "text/html"
        },
        "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"
    }
}

Curl members

Member Type Description
httpStatusCode Integer The HTTP response code for the curl request.
responseBody String The entire response body of the curl request.
responseHeaders Curl.responseHeaders Encapsulates the response’s headers.
Curl.responseHeaders: Encapsulates the response’s headers.
Connection String Options for the current connection.
Content-Length String The number of bytes served.
Content-Type String The content’s MIME type.
Date String The RFC–2616 formatted date of this response.
Expires String The RFC–2616 formatted date for when the request becomes stale.
Mime-Version String The MIME version.
Server String The name for the response’s web server.

LogLines

Contains grep data within a top-level logLines member, arranged as tables of tab-delimited text. Note that this log data is arranged in a different format as in the TranslatedError.logs[] object.

Download schema: logLines.json

Sample GET response:

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

LogLines members

Member Type Description
headers String Tab-delimited labels for each column of logs data.
logs Array The set of log line rows after being filtered with grep. Each tab-delimited column corresponds to a headers label.

IsCdnIp

Identifies IP addresses within the Akamai network.

Download schema: isCDNIP.json

Sample GET response:

{
    "isCdnIp": false
}

IsCdnIp members

Member Type Description
isCdnIp Boolean Whether an IP address is part of the Akamai edge network.

Geolocation

Encapsulates location data for an IP address within a top-level geoLocation member.

Download schema: geoLocation.json

Sample GET response:

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

Geolocation members

Member Type Description
areaCode String Set of area codes that map to this IP address. Multiple values are separated with commas and spaces.
asNum Integer The Autonomous System Number that maps to this IP address.
city String The closest city, within a 50 mile radius, that the IP address maps to.
clientIp String The client IP address.
continent String A two-letter code for the continent that the IP address maps to. See EdgeScape Data Codes for the set of possible values.
countryCode String An ISO–3166, two-letter code for the country where the IP address maps to.
county String The set of counties that the IP address maps to, with + separating multiple values.
dma Integer Designated Market Area location code.
fips String Federal Information Processing Standards location code.
latitude Number The latitude the IP address maps to.
longitude Number The longitude the IP address maps to.
msa Integer Metropolitan Statistical Area location code.
network String The network that maps to this IP address. Value may be null when edge servers lack that data.
networkType String The network type that maps to this IP address. Value may be null when edge servers lack that data.
pmsa Integer Primary Metropolitan Statistical Area location code.
proxy String The proxy that maps to this IP address. May be null.
regionCode String An ISO–3166, two-letter code for the region where the IP address maps to.
throughput Enumeration Represents the connection speed for the IP address, either low, medium, high, or vhigh. IPv6 traffic always appears as low.
timeZone String The time zone that the IP address maps to.
zipCode String The zip code that the IP address maps to. Multiple values are separated with + characters, and ranges are separated with - characters.

DiagnosticUrlRequest

Information with which to supply an end user a diagnostic link to load in a browser.

Download schema: diagnosticUrlRequestBody.json

Sample GET response:

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

DiagnosticUrlRequest members

Member Type Description
endUserName String A name to help identify the user in reporting data after the user has loaded the diagnostic link.
url String The URL for which you want to collect data, which the end user may be having trouble accessing.

DiagnosticUrl

Provides a diagnostic link.

Download schema: diagnosticUrl.json

Sample GET response:

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

DiagnosticUrl members

Member Type Description
diagnosticUrl String The URL that the end user can load in a browser to run diagnostics.

EndUserIpRequests

Encapsulates each diagnostic link test within a top-level endUserIpRequests array.

Download schema: ipRequests.json

Sample GET response:

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

EndUserIpRequests members

Member Type Description
endUserName String The name provided for the end user. Matches the endUserName in the DiagnosticUrlRequest.
requestId String A unique identifier for the end user’s diagnostic link request. Use this ID value to Get an End User’s IP Addresses.
timestamp String An ISO 8601 timestamp for when the end user loaded the diagnostic link.
url String The URL the diagnostic link simulated loading. Matches the url in the DiagnosticUrlRequest.

EndUserIpDetails

Encapsulates data on IP addresses used for an end user’s diagnostic link test. This sub-object is available within a top-level endUserIpDetails member.

Download schema: ipDetails.json

Sample GET response:

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

EndUserIpDetails members

Member Type Description
browser String The User-Agent header sent by the end user’s browser.
email Null A deprecated member.
ips EndUserIpDetails.ips[] Lists each IP address.
name String The end user’s name as initially assigned to the diagnostic link test. This matches the endUserName in the DiagnosticUrlRequest.
timestamp String An ISO 8601 timestamp for when the end user loaded the diagnostic link.
url String The URL the diagnostic link simulated loading. Matches the url in the initial DiagnosticUrlRequest.
EndUserIpDetails.ips[]: Lists each IP address.
description String A description of the IP that corresponds to the ipType.
ip String The IP address.
ipType Enumeration Identifies the type of IP address, either dns, client, ipv6, or edge.
location String The location of the IP address. Matches a Location’s value.

GtmProperty

Encapsulates each Global Traffic Management property within a top-level gtmProperties array.

Download schema: gtmProperties.json

Sample GET response:

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

GtmProperty members

Member Type Description
domain String The domain name. Use this value as parameter input to List a GTM Property’s IP Addresses.
hostName String The complete hostname.
property String The subdomain property. Use this value as parameter input to List a GTM Property’s IP Addresses.

GtmPropertyIps

Encapsulates a Global Traffic Management property’s IP addresses within a top-level gtmPropertyIps member.

Download schema: gtmPropertyIps.json

Sample GET response:

{
    "gtmPropertyIps": {
        "property": "origin",
        "domain": "akadns.net",
        "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"
        ],
        "targetIps": [
            "204.8.50.81"
        ]
    }
}

GtmPropertyIps members

Member Type Description
domain String The domain name to which these IP addresses apply.
property String The GTM property (subdomain) to which these IP addresses apply.
targetIps Array A list of target IPs representing the target content you want to test against.
testIps Array A list of IPs from which you may test requests to the targetIps.

EstatsRequest

Contains the URL needed to POST an asynchronous estats request.

Download schema: estatsPostRequest.json

Sample GET response:

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

EstatsRequest members

Member Type Description
url String The URL for which to gather error statistics.

Estats

Encapsulates error statistics within a top-level eStats member. Errors statistics report on traffic from edge servers to both clients and the origin.

Download schema: estats.json

Sample GET response:

{
    "eStats": {
        "cpCode": 11111,
        "edgeErrors": 188,
        "edgeHits": 3534,
        "edgeFailurePercentage": 5.0,
        "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
            }
        ],
        "originErrors": 152,
        "originHits": 765,
        "originFailurePercentage": 20.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
            }
        ],
        "topEdgeIpsWithError": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 7,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 16031,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 5,
                "httpStatus": 400,
                "objectStatus": "pxR",
                "region": 20321,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=pxR&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithErrorFromOrigin": [
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 15,
                "httpStatus": 401,
                "objectStatus": "aoxPRW",
                "region": 23308,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxPRW&httpStatusCode=401&endTime=1444408174"
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "hits": 12,
                "httpStatus": 400,
                "objectStatus": "aoxCPRW",
                "region": 20449,
                "edgeLogsLink": "/diagnostic-tools/v2/ip-addresses/NN.NN.NN.NN/log-lines?cpCode=1111&objStatus=aoxCPRW&httpStatusCode=400&endTime=1444408174"
            }
        ],
        "topEdgeIpsWithSuccess": [
            {
                "edgeI": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 13,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 21524
            },
            {
                "edgeIp": "NN.NN.NN.NN",
                "errorCode": "0:None",
                "ghostLog": null,
                "hits": 9,
                "httpStatus": 302,
                "objectStatus": "pxR",
                "region": 24168
            }
        ],
        "topEdgeIpsWithSuccessFromOrigin": []
    }
}

Estats members

Member Type Description
cpCode Integer The CP code to which these error statistics apply.
edgeErrors Integer The total number of reported errors for traffic between edge and client.
edgeFailurePercentage Integer The percentage of error responses for traffic between edge and client.
edgeHits Integer Total number of hits from clients to edge.
edgeStatusCodeDistribution StatusCodeDistribution Array Percentages and total hits for each status code for traffic between edge and client.
originErrors Integer The total number of reported errors for traffic between edge and origin.
originFailurePercentage Integer The percentage of error responses for traffic between edge and origin.
originHits Integer Total number of hits from the edge to origin.
originStatusCodeDistribution StatusCodeDistribution Array Percentages and total hits for each status code for traffic between edge and origin.
topEdgeIpsWithError EdgeIp Array The set of top IPs with errors from edge to client.
topEdgeIpsWithErrorFromOrigin EdgeIp Array The set of top IPs with errors from edge to origin.
topEdgeIpsWithSuccess EdgeIp Array The set of top IPs with successful responses from edge to client.
topEdgeIpsWithSuccessFromOrigin EdgeIp Array The set of top IPs with successful responses from origin to edge.

StatusCodeDistribution

For use in error statistics reports, encapsulates percentages and total hits for each status code. See the larger Estats object in which it appears.

Download schema: statusCodeDistribution.json

StatusCodeDistribution members

Member Type Description
hits Integer The total number of hits per httpStatus.
httpStatus Integer The HTTP status code for which the hits and overall percentage are measured..
percentage Number The percentage of all traffic for this httpStatus.

EdgeIp

Encapsulates error statistics for a single IP address. See the larger Estats object in which it appears.

Download schema: edgeIpInfo.json

EdgeIp members

Member Type Description
edgeIp String The edge IP address.
edgeLogsLink String A link with you can get log lines for the IP address. See Get Log Lines from an IP Address.
errorCode String A detailed error message if applicable. See Error Codes for details.
hits Integer Total number of hits for this IP address.
httpStatus Integer The HTTP status code for the measured success or error case.
objStatus String The status of the object, represented as a combination of single-letter codes for all statuses that apply. See Object Status Codes for details on each code.
region String An Akamai-only identifier.

TranslatedError

Encapsulates an error translation within a top-level translatedError member.

Download schema: translatedError.json

Sample GET response:

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

TranslatedError members

Member Type Description
clientIp String The IP address of the client that attempted to contact the edge server to request the content. This is the machine that made a TCP connection to the edge server, possibly the IP address of a proxy server.
connectingIp String The IP address of the connecting server.
cpcode String The CP code for this request.
epochTime Integer When the request occurred, in epoch seconds. See also the timestamp.
httpResponseCode Integer The HTTP response code.
logs TranslatedError.logs[] A series of loglines for this error request. Note that this data is arranged differently than in the LogLines object.
originHostname String The origin hostname.
originIp String The origin IP address that the edge server attempted to connect to.
reasonForFailure String An error string captured on the edge server that explains why this transaction failed. See Error Codes for details.
requestMethod String The HTTP method that the client requested for the URL.
serverIp String The IP address of the edge server that answered the client’s request or served the error.
timestamp String When the request occurred, formatted as RFC–2616. See also the epochTime.
url String The URL address the client tried to access.
userAgent String The User-Agent HTTP header sent by the client to the edge server. A value of N/A means that the client did not identify itself.
wafDetails String Provides details on any firewall applied to this request.
TranslatedError.logs[]: A series of loglines for this error request. Note that this data is arranged differently than in the LogLines object.
description String Description for this logline.
fields Object Log items provided as key/value pairs. This object’s membership is indeterminate.

UrlDebugRequest

Represents a URL Debugger request body.

Download schema: urlDebugPostBody.json

Sample GET response:

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

UrlDebugRequest members

Member Type Description
edgeIp String The IP address of the edge server associated with this request.
headers Array HTTP headers relevant to this request.
url String The URL to debug.

UrlDebug

Encapsulates various HTTP and DNS information for a URL in a top-level urlDebug member.

Download schema: urlDebug.json

Sample GET response:

{
    "urlDebug": {
        "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 "
        ],
        "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"
        ]
    }
}

UrlDebug members

Member Type Description
dnsInformation Array A series of DNS resolutions represented as lines of dig output.
httpResponse UrlDebug.httpResponse[] Collects information about the HTTP response as a series of name/value pairs. See TCP Errors for details on some of the error codes that appear in this data.
logs UrlDebug.logs[] A list of log lines for this error request. Logs follow the same tab-delimited format as in the LogLines object.
responseHeaders Array The HTTP header lines included in the response.
UrlDebug.httpResponse[]: Collects information about the HTTP response as a series of name/value pairs. See TCP Errors for details on some of the error codes that appear in this data.
name String The HTTP response key.
value String The HTTP response value.
UrlDebug.logs[]: A list of log lines for this error request. Logs follow the same tab-delimited format as in the LogLines object.
description String Describes each log line.
fields Object Log items provided as key/value pairs. This object’s membership is indeterminate.

TranslatedUrl

Encapsulates basic metadata about an Akamaized URL (ARL).

Download schema: translatedUrl.json

Sample GET response:

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

TranslatedUrl members

Member Type Description
cpCode Integer The CP Code that applies to this URL.
originServer String Origin hostname from which this URL derived.
serialNumber Integer A unique identifier for a server mapped to a region.
ttl String Remaining time to live in cache, either the number of seconds or Infinite.
typeCode String Describes how the server is configured.

PollResponse

Checks the status of asynchronous requests. For details, see Asynchronous Requests.

Download schema: pollingResponse.json

Sample GET response:

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

PollResponse members

Member Type Description
link String The link for this asynchronous request.
requestId String Unique identifier for the asynchronous request.
retryAfter Integer Number of seconds when the request is estimated to have processed.

Error Codes

Various error statistics and log lines may specify the following errorCode values generated by edge servers:

Error Code Reason / Recommendation
ERR_ACCESS_DENIED|* A string after the bar character that is not defined in the list below likely means that the denial was based on auth:acl.deny metadata. The string is the first position in the deny list that caused the denial.
ERR_ACCESS_DENIED|bad_cn_match The CN on the certificate didn’t match the host header.
ERR_ACCESS_DENIED|fwd_acl Connection to forward host is not allowed because the host is not added in the Allowed Origins.
ERR_ACCESS_DENIED|fwd_acl_ssl Connection to forward host is not allowed because the host is not added in the Allowed Origins.
ERR_ACCESS_DENIED|legacy_acl Connection to forward host is not allowed because the host is not added in the Allowed Origins.
ERR_ACCESS_DENIED|loop_* Loop detected.
ERR_ACCESS_DENIED|mdt Access is denied for this transaction per the metadata configuration.
ERR_ACCESS_DENIED|ssl_port_acl Server refused to go forward to a non-standard origin port.
ERR_ACCESS_DENIED|vr The request was denied due to limits placed in the configuration for blocking requests when the overall traffic goes higher than the configured threshold.
ERR_ACCESS_DENIED|waf The request was denied by the configured Web Application Firewall rules.
ERR_DNS_FAIL The origin server IP address could not be resolved from the origin hostname.
ERR_DNS_TIMEOUT The edge server timed out trying to resolve the origin hostname to an IP address.
ERR_NO_GOOD_FWD_IP This is triggered by the Origin Health Detect feature. This code means that edge server intentionally did not go forward to the origin because the origin is flagged as bad due to too many failures in retrieving content from it. This feature reduces the load on origin and gives some time for the origin to recover. As the origin starts to recover and get healthy, these errors will go away.
ERR_CONNECT_FAIL Connection to the origin server from the edge server timed out. The connection was never established.
ERR_CONNECT_TIMEOUT Connection to the origin server from the edge server timed out. The connection was never established.
ERR_DNS_IN_REGION This is not an error and doesn’t indicate any failure in transaction. This means that an edge server contacted a different server in the same location. When this condition occurs, the edge server will simply go to the origin server to retrieve the content.
ERR_SSL_CONNECT_TIMEOUT The SSL connection to the origin server from the edge server timed out.
ERR_CLIENT_ABORT The client aborted the request before the edge server sent the headers or the full object.
ERR_CLIENT_READ_TIMEOUT The edge server timed out waiting for data from the client. This is more likely to be seen on POST requests.
ERR_FORWARDING_DENIED The request was not sent to the origin server. This is normal in the case of SureRoute test objects, when some requests will be aborted by the edge server if the fastest path to the origin has already been determined.
ERR_FWD_ENTRY_ABORTED The forward connection to the origin from the edge server was aborted.
ERR_NO_FWD_HOSTS The edge server was unable to resolve any of the potential forward hostnames (origin or cache hierarchy parent or SureRoute parent) to an IP address. This indicates either a DNS problem or a problem with the map names being misconfigured or nonexistent.
ERR_READ_TIMEOUT The forward connection to the origin server from the edge server timed out.
ERR_FWD_SSL The forward SSL handshake with the origin server failed.
ERR_REFERER_DENIED Access to the page was denied due to the referrer check feature in the configuration. The HTTP Referer header in the request did not match the list of allowed domains.
ERR_MAX_REDIR_CHASE The edge server tried to follow the redirects returned from the origin server, but the number of attempts to chase the redirects before the content could be downloaded exceeded the configured threshold. The edge server served a 404 error message to the client.
ERR_READ_ERROR The TCP connection from the edge server to the origin server was broken before the headers and object were successfully downloaded. If this happens even though the origin is healthy, you can try lowering the persistent connection timeout to be lower than origin’s setting, or you can try disabling the persistent connection feature on the edge server.
ERR_FWD_BAD_HEADERS|InvalidForwardReply The headers returned from the origin server to the edge server were malformed or too large. The error will occur when the HTTP response status line is missing or malformed or when the origin response headers exceed a configured limit (default is 8192 bytes).
ERR_GZIP Read error happened due to compression.
ERR_URL_DIS_AUTH The edge server denied this request because URL-based edge authorization feature rejected this request.
ERR_OBJ_TOO_BIG The response object is larger than what is permitted by the configuration settings.
ERR_POC_FWD_OBJ_TOO_BIG The response object is larger than what is permitted by the configuration settings.

TCP Errors

The following error codes may appear within UrlDebug.httpResponse[] data:

Code Description
TCP_HIT This content was served from cache on this edge server. The content was retrieved from disk cache.
TCP_MISS This content was not on cache, hence the edge server retried the content from another edge server or origin.
TCP_REFRESH_HIT This content was in cache but it was stale, so this edge server went to origin or another server to check whether the cached content was still valid with an If-Modified-Since request. Because the content on the cache was not invalid, the edge server served the response from the cache.
TCP_REFRESH_MISS The requested content was in cache but it was stale, so this edge server went to origin or another server to check whether the cached content was valid via an If-Modified-Since request. Because the content was invalid, the edge server downloaded a fresh copy of the content from the upstream server and served it back.
TCP_REFRESH_FAIL_HIT The requested content was in cache but it was stale, so this edge server went to origin or another server to check whether the cached content was valid via an If-Modified-Since request. Because the request to validate the content failed, the edge server served the stale content.
TCP_IMS_HIT The edge server received an If-Modified-Since request from the client. The content was valid, so the edge server served the content from cache.
TCP_NEGATIVE_HIT The edge server served an error response from cache because a previous request for that client had failed. Edge servers cache some error responses negatively for a very short time.
TCP_MEM_HIT This content was served from cache. The content was retrieved from memory cache.
TCP_DENIED The request was denied for an unspecified reason.
TCP_COOKIE_DENY The request was denied due to cookie authentication.

Object Status Codes

Diagnostics data features objStatus members whose values specify a combination of letter codes that characterize aspects of a request. The table below shows codes as they may apply to either edge/client or edge/origin transactions.

Code Client Origin Description
a SureRoute is enabled.
d The object had to be fetched from disk.
D Uses SureRoute direct policy. The edge server chose to go directly to the origin server because it was fastest in the most recent race.
e If ghost served the last byte of the object to the client, whether the request is of byte-range type or not. If a range request was made, this means that the server completed serving a range request that included the last byte.
F The request triggered prefetching of embedded objects based on the Prefetching feature.
g If Akamai contacted an ICP peer server.
G If a forward request was made to satisfy an ICP peer.
i The object was found in the file system buffer cache, or the request was for an ESI fragment.
K The request was for a prefetched object.
m The entire object was in the server’s memory cache.
n The object was negatively cached, such as a 404.
N The forward request was to a NetStorage domain.
o Whether the request was to the origin server.
p Akamai contacted another hierarchy parent edge server.
P If a forward request or response was made to satisfy a cache hierarchy child
r If this is an authorization request to a remote auth server.
s The object was stale, and needed validation.
t The request was for a SureRoute test object.
u The edge server ungzipped the object at some point, perhaps to serve a client that doesn’t accept gzip, or for ESI. See also z and Z.
V The object TTL was set in metadata.
W The object TTL was set in response headers.
x If no-store was set in the metadata file.
y If no-store was turned on in the response header.
z The response was served to the client Content-Encoded: gzipped. See also u and Z.
Z An edge server, not necessarily this edge server, zipped the object at some point. See also z and u.

Errors

This section provides details on the data object that reflects the API’s common response to error cases, and lists the API’s range of response status codes for both error and success cases.

Error Responses

In case of error, this API responds with JSON objects that follow the HTTP Problem Details standard. The following shows a typical error response object:

{
    "type": "https://problems.luna.akamaiapis.net/diagnostic-tools/bad-request",
    "title": "Bad Request",
    "status": 400,
    "detail": "Invalid Argument",
    "instance": "/diagnostic-tools/v2/ip-addresses/61.213.151.92/log-lines?startTime=2016-02-10T00:00:00Z&noOfMins=10&noOfLogLines=10000",
    "method": "GET",
    "requestTime": "2016-02-10T22:18:20.505Z",
    "errors": [
        {
            "error": "Invalid noOfLogLines query param. Limit is 5000",
            "fieldName": "noOfLogLines"
        }
    ]
}

HTTP Status Codes

This section lists the full range of response codes the API may produce.

Code Description
200 The operation was successful. This also results from polling an ongoing process.
202 Resource successfully accepted. This signals the start of an asynchronous process.
303 The requested item is available at the link provided, once the asynchronous process completes.
400 Bad Request.
403 Access is forbidden. This error typically occurs for tools that depend on certain features being available under your product and contract.
404 Resource not found.
429 Too many requests. This API operation is rate-limited.
500 Internal server error.
502 Platform timeout error.
503 Service is temporarily unavailable.

Last modified: 11/5/2018