DataStream API v1

Reports on real-time application activity, with aggregated metrics on complete request or response cycles and origin response times.

Learn more:


Overview

DataStream is a reporting API service that provides real-time access to application activity data, including aggregated metrics on complete request and response cycles and origin response times.

DataStream’s aggregated metrics provide real-time insight to help you define the end-user experience on your application. It simplifies web application monitoring for applications deployed to cloud hosting providers and those that leverage third-party services.

This API offers a programmatic alternative to many of the features available in Akamai Control Center.

Who should use this API

Use this API service if you want to monitor all transactions delivered through the Akamai platform and send the transaction log data to one or more destinations.

Get 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 DataStream, and set the access level to READ-ONLY.

How to use this API

For every transaction coming through the Platform, Akamai stores and aggregates your logs. After that, this data is available to you for 12 hours.

Compare. You can test your new code or CDN configuration on production. Gather near real-time data to measure the impact of your changes on the CDN’s efficiency and usage, without taking a risk of a bad use experience or downtime.

Monitor. You can ingest near real-time data into your log analytics platform and build your own dashboards and alerts to spot any issues or service disruptions.

Benchmark. You can access past data on your CDN’s health, efficiency, and usage for analyzing and benchmarking. You can also develop your own solutions to store historical data.

Diagnose. You can receive pre-aggregated metrics over a specific window of time. Use this option to easily switch between aggregated and raw data views for diagnostics or root cause analysis.

Hypermedia

This API provides hypermedia link members to help the client to navigate paginated data. This example within a metadata object shows the set of links to navigate back and forth within the results, to go to the first or last page, or to access the current page

{
  "metadata": {
    "streamId": "007",
    "page": 0,
    "pageCount": 93,
    "perPage": 1,
    "totalNumRecords": 93,
    "links": [
      {
        "self": "/datastream-pull-api/v1/streams/007/raw-logs/?start=2017-10-23T08:30:00Z&end=2017-10-24T08:30:00Z&page=0&size=1",
        "first": "/datastream-pull-api/v1/streams/007/raw-logs/?start=2017-10-23T08:30:00Z&end=2017-10-24T08:30:00Z&page=0&size=1",
        "next": "/datastream-pull-api/v1/streams/007/raw-logs/?start=2017-10-23T08:30:00Z&end=2017-10-24T08:30:00Z&page=1&size=1",
        "last": "/datastream-pull-api/v1/streams/007/raw-logs/?start=2017-10-23T08:30:00Z&end=2017-10-24T08:30:00Z&page=92&size=1"
      }
    ]
  }
}

Resources

This section provides details on each API operation.

This API provides two different types of report:

  • Aggregate Logs. Based on your raw server logs, you can gather responses aggregated for the given aggregate dimension for a specified time frame. For example, you can report how many success requests in the 200 range there have been every 15 minutes.

  • Raw Logs. Lets you gather raw server log data for a specified start and end time. The result for a particular time frame is split into separate pages with a specific number (size) of records on each page.

API summary

Download the RAML descriptors for this API.

Operation Method Endpoint
Report raw logs GET /datastream-pull-api/v1/streams/{streamId}/raw-logs{?start,end,page,size}
Report aggregate logs GET /datastream-pull-api/v1/streams/{streamId}/aggregate-logs{?start,end,aggregateMetric,page,size}

Report raw logs

Reports raw log data for the specified time range.

GET /datastream-pull-api/v1/streams/{streamId}/raw-logs{?start,end,page,size}

Sample: /datastream-pull-api/v1/streams/272/raw-logs?start=2017-10-23T08%3A30%3A00Z&end=2017-10-23T09%3A30%3A00Z&page=1&size=100

Parameter Type Sample Description
URL path parameters
streamId String 272 The identifier of the stream.
Required query parameters
end String 2017-10-23T09:30:00Z Specifies the end time for the raw log data request. The time is an ISO 8601 timestamp.
start String 2017-10-23T08:30:00Z Specifies the start time for the raw log data request. The time is an ISO 8601 timestamp.
Optional query parameters
page Integer 1 The page number of the report. Page numbers start at zero.
size Integer 100 Defines the number of records per page of the report.

Status 200 application/json

Object type: Report

Download schema: raw_data_schema.json

Response body:

{
    "numRecords": 3,
    "metadata": {
        "page": 0,
        "pageCount": 1,
        "perPage": 1000,
        "streamId": "5101",
        "totalNumRecords": 3,
        "links": [
            {
                "first": "/datastream-pull-api/v1/streams/5101/raw-logs?start=2020-06-03T20%3A40%3A00Z&end=2020-06-03T20%3A50%3A00Z&page=0&size=1000",
                "last": "/datastream-pull-api/v1/streams/5101/raw-logs?start=2020-06-03T20%3A40%3A00Z&end=2020-06-03T20%3A50%3A00Z&page=0&size=1000",
                "self": "/datastream-pull-api/v1/streams/5101/raw-logs?start=2020-06-03T20%3A40%3A00Z&end=2020-06-03T20%3A50%3A00Z&page=0&size=1000"
            }
        ]
    },
    "data": [
        {
            "cp": "630576",
            "guid": "3c6775c7396bc352db",
            "id": 5101,
            "processedTime": 1591217099220,
            "reqid": "bc352db",
            "start": 1591216918040,
            "type": "Raw",
            "cache": {
                "cacheH": "0/0/0/0/0",
                "cacheHit": "0",
                "cacheStats": "0/10",
                "cacheable": "1"
            },
            "geo": {
                "area": "970",
                "city": "FORTCOLLINS",
                "country": "US",
                "lat": "40.5917",
                "long": "-105.129",
                "region": "CO",
                "zip": "80521-80528+80553"
            },
            "message": {
                "UA": "curl/7.64.1",
                "bytes": "10",
                "cliIP": "216.160.166.223",
                "fwdHost": "datastream.download.akamai.com",
                "httpVer": "1.1",
                "proto": "http",
                "protoVer": "-",
                "queryStr": "%3cscript%3ealert(%27XSS_Test%27)%3c%2fscript%3e",
                "reqHost": "www.ds-sqa-ion.in.edgesuite.net",
                "reqMethod": "GET",
                "reqPath": "/alert/",
                "reqPort": "80",
                "respLen": "Content-Length%3a%2010%0d%0a",
                "status": "404"
            },
            "netPerf": {
                "asnum": "209",
                "clientRTT": "6",
                "downloadStatus": "1110",
                "downloadTime": "615",
                "edgeIP": "199.117.103.60",
                "errCdF29": "ERR_NONE",
                "errCdR14": "ERR_NONE",
                "lastByte": "1"
            },
            "network": {
                "bw": "5000",
                "nw": "qwest",
                "throughput": "vhigh"
            },
            "reqHdr": {
                "reqTime": "1591216918.04"
            },
            "respHdr": {
                "accRange": "Accept-Ranges: bytes",
                "date": "Date: Wed, 03 Jun 2020 20:41:58 GMT",
                "expires": "Expires: Wed, 03 Jun 2020 20:41:58 GMT",
                "respCacheCtl": "Cache-Control: max-age=0",
                "respConn": "Connection: keep-alive",
                "server": "Server: AkamaiNetStorage"
            },
            "waf": {
                "policy": "4437_85847",
                "ver": "2.0",
                "warnActions": "2",
                "warnData": "RXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KCdYU1NfVGVzdCcpPC9zY3JpcHQ XSwgRXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KF0sIEV2aWRlbmNlOiBbYWxlcnQoXSwgRXZpZGVuY2U6IFs8c2NyaXB0XSwgRXZpZGVuY2U6IFs YWxlcnQoXSwgVGhyZWF0LVNjb3JlOiAx",
                "warnMsg": "Detected Cross-Site Scripting Attack",
                "warnRules": "1000002",
                "warnSlrs": "ARGS_NAMES:<script>alert('XSS_Test')</script>",
                "warnTags": "AKAMAI/AAG/XSS"
            }
        },
        {
            "cp": "630576",
            "guid": "446775c71131f93414e",
            "id": 5101,
            "processedTime": 1591217282062,
            "reqid": "1f93414e",
            "start": 1591217275503,
            "type": "Raw",
            "cache": {
                "cacheH": "0/0/0/0/0",
                "cacheHit": "0",
                "cacheStats": "0/311",
                "cacheable": "0"
            },
            "geo": {
                "area": "970",
                "city": "FORTCOLLINS",
                "country": "US",
                "lat": "40.5917",
                "long": "-105.129",
                "region": "CO",
                "zip": "80521-80528+80553"
            },
            "message": {
                "UA": "curl/7.64.1",
                "bytes": "311",
                "cliIP": "216.160.166.223",
                "fwdHost": "datastream.download.akamai.com",
                "httpVer": "1.1",
                "proto": "http",
                "protoVer": "-",
                "queryStr": "%3cscript%3ealert(%27XSS_Test%27)%3c%2fscript%3e",
                "reqHost": "www.ds-sqa-ion.in.edgesuite.net",
                "reqMethod": "GET",
                "reqPath": "/deny/",
                "reqPort": "80",
                "respCT": "Content-Type: text/html\r\n",
                "respLen": "Content-Length%3a%20311%0d%0a",
                "status": "403"
            },
            "netPerf": {
                "asnum": "209",
                "clientRTT": "8",
                "downloadStatus": "1110",
                "downloadTime": "4",
                "edgeIP": "199.117.103.68",
                "errCdF29": "ERR_NONE",
                "errCdR14": "ERR_ACCESS_DENIED",
                "lastByte": "1"
            },
            "network": {
                "bw": "5000",
                "nw": "qwest",
                "throughput": "vhigh"
            },
            "reqHdr": {
                "reqTime": "1591217275.50"
            },
            "respHdr": {
                "date": "Date: Wed, 03 Jun 2020 20:47:55 GMT",
                "expires": "Expires: Wed, 03 Jun 2020 20:47:55 GMT",
                "respCacheCtl": "Cache-Control: max-age=0",
                "respConn": "Connection: close",
                "server": "Server: AkamaiGHost"
            },
            "waf": {
                "denyActions": "3",
                "denyData": "RXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KCdYU1NfVGVzdCcpPC9zY3JpcHQ XSwgRXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KF0sIEV2aWRlbmNlOiBbYWxlcnQoXSwgRXZpZGVuY2U6IFs8c2NyaXB0XSwgRXZpZGVuY2U6IFs YWxlcnQoXSwgVGhyZWF0LVNjb3JlOiAx",
                "denyMsg": "Detected Cross-Site Scripting Attack",
                "denySlrs": "ARGS_NAMES:<script>alert('XSS_Test')</script>",
                "policy": "deny_86287",
                "ver": "2.0"
            }
        },
        {
            "cp": "630576",
            "guid": "8737df1735a20d14511",
            "id": 5101,
            "processedTime": 1591216932260,
            "reqid": "20d14511",
            "start": 1591216858404,
            "type": "Raw",
            "cache": {
                "cacheH": "0/0/0/0/0",
                "cacheHit": "1",
                "cacheStats": "34803/34815",
                "cacheStatus": "1",
                "cacheable": "0"
            },
            "geo": {
                "area": "509",
                "city": "QUINCY",
                "country": "US",
                "lat": "47.1872",
                "long": "-119.8129",
                "region": "WA",
                "zip": "98848"
            },
            "message": {
                "UA": "curl/7.35.0",
                "bytes": "34815",
                "cliIP": "23.79.233.24",
                "fwdHost": "datastream.download.akamai.com",
                "httpVer": "1.1",
                "proto": "http",
                "protoVer": "-",
                "reqHost": "www.ds-sqa-ion.in.edgesuite.net",
                "reqMethod": "GET",
                "reqPath": "/",
                "reqPort": "80",
                "respCT": "Content-Type: text/html\r\n",
                "status": "200"
            },
            "netPerf": {
                "asnum": "35994",
                "clientRTT": "5",
                "downloadStatus": "1100",
                "downloadTime": "8",
                "edgeIP": "23.223.55.135",
                "errCdF29": "ERR_NONE",
                "errCdR14": "ERR_NONE",
                "lastByte": "1"
            },
            "network": {
                "bw": "5000",
                "throughput": "vhigh"
            },
            "reqHdr": {
                "cookie": "COOKIE2-24044710-1591216858",
                "reqTime": "1591216858.40"
            },
            "respHdr": {
                "accRange": "Accept-Ranges: bytes",
                "date": "Date: Wed, 03 Jun 2020 20:40:58 GMT",
                "eTag": "ETag: \\\"12f48e52c6d5298448fe49c05082ff51:1519289789\\\"",
                "expires": "Expires: Wed, 03 Jun 2020 20:40:58 GMT",
                "lastMod": "Last-Modified: Thu, 22 Feb 2018 08:56:29 GMT",
                "respCacheCtl": "Cache-Control: max-age=0",
                "respConn": "Connection: keep-alive\r\nConnection: Transfer-Encoding",
                "server": "Server: AkamaiNetStorage",
                "transEnc": "Transfer-Encoding:  chunked"
            }
        }
    ]
}

Report aggregate logs

Reports aggregated log metric data for the specified aggregate dimension and time range.

GET /datastream-pull-api/v1/streams/{streamId}/aggregate-logs{?start,end,aggregateMetric,page,size}

Sample: /datastream-pull-api/v1/streams/272/aggregate-logs?start=2017-10-23T08%3A30%3A00Z&end=2017-10-23T09%3A30%3A00Z&aggregateMetric=2xx%2C3xx&page=1&size=100

Parameter Type Sample Description
URL path parameters
streamId String 272 The identifier of the stream.
Required query parameters
end String 2017-10-23T09:30:00Z Specifies the end time for the raw log data request. The time is an ISO 8601 timestamp.
start String 2017-10-23T08:30:00Z Specifies the start time for the raw log data request. The time is an ISO 8601 timestamp.
Optional query parameters
aggregateMetric String 2xx,3xx A comma-separated set of any of these aggregate dimensions: 1xx, 2xx, 3xx, 4xx, 5xx, edgeResponseTime, originResponseTime, requestsPerSecond, bytesPerSecond, numCacheHit, numCacheMiss, offloadRate. For example, 2xx,3xx ignores any error responses. If omitted, all dimensions are logged.
page Integer 1 The page number of the report. Page numbers start at zero.
size Integer 100 Defines the number of records per page of the report.

Status 200 application/json

Object type: Report

Download schema: agg_data_schema.json

Response body:

{
    "numRecords": 5,
    "metadata": {
        "aggregateMetrics": "[1xx,2xx,3xx,4xx,5xx,1xx_dist,2xx_dist,3xx_dist,4xx_dist,5xx_dist,edgeResponseTime,originResponseTime,requestsPerSecond,bytesPerSecond,numCacheHit,numCacheMiss,offloadRate]",
        "page": 0,
        "pageCount": 1,
        "perPage": 1000,
        "streamId": "1116",
        "totalNumRecords": 5,
        "links": [
            {
                "first": "/datastream-pull-api/v1/streams/1116/aggregate-logs?start=2020-05-29T17%3A00%3A00Z&end=2020-05-29T17%3A05%3A00Z&page=0&size=1000",
                "last": "/datastream-pull-api/v1/streams/1116/aggregate-logs?start=2020-05-29T17%3A00%3A00Z&end=2020-05-29T17%3A05%3A00Z&page=0&size=1000",
                "self": "/datastream-pull-api/v1/streams/1116/aggregate-logs?start=2020-05-29T17%3A00%3A00Z&end=2020-05-29T17%3A05%3A00Z&page=0&size=1000"
            }
        ]
    },
    "data": [
        {
            "1xx": 0,
            "2xx": 35,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 19263.22,
            "edgeResponseTime": 5.51,
            "endTime": "2020-05-29T17:01:00Z",
            "numCacheHit": 35,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.58,
            "startTime": "2020-05-29T17:00:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 35
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 41,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 22994.67,
            "edgeResponseTime": 8.46,
            "endTime": "2020-05-29T17:00:00Z",
            "numCacheHit": 41,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.68,
            "startTime": "2020-05-29T16:59:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 41
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 38,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 21269.9,
            "edgeResponseTime": 7.76,
            "endTime": "2020-05-29T17:04:00Z",
            "numCacheHit": 38,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.63,
            "startTime": "2020-05-29T17:03:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 38
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 34,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 19081.18,
            "edgeResponseTime": 8.68,
            "endTime": "2020-05-29T17:03:00Z",
            "numCacheHit": 34,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.57,
            "startTime": "2020-05-29T17:02:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 34
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 40,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 22281.02,
            "edgeResponseTime": 7.9,
            "endTime": "2020-05-29T17:02:00Z",
            "numCacheHit": 40,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.67,
            "startTime": "2020-05-29T17:01:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 40
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        }
    ]
}

Data

This section describes the data model for the DataStream API.

Report

Contains aggregated metrics from the raw server logs for the specified time frame and dimensions.

Download schema: agg_data_schema.json, raw_data_schema.json

Sample raw log report:

{
    "numRecords": 3,
    "metadata": {
        "page": 0,
        "pageCount": 1,
        "perPage": 1000,
        "streamId": "5101",
        "totalNumRecords": 3,
        "links": [
            {
                "first": "/datastream-pull-api/v1/streams/5101/raw-logs?start=2020-06-03T20%3A40%3A00Z&end=2020-06-03T20%3A50%3A00Z&page=0&size=1000",
                "last": "/datastream-pull-api/v1/streams/5101/raw-logs?start=2020-06-03T20%3A40%3A00Z&end=2020-06-03T20%3A50%3A00Z&page=0&size=1000",
                "self": "/datastream-pull-api/v1/streams/5101/raw-logs?start=2020-06-03T20%3A40%3A00Z&end=2020-06-03T20%3A50%3A00Z&page=0&size=1000"
            }
        ]
    },
    "data": [
        {
            "cp": "630576",
            "guid": "3c6775c7396bc352db",
            "id": 5101,
            "processedTime": 1591217099220,
            "reqid": "bc352db",
            "start": 1591216918040,
            "type": "Raw",
            "cache": {
                "cacheH": "0/0/0/0/0",
                "cacheHit": "0",
                "cacheStats": "0/10",
                "cacheable": "1"
            },
            "geo": {
                "area": "970",
                "city": "FORTCOLLINS",
                "country": "US",
                "lat": "40.5917",
                "long": "-105.129",
                "region": "CO",
                "zip": "80521-80528+80553"
            },
            "message": {
                "UA": "curl/7.64.1",
                "bytes": "10",
                "cliIP": "216.160.166.223",
                "fwdHost": "datastream.download.akamai.com",
                "httpVer": "1.1",
                "proto": "http",
                "protoVer": "-",
                "queryStr": "%3cscript%3ealert(%27XSS_Test%27)%3c%2fscript%3e",
                "reqHost": "www.ds-sqa-ion.in.edgesuite.net",
                "reqMethod": "GET",
                "reqPath": "/alert/",
                "reqPort": "80",
                "respLen": "Content-Length%3a%2010%0d%0a",
                "status": "404"
            },
            "netPerf": {
                "asnum": "209",
                "clientRTT": "6",
                "downloadStatus": "1110",
                "downloadTime": "615",
                "edgeIP": "199.117.103.60",
                "errCdF29": "ERR_NONE",
                "errCdR14": "ERR_NONE",
                "lastByte": "1"
            },
            "network": {
                "bw": "5000",
                "nw": "qwest",
                "throughput": "vhigh"
            },
            "reqHdr": {
                "reqTime": "1591216918.04"
            },
            "respHdr": {
                "accRange": "Accept-Ranges: bytes",
                "date": "Date: Wed, 03 Jun 2020 20:41:58 GMT",
                "expires": "Expires: Wed, 03 Jun 2020 20:41:58 GMT",
                "respCacheCtl": "Cache-Control: max-age=0",
                "respConn": "Connection: keep-alive",
                "server": "Server: AkamaiNetStorage"
            },
            "waf": {
                "policy": "4437_85847",
                "ver": "2.0",
                "warnActions": "2",
                "warnData": "RXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KCdYU1NfVGVzdCcpPC9zY3JpcHQ XSwgRXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KF0sIEV2aWRlbmNlOiBbYWxlcnQoXSwgRXZpZGVuY2U6IFs8c2NyaXB0XSwgRXZpZGVuY2U6IFs YWxlcnQoXSwgVGhyZWF0LVNjb3JlOiAx",
                "warnMsg": "Detected Cross-Site Scripting Attack",
                "warnRules": "1000002",
                "warnSlrs": "ARGS_NAMES:<script>alert('XSS_Test')</script>",
                "warnTags": "AKAMAI/AAG/XSS"
            }
        },
        {
            "cp": "630576",
            "guid": "446775c71131f93414e",
            "id": 5101,
            "processedTime": 1591217282062,
            "reqid": "1f93414e",
            "start": 1591217275503,
            "type": "Raw",
            "cache": {
                "cacheH": "0/0/0/0/0",
                "cacheHit": "0",
                "cacheStats": "0/311",
                "cacheable": "0"
            },
            "geo": {
                "area": "970",
                "city": "FORTCOLLINS",
                "country": "US",
                "lat": "40.5917",
                "long": "-105.129",
                "region": "CO",
                "zip": "80521-80528+80553"
            },
            "message": {
                "UA": "curl/7.64.1",
                "bytes": "311",
                "cliIP": "216.160.166.223",
                "fwdHost": "datastream.download.akamai.com",
                "httpVer": "1.1",
                "proto": "http",
                "protoVer": "-",
                "queryStr": "%3cscript%3ealert(%27XSS_Test%27)%3c%2fscript%3e",
                "reqHost": "www.ds-sqa-ion.in.edgesuite.net",
                "reqMethod": "GET",
                "reqPath": "/deny/",
                "reqPort": "80",
                "respCT": "Content-Type: text/html\r\n",
                "respLen": "Content-Length%3a%20311%0d%0a",
                "status": "403"
            },
            "netPerf": {
                "asnum": "209",
                "clientRTT": "8",
                "downloadStatus": "1110",
                "downloadTime": "4",
                "edgeIP": "199.117.103.68",
                "errCdF29": "ERR_NONE",
                "errCdR14": "ERR_ACCESS_DENIED",
                "lastByte": "1"
            },
            "network": {
                "bw": "5000",
                "nw": "qwest",
                "throughput": "vhigh"
            },
            "reqHdr": {
                "reqTime": "1591217275.50"
            },
            "respHdr": {
                "date": "Date: Wed, 03 Jun 2020 20:47:55 GMT",
                "expires": "Expires: Wed, 03 Jun 2020 20:47:55 GMT",
                "respCacheCtl": "Cache-Control: max-age=0",
                "respConn": "Connection: close",
                "server": "Server: AkamaiGHost"
            },
            "waf": {
                "denyActions": "3",
                "denyData": "RXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KCdYU1NfVGVzdCcpPC9zY3JpcHQ XSwgRXZpZGVuY2U6IFs8c2NyaXB0PmFsZXJ0KF0sIEV2aWRlbmNlOiBbYWxlcnQoXSwgRXZpZGVuY2U6IFs8c2NyaXB0XSwgRXZpZGVuY2U6IFs YWxlcnQoXSwgVGhyZWF0LVNjb3JlOiAx",
                "denyMsg": "Detected Cross-Site Scripting Attack",
                "denySlrs": "ARGS_NAMES:<script>alert('XSS_Test')</script>",
                "policy": "deny_86287",
                "ver": "2.0"
            }
        },
        {
            "cp": "630576",
            "guid": "8737df1735a20d14511",
            "id": 5101,
            "processedTime": 1591216932260,
            "reqid": "20d14511",
            "start": 1591216858404,
            "type": "Raw",
            "cache": {
                "cacheH": "0/0/0/0/0",
                "cacheHit": "1",
                "cacheStats": "34803/34815",
                "cacheStatus": "1",
                "cacheable": "0"
            },
            "geo": {
                "area": "509",
                "city": "QUINCY",
                "country": "US",
                "lat": "47.1872",
                "long": "-119.8129",
                "region": "WA",
                "zip": "98848"
            },
            "message": {
                "UA": "curl/7.35.0",
                "bytes": "34815",
                "cliIP": "23.79.233.24",
                "fwdHost": "datastream.download.akamai.com",
                "httpVer": "1.1",
                "proto": "http",
                "protoVer": "-",
                "reqHost": "www.ds-sqa-ion.in.edgesuite.net",
                "reqMethod": "GET",
                "reqPath": "/",
                "reqPort": "80",
                "respCT": "Content-Type: text/html\r\n",
                "status": "200"
            },
            "netPerf": {
                "asnum": "35994",
                "clientRTT": "5",
                "downloadStatus": "1100",
                "downloadTime": "8",
                "edgeIP": "23.223.55.135",
                "errCdF29": "ERR_NONE",
                "errCdR14": "ERR_NONE",
                "lastByte": "1"
            },
            "network": {
                "bw": "5000",
                "throughput": "vhigh"
            },
            "reqHdr": {
                "cookie": "COOKIE2-24044710-1591216858",
                "reqTime": "1591216858.40"
            },
            "respHdr": {
                "accRange": "Accept-Ranges: bytes",
                "date": "Date: Wed, 03 Jun 2020 20:40:58 GMT",
                "eTag": "ETag: \\\"12f48e52c6d5298448fe49c05082ff51:1519289789\\\"",
                "expires": "Expires: Wed, 03 Jun 2020 20:40:58 GMT",
                "lastMod": "Last-Modified: Thu, 22 Feb 2018 08:56:29 GMT",
                "respCacheCtl": "Cache-Control: max-age=0",
                "respConn": "Connection: keep-alive\r\nConnection: Transfer-Encoding",
                "server": "Server: AkamaiNetStorage",
                "transEnc": "Transfer-Encoding:  chunked"
            }
        }
    ]
}

Sample aggregate log report:

{
    "numRecords": 5,
    "metadata": {
        "aggregateMetrics": "[1xx,2xx,3xx,4xx,5xx,1xx_dist,2xx_dist,3xx_dist,4xx_dist,5xx_dist,edgeResponseTime,originResponseTime,requestsPerSecond,bytesPerSecond,numCacheHit,numCacheMiss,offloadRate]",
        "page": 0,
        "pageCount": 1,
        "perPage": 1000,
        "streamId": "1116",
        "totalNumRecords": 5,
        "links": [
            {
                "first": "/datastream-pull-api/v1/streams/1116/aggregate-logs?start=2020-05-29T17%3A00%3A00Z&end=2020-05-29T17%3A05%3A00Z&page=0&size=1000",
                "last": "/datastream-pull-api/v1/streams/1116/aggregate-logs?start=2020-05-29T17%3A00%3A00Z&end=2020-05-29T17%3A05%3A00Z&page=0&size=1000",
                "self": "/datastream-pull-api/v1/streams/1116/aggregate-logs?start=2020-05-29T17%3A00%3A00Z&end=2020-05-29T17%3A05%3A00Z&page=0&size=1000"
            }
        ]
    },
    "data": [
        {
            "1xx": 0,
            "2xx": 35,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 19263.22,
            "edgeResponseTime": 5.51,
            "endTime": "2020-05-29T17:01:00Z",
            "numCacheHit": 35,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.58,
            "startTime": "2020-05-29T17:00:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 35
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 41,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 22994.67,
            "edgeResponseTime": 8.46,
            "endTime": "2020-05-29T17:00:00Z",
            "numCacheHit": 41,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.68,
            "startTime": "2020-05-29T16:59:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 41
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 38,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 21269.9,
            "edgeResponseTime": 7.76,
            "endTime": "2020-05-29T17:04:00Z",
            "numCacheHit": 38,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.63,
            "startTime": "2020-05-29T17:03:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 38
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 34,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 19081.18,
            "edgeResponseTime": 8.68,
            "endTime": "2020-05-29T17:03:00Z",
            "numCacheHit": 34,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.57,
            "startTime": "2020-05-29T17:02:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 34
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        },
        {
            "1xx": 0,
            "2xx": 40,
            "3xx": 0,
            "4xx": 0,
            "5xx": 0,
            "bytesPerSecond": 22281.02,
            "edgeResponseTime": 7.9,
            "endTime": "2020-05-29T17:02:00Z",
            "numCacheHit": 40,
            "numCacheMiss": 0,
            "offloadRate": 100,
            "originResponseTime": 0,
            "requestsPerSecond": 0.67,
            "startTime": "2020-05-29T17:01:00Z",
            "streamId": "1116",
            "1xx_dist": {},
            "2xx_dist": {
                "200": 40
            },
            "3xx_dist": {},
            "4xx_dist": {},
            "5xx_dist": {}
        }
    ]
}

Report members

Member Type Agg. Raw Description
Report: Contains aggregated metrics from the raw server logs for the specified time frame and dimensions.
data Report.data[] Contains the time frame and total count for the aggregateMetric result set.
metadata Report.metadata Contains details about the range of the requested data, such as the stream, the time frame and interval, and aggregated metrics. It also shows the number of items in the resulting report and provides hypermedia for navigating to different pages of the results.
Report.data[]: Contains the time frame and total count for the aggregateMetric result set.
1xx Integer The count of 1xx error codes for this time interval.
2xx Integer The count of 2xx error codes for this time interval.
3xx Integer The count of 3xx error codes for this time interval.
4xx Integer The count of 4xx error codes for this time interval.
5xx Integer The count of 5xx error codes for this time interval.
bytesPerSecond Number The average number of bytesPerSecond for this time interval.
cache Report.data[].cache The cache data for the stream’s data set.
cp String Identifies the content provider (CP) code that applies to the set of requests being reported on.
edgeResponseTime Number The average of edgeResponseTime in milliseconds for this time interval.
endTime String An ISO 8601 timestamp that indicates when to stop collecting data.
geo Report.data[].geo Contains the geographic data of the stream’s data set.
guid String A globally unique identifier (GUID) generated for this request.
id Integer Identifies the stream.
message Report.data[].message Contains the message exchange data of the stream’s data set.
netPerf Report.data[].netPerf The network performance data of the stream’s data set.
network Report.data[].network The network data of the stream’s data set.
numCacheHit Integer The total number of requests that received the required data from the cache for this time interval.
numCacheMiss Integer The total number of requests that received the required data from the origin for this time interval.
offloadRate Number The percentage value of cache hit requests divided by the total number of requests for this time interval.
originResponseTime Number The average of originResponseTime in milliseconds for this time interval.
processedTime Number The time when an edge server finishes processing a log line, expressed as a millisecond epoch timestamp. This value indicates which data to return for a request’s time frame specified by the start and end parameters.
reqHdr Report.data[].reqHdr Identifies the request header.
reqid String The request identifier used for troubleshooting purposes.
requestsPerSecond Number The average number of requestsPerSecond for this time interval.
respHdr Report.data[].respHdr Identifies the response header.
start Number The time the request begins on an edge server, expressed in a millisecond epoch timestamp.
startTime String An ISO 8601 timestamp that indicates when to begin collecting data.
type String Identifies the type of response. By default, it’s Raw.
waf Report.data[].waf The Web Application Firewall (WAF) data for the stream’s data set.
Report.data[].cache: The cache data for the stream’s data set.
cacheable Enumeration Whether the object was cacheable. These string values are possible: 1 to indicate that the server determined that the object was cacheable, or 0 to indicate that it wasn’t.
cacheH String Categorizes the bytes served to the client by the forward server type that sent them. It provides data in this format: {peer_server}/{parent_server}/{origin_server}/{NetStorage/Akamai_origin}. For example, 5096/5096/0/0/0.
cacheHit Enumeration Whether the requested object was served entirely from the cache memory. These string values are possible: 1 to indicate that the edge server retrieved the entire object from the cache, or 0 to indicate that the server had to fetch some bytes of the object.
cacheStats String Logs the bytes served entirely from the cache. It provides data in this format: {bytes_from_cache}/{total_bytes_to_client}. For example, 2048/2048.
cacheStatus Enumeration Specifies whether a request was a cache hit or a cache miss and indicates the server type that provided the object. These string values are possible: 0 to indicate that the content was non-cacheable, 1 to indicate that the object was served from a child edge server, 2 to indicate that the object was served from an in-region peer edge server or a parent edge server, 3 to indicate that the object was served from the origin server, or 4 to indicate that the object was served from the cache, but a response to the request had a code status other than 200, 203, 301, 302, or 410.
Report.data[].geo: Contains the geographic data of the stream’s data set.
area String The area code that the requesting IP address maps to.
city String The city that the requesting IP address maps to.
country String The country that the requesting IP address maps to as defined in ISO 3166. By default, it’s US.
lat String The client’s latitude.
long String The client’s longitude.
region String The state that the requesting IP address maps to.
zip String The zip code that the requesting IP address maps to.
Report.data[].message: Contains the message exchange data of the stream’s data set.
bytes String The content bytes served in the client’s response.
cliIP String The IP address of the requesting client.
fwdHost String The hostname of the forward origin server where an edge server sends a request.
proto Enumeration The protocol of the transaction being monitored, either http or https.
protoVer Enumeration The version of the protocol, either 1.0 or 1.1.
queryStr String The query string in the client’s URI.
reqHost String The host header value of the incoming client’s request.
reqMethod String The HTTP method the incoming client’s request uses. For example, GET.
reqPath String The path used by the URL requested from the client. It doesn’t include query parameters. / indicates an empty path.
reqPort String The port number of the incoming client’s request. By default, it’s 80.
respCT String The value of the Content-Type header in the client’s request. By default, it’s text/html.
respLen String The value of the Content-Length header in the client’s response.
status String The HTTP response status sent to the client. By default, it’s 200.
UA String The value of the User-Agent header in the client’s request.
Report.data[].netPerf: The network performance data of the stream’s data set.
asnum String The Autonomous Systems Number for the client’s request.
clientRTT Integer The round-trip time in milliseconds for a request to go from a client to an edge server and back again to the starting point.
downloadStatus Enumeration The overall download status of an object represented by four boolean values. These are available values: FIRST to specify whether the edge server returned the first byte of the object, LAST to specify whether the edge server the last byte of the object, FULL to specify whether the edge server returned the full requested object, or ABORTED to specify whether the client aborted the transaction.
downloadTime String The number of milliseconds from when the edge server first accepts the request to when it sends the last byte, not when the client acknowledges receiving the last byte.
edgeIP String The IP address of the edge server that served the response to the client.
errCdF29 String Identifies an error while forwarding requests.
errCdR14 String Identifies an error while serving the request.
lastByte String The last byte of the object served by this response. Zero indicates part of a byte-range response. By default, it’s 1.
midMileLatency Integer The time in milliseconds for the Akamai Platform to process a request. Usually, it’s the time for a complete request and response cycle, but these values could be separated.
netOriginLatency Integer The time in milliseconds from when the last byte of the request leaves the edge server that’s closest to the data center to when this edge server receives the first byte of the response from the data center.
Report.data[].network: The network data of the stream’s data set.
bw String Specifies the bandwidth usage.
nw String Identifies the network.
nwType String Identifies the network type.
proxy String The type of a proxy or browser. For example, transparent.
throughput String Identifies the average amount of data passing through the stream’s data set.
Report.data[].reqHdr: Identifies the request header.
accEnc String A URL-encoded, comma-separated series of acceptable encodings. For example, gzip,%20deflate.
accLang String A URL-encoded, comma-separated series of acceptable encodings. For example, en-US,en%3bq%3d0.8 translates to en-US,en;q=0.8.
auth String Provides credentials for HTTP authentication.
cookie String Lists the HTTP cookie previously sent by the server in the Set-Cookie field.
DNT String Requests a web application to disable tracking of an individual user. This is Mozilla’s version of the X-Do-Not-Track header. Versions of Firefox, Safari, and IE9 also support this field.
expect String Indicates that the client requires particular server behaviors. A server that doesn’t understand or is unable to comply with any of the values in this field responds with an appropriate error status such as 417 (Expectation Failed).
ifMatch String Only performs an action if the client’s supplied entity matches the same entity on the server.
ifMod String Returns a 304 (Not Modified) status if the content is current. This determines whether the item cached is old or new.
ifNone String Returns a 304 (Not Modified) status if the content is current. This determines whether the item cached is identical to the one requested.
ifRange String Either sends the client any missing parts of the entity or sends a new entity.
ifUnmod String Only sends the response if the entity hasn’t been modified since a specific time.
range String Requests a specific part of an entity by providing a single byte range or a set of byte ranges. The byte range starts with zero.
referer String Specifies the resource of the requested URI.
reqCacheCtl String Specifies caching rules for the response.
reqConn String A URL-encoded representation of the HTTP header that specifies whether the network connection is to remain open following the transaction.
reqContMD5 String Checks the integrity of the message body.
reqTime String The time of the incoming client’s request.
reqVia String Informs the client of any proxies that the response goes through.
te String Includes the transfer encodings that the user agent might accept.
upgrade String Allows the client to specify additionally supported protocols if the server needs to switch them.
xFrwdFor String Identifies the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer.
xReqWith String Identifies Ajax requests.
Report.data[].respHdr: Identifies the response header.
accRange String The content bytes served in the client’s response.
age String The time in seconds that the object has been in cache.
allow String Lists the supported HTTP methods such as GET, PUT or POST.
allowOrigin String Indicates whether the response can be shared with resources with the given origin.
contDisp String Specifies how to display content, on a screen or as a file download.
contEnc String Indicates compression of the message body.
contLang String Lists the languages for the intended audiences.
contRange String Specifies where a partial body can be applied to the full entity body.
date String A URL-encoded representation that reflects the date and time of originating the message.
eTag String Identifies the version of a specific resource.
expires String The timestamp specifying when the message is no longer valid.
lastMod String The timestamp specifying when the resource was last modified by the origin.
link String Links to a resource that contains additional information.
p3p String The Privacy Preferences Project (P3P) header that specifies the intended use of information collected about requesting users.
respCacheCtl String Specifies the caching rules for the response.
respConn String Controls whether the network connection stays open once the current transaction finishes.
respContMD5 String Checks the integrity of the message body.
respVia String Indicates the protocols used to send the response from the originating server to the requesting client.
retry String Indicates the number of seconds that the user agent waits before sending a follow-up request.
server String Provides information about the software that the origin server used to handle the request.
setCookie String Allows sending cookies with the response.
trailer String The header that enables the use of metadata fields.
transEnc String The Transfer-Encoding header that specifies the type of encoding used.
vary String Lists the headers that specify whether to send the response to a subsequent request without any additional validation.
warning String Provides information about transformations made to the message’s entity body.
wwwAuth String Contains challenge information for the requesting client and is required for all 401 responses.
xPwrdBy String Lists the type of technology the web application uses.
Report.data[].waf: The Web Application Firewall (WAF) data for the stream’s data set.
anomScr String A list of comma-delimited anomaly scores for the triggered rules. For example, 1=1,2=15,3=0,4=0,5=0,6=0,7=0,8=0,9=16,10=0,11=16,12=:-958051-973307-973331,13=:-5-5-5,14=:XSS-ANOMALY.
denyActions String A list of semicolon-delimited actions of the triggered denyRules. 3 is the only available value indicating that the rule denied the request. For example, 3;3;3;3;3. See About rules.
denyData String A list of colon-delimited user data that triggered denyRules. User data is a specific string within a selector that triggered the rule.
denyMsg Object A list of semicolon-delimited messages reported by the triggered denyRules. For example, Cross-site Scripting (XSS) Attack;HTTP Response Splitting Attack. See About rules.
denyRules String A list of colon-delimited identifiers of the deny rules triggered by the request. For example, 950004;950910;950002. See About rules.
denySlrs String A list of semicolon-delimited selectors that triggered denyRules. A selector is the location of the request or response that triggered the rule, such as the name of an HTTP header. For example, ARGS:v;REQUEST_HEADERS:My-Test-Header.
pAction String The resulting action for a slow POST attack, either W for warn, or A for deny (abort).
policy String The identifier of the firewall policy applied to the request. See Security policies.
pRate Integer The recorded rate in bytes per second of a slow POST attack.
riskGroups String A list of colon-delimited risk groups whose score thresholds have been triggered. For example, :SQL-INJECTION-ANOMALY:XSS-ANOMALY:INBOUND-ANOMALY. See KONA WAF rules.
riskScores String Risk scores for the triggered rules specified in riskTuples. Within a colon-delimited risk group, each rule’s score is hyphen-delimited. For example, :-5-5:-5-5:-5-.
riskTuples String Identifiers of the rules triggered within each risk group from riskGroups. Within a colon-delimited risk group, multiple rules are hyphen-delimited. For example, :-950001-950901:-958001-958051:-950001-950901.
ver String The version of a WAF data set. Currently, it’s version 2.0. See Upgrade a rule set.
warnActions String A list of semicolon-delimited actions of the triggered warnRules. 2 is the only available value indicating that the rule logged an alert. For example, 2;2;2;2;2. See About rules.
warnData String The user data of the triggered warnRules. User data is a specific string within a selector that triggered the rule. For example, .addimport;%0a. See About rules.
warnMsg String A list of semicolon-delimited messages reported by the triggered warnRules. For example, Cross-site Scripting (XSS) Attack;HTTP Response Splitting Attack. See About rules.
warnRules String A list of a semicolon-delimited identifiers of the warn rules triggered by the request. For example, 950004;950910;950002. See About rules.
warnSlrs String A list of semicolon-delimited selectors of the triggered warnRules. A selector is the location of the request or response that triggered the rule, such as the name of an HTTP header. For example, WEB_ATTACK/XSS;WEB_ATTACK/HTTP_RESPONSE_SPLITTING.
warnTags String The tags of the triggered warnRules. Tags are used for classification and categorization. For example, OWASP_CRS/WEB_ATTACK/XSS. See KONA WAF rules.
Report.metadata: Contains details about the range of the requested data, such as the stream, the time frame and interval, and aggregated metrics. It also shows the number of items in the resulting report and provides hypermedia for navigating to different pages of the results.
aggregateMetrics String Shows the value of the request’s aggregateMetrics parameter that specifies the different aggregate dimensions such as 2xx, 3xx, 4xx, 5xx, edgeResponseTime ,originResponseTime, requestsPerSecond, bytesPerSecond, numCacheHit, numCacheMiss and offloadRate.
links Report.metadata.links[] Contains hypermedia links for paging of the aggregateMetrics result set.
page Integer Specifies the page number of the result set. Page numbers start at zero.
pageCount Integer Specifies the number of pages in the result set.
perPage Integer Specifies the number of records per page in the result set.
streamId String Identifies the stream.
totalNumRecords Integer Specifies the total number of records in the result set.
Report.metadata.links[]: Contains hypermedia links for paging of the aggregateMetrics result set.
first String Specifies the paging link for the first page of the result set.
last String Specifies the paging link for the last page of the result set.
next String Specifies the paging link for the next page of the result set.
previous String Specifies the paging link for the previous page of the result set.
self String Specifies the paging link for the currently requested page of the result set.

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

If an error case occurs, this API responds with JSON objects that follow the HTTP Problem Details standard. This example shows a typical error response object:

{
    "timestamp": "timestamp of err API call",
    "status": "the status code",
    "error": "description of error",
    "exception": "Name of exception",
    "message": "detailed desc of error",
    "path": " the API uri path"
}

HTTP status codes

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

Code Description
200 The operation was successful.
204 No content for the specified query parameters.
400 Bad request or incorrect query parameters.
401 Authentication failure.
500 Internal server error.
503 Service unavailable.