Monitor performance
Monitor the performance of your site and services through reports. Each report returns data based on the time interval you set.
Support for specific intervals, filters, and metrics may vary by report type.
The Akamai PowerShell Reporting module supports both Reporting API v1 and Reporting API v2. While both APIs provide access to reporting data, they’re built on different data models and may return different results for similar reporting queries.
Reporting API v2 introduces a more flexible query model that lets you dynamically select metrics, dimensions, filters, and grouping options. It also supports multidimensional queries, asynchronous report generation, and pagination.
List all report types
To get a list of available report types, use the Get-ReportType command. It uses Reporting v2 API.
Get-ReportTypereportName : API usage report data
description : Provides requests and volume for API traffic.
reportLink : /reporting-api/v2/reports/common/apis/usage
status : PUBLISHED
ProductFamily : common
ReportingArea : apis
Report : usage
reportName : CDN emissions report data
description : Provides CDN traffic hits, volume and calculated carbon emissions data.
reportLink : /reporting-api/v2/reports/delivery/traffic/emissions
status : PUBLISHED
ProductFamily : delivery
ReportingArea : traffic
Report : emissions
...To see all report types with their metadata, run the Get-LegacyReportType command. It uses Reporting v1 API.
Get-LegacyReportTypename : urlhits-by-time
description : Returns URL traffic data over time.
businessObjectName : cpcode
version : 1
status : PUBLISHED
deprecated : False
internalOnly : False
timeBased : True
supportsPagination : False
outputType : FLAT
requiredProducts : {Basic Traffic Reports}
requiredRoles : {Reports - All privileges , Reports - View only, OTA App User}
available : True
metrics : {@{name=allEdgeHitsPerSecond; description=The rate of hits from Akamai to the end user.; label=Edge Hits/Sec; unit=COUNT_PER_SECOND; summaryStatistic=False}, @{name=allEdgeHitsPerSecondMax; description=The highest rate of hits from Akamai to the end user.; label=Edge Hits/Sec Maximum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsPerSecondMin; description=The lowest rate of hits from Akamai to the end user.; label=EdgeHits/Sec Minimum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsSlope; description=Represents the overall change in the number of hits from Akamai to the end user, a positive number if increasing or a negative number if decreasing.; label=Edge Hits Slope; unit=COUNT; summaryStatistic=True}…}
groupOutlyingValues : @{enabled=False}
groupBy : {date_id}
filters : {@{name=url_end_with; type=string; description=URL ends with the specified string.; required=False}, @{name=url_not_contain; type=string; description=URL
does not contain the specified string.; required=False}, @{name=url_match; type=string; description=URL matches the specified string.; required=False}, @{name=url_not_start_with; type=string; description=URL does not start with the specified string.; required=False}…}
intervals : {MONTH, WEEK, DAY}
dataRetentionDays : 92
links : {@{rel=self; href=/reporting-api/v1/reports/urlhits-by-time/versions/1}, @{rel=versions; href=/reporting-api/v1/reports/urlhits-by-time/versions}, @{rel=all-reports; href=/reporting-api/v1/reports}, @{rel=execute-report; href=/reporting-api/v1/reports/urlhits-by-time/versions/1/report-data}}
name : urlresponses-by-time
description : Returns URL data by response class over time.
businessObjectName : cpcode
version : 1
status : PUBLISHED
deprecated : False
internalOnly : False
timeBased : True
supportsPagination : False
outputType : FLAT
requiredProducts : {Basic Traffic Reports}
requiredRoles : {Reports - All privileges, Reports - View only, OTA App User}
available : True
metrics : {@{name=0XXEdgeHitsMax; description=The highest number of hits from Akamai to the end user returning 0XX responses.; label=Edge Hits/Sec Maximum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=0XXEdgeHitsMin; description=The lowest number of hits from Akamai to the end user returning 0XX responses.; label=Edge Hits/Sec Minimum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=0XXEdgeHitsPerSecond; description=The rate of hits from
Akamai to the end user returning 0XX responses.; label=Edge Hits/Sec; unit=COUNT_PER_SECOND; summaryStatistic=False}, @{name=0XXEdgeHitsSlope; description=Represents the overall change in the number of URLs returning 0XX responses, a positive number if increasing or a negative number if
decreasing.; label=Edge Hits Slope; unit=COUNT; summaryStatistic=True}…}
groupOutlyingValues : @{enabled=False}
groupBy : {date_id}
filters : {@{name=url_end_with; type=string; description=URL ends with the specified string. ; required=False}, @{name=url_not_contain; type=string; description=URL does not contain the specified string.; required=False}, @{name=url_match; type=string; description=URL matches the specified string.; required=False}, @{name=url_not_start_with; type=string; description=URL does not start with the specified string.; required=False}…}
intervals : {MONTH, WEEK, DAY}
dataRetentionDays : 92
links : {@{rel=self; href=/reporting-api/v1/reports/urlresponses-by-time/versions/1}, @{rel=versions; href=/reporting-api/v1/reports/urlresponses-by-time/versions}, @{rel=all-reports; href=/reporting-api/v1/reports}, @{rel=execute-report; href=/reporting-api/v1/reports/urlresponses-by-time/versions/1/report-data}}
...Sort report list types
You can filter the report types with Get-ReportType (Reporting v2 API) by -ProductFamily and -ReportingArea or use a sort term.
Note: If you don't know which product families and reporting areas are available to you, run the
Get-ReportProductFamilyandGet-ReportingAreacommands.
# Request: Gets a list of all reports by a specified product family and reporting area
Get-ReportType -ProductFamily 'delivery' -ReportingArea 'ivm'
# Output: All reports by a specified product family and reporting area (truncated)
reportName : IVM image traffic report data
description : Provides traffic data for images configured to use Image and Video Manager.
reportLink : /reporting-api/v2/reports/delivery/ivm/image-traffic
status : PUBLISHED
ProductFamily : delivery
ReportingArea : ivm
Report : image-traffic
reportName : IVM image stats report data
description : Provides policy stats data for images configured to use Image and Video Manager.
reportLink : /reporting-api/v2/reports/delivery/ivm/image-policy-stats
status : PUBLISHED
ProductFamily : delivery
ReportingArea : ivm
Report : image-policy-stats
...# Request: Gets a sorted list of all report names with their product families and reporting areas
Get-ReportType | Sort-Object -Property reportName | Select-Object reportName, ProductFamily, ReportingArea
# Output: All sorted report names with their product families and reporting areas (truncated)
reportName ProductFamily ReportingArea
---------- ------------- -------------
API usage details report data common apis
API usage report data common apis
CDN emissions report data delivery traffic
CDN traffic report data delivery traffic
IVM image stats report data delivery ivm
IVM image traffic report data delivery ivm
Purge objects details report data delivery purge
Purge requests details report data delivery purge# Request: Gets a sorted list of reports with "IVM" in the name
Get-ReportType | where reportName -Like *IVM* | Sort-Object -Property reportName | Select-Object reportName, ProductFamily, ReportingArea
# Output: All sorted reports with "IVM" in the name
reportName ProductFamily ReportingArea
---------- ------------- -------------
IVM image stats report data delivery ivm
IVM image traffic report data delivery ivmThe number of available reports returned with Get-LegacyReportType (Reporting v1 API) is large, and so is the total information returned for each report. To make the list of report types manageable, use a sort term, for example, name or version.
# Request: Gets a running list of all report names and versions
Get-LegacyReportType | Sort-Object -Property name | Select-Object name, version
# Output: All report names and versions (truncated)
name version
---- -------
actionstaken-by-cpcode 1
actionstaken-by-time 1
aic-by-time 1
aic-by-time 2
aic-by-time-test 1
apirequests-by-agentfamily 1
apirequests-by-endpoint 1
apirequests-by-httpmethod 1
apirequests-by-owner 1
apirequests-internal-by-httpmethod 1
apiusage-by-time 1
...# Request: Gets a list of reports with "today" in the name
Get-LegacyReportType | where name -Like *today* | Sort-Object -Property name | Select-Object name, version
# Output: All reports with "today" in the name
name version
---- -------
todaytraffic-by-response 1
todaytraffic-by-time 1
todaytraffic-by-timeandresponseclass 1
todaytraffic-bytes-by-cpcode 1
todaytraffic-hits-by-cpcode 1Get a specific type
To get details of a specific report type, specify the value for the -Report parameter along with the -ProductFamily and ReportingArea when running the Get-ReportType command (Reporting v2 API).
Note: The
-Reportparameter accepts a value from theReportproperty returned byGet-ReportTypewhen fetching all report types.
Get-ReportType -ProductFamily 'delivery' -ReportingArea 'ivm' -Report 'image-policy-stats'name : IVM image stats report data
description : Provides policy stats data for images configured to use Image and Video Manager.
status : PUBLISHED
metrics : {@{name=hits; description=The number of received image hits.; type=LONG; filterable=True; mandatory=False}, @{name=bytes; description=The number of delivered
bytes of image content.; type=LONG; filterable=True; mandatory=False}, @{name=hits200; description=The number of requests that returned successful responses.;
type=LONG; filterable=True; mandatory=False}, @{name=bytes200; description=The volume of data served with successful responses.; type=LONG; filterable=True;
mandatory=False}…}
dimensions : {@{name=cpcode; description=Content provider (CP) code.; type=LONG; filterable=True; mandatory=False; filterType=TEXT; authorizable=True}, @{name=time1day;
description=Datapoint timestamp for 1 day granularity.; type=LONG; filterable=True; mandatory=False; filterType=TEXT; authorizable=False}, @{name=token;
description=The Image and Video Manager policy token for which you want data included.; type=STRING; filterable=True; mandatory=False; filterType=TEXT;
authorizable=False}, @{name=tokenWithVersion; description=The Image and Video Manager policy token with the version for which you want data included.;
type=STRING; filterable=True; mandatory=False; filterType=TEXT; authorizable=False}…}
predefinedTimeRanges : {LAST_1_DAY, LAST_1_WEEK, LAST_30_DAYS, LAST_90_DAYS}
defaults : @{defaultTimeRange=; defaultMetrics=System.Object[]; defaultSortBys=System.Object[]}
limits : @{maxDimensions=4; maxDateRangeInDays=90; maxRetentionInDays=90; inListFilterMaxValues=10000; textFilterMaxLength=100; dataPointsLimit=50000}
links : {@{rel=self; href=/reporting-api/v2/reports/delivery/ivm/image-policy-stats; describedBy=/reporting-api/v2/reports/schema; allow=System.Object[]}, @{rel=data;
href=/reporting-api/v2/reports/delivery/ivm/image-policy-stats/data; allow=System.Object[]}}Reports fetched with Reporting v1 API have multiple versions to choose from. For example, the load-balancing-dns-traffic-property-all-datacenters-liveness report has four versions, all of which you can use. The versions denote changes to the report structure. If you're not sure which version to use, choose the latest version.
Report versions with the DEPRECATED status are no longer supported and shouldn't be used. To retrieve the current supported version of a report, filter by report name and exclude deprecated reports.
# Get one by name and version
Get-LegacyReportType -Name urlhits-by-time -Version 1
# Filter by name and status
Get-LegacyReportType | Where-Object { $_.name -eq 'urlhits-by-time' -and $_.status -ne 'DEPRECATED' }name : urlhits-by-time
description : Returns URL traffic data over time.
businessObjectName : cpcode
version : 1
status : PUBLISHED
deprecated : False
internalOnly : False
timeBased : True
supportsPagination : False
outputType : FLAT
requiredProducts : {Basic Traffic Reports}
requiredRoles : {Reports - All privileges , Reports - View only, OTA App User}
available : True
metrics : {@{name=allEdgeHitsPerSecond; description=The rate of hits from Akamai to the end user.; label=Edge Hits/Sec; unit=COUNT_PER_SECOND;
summaryStatistic=False}, @{name=allEdgeHitsPerSecondMax; description=The highest rate of hits from Akamai to the end user.; label=Edge Hits/Sec Maximum;
unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsPerSecondMin; description=The lowest rate of hits from Akamai to the end user.; label=Edge
Hits/Sec Minimum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsSlope; description=Represents the overall change in the number of hits
from Akamai to the end user, a positive number if increasing or a negative number if decreasing.; label=Edge Hits Slope; unit=COUNT; summaryStatistic=True}…}
groupOutlyingValues : @{enabled=False}
groupBy : {date_id}
filters : {@{name=url_not_end_with; type=string; description=URL does not end with the specified string.; required=False}, @{name=delivery_type; type=enum;
description=Distinguishes secure from non-secure traffic. Optional. No selection returns both secure and non-secure traffic. ; values=System.Object[];
required=False}, @{name=url_contain; type=string; description=URL contains the specified string. ; required=False}, @{name=url_end_with; type=string;
description=URL ends with the specified string. ; required=False}…}
intervals : {MONTH, WEEK, DAY}
dataRetentionDays : 92
links : {@{rel=self; href=/reporting-api/v1/reports/urlhits-by-time/versions/1}, @{rel=versions; href=/reporting-api/v1/reports/urlhits-by-time/versions},
@{rel=all-reports; href=/reporting-api/v1/reports}, @{rel=execute-report; href=/reporting-api/v1/reports/urlhits-by-time/versions/1/report-data}}Use filters and metrics
You can also reduce the output of most reports returned with Reporting v1 API using filters and metrics. Filters allow you to reduce the data by various conditions, such as IP version or response code. Metrics reduce the result to the metric(s) returned, such as allEdgeHitsPerSecondMax. You can see the filters and metrics in the response for a given report type. For example:
# Request: Using filters
$Report = Get-LegacyReportType -Name urlhits-by-time -Version 1
$Report.filters
# Output: Filters
name type description required
---- ---- ----------- --------
url_not_end_with string URL does not end with the specified string. False
url_start_with string URL starts with the specified string. False
url_end_with string URL ends with the specified string. False
delivery_type enum Distinguishes secure from non-secure traffic. Optional. No selection returns both secure and non-secure traffic. False
url_not_contain string URL does not contain the specified string. False
url_not_match string URL does not match the specified string. False
url_not_start_with string URL does not start with the specified string. False
url_match string URL matches the specified string. False
url_exact_match string URL is an exact match for the specified string. False
url_contain string URL contains the specified string. False# Request: Using metrics
$Report = Get-LegacyReportType -Name urlhits-by-time -Version 1
$Report.metrics
# Output: Metrics
name : allEdgeHitsPerSecond
description : The rate of hits from Akamai to the end user.
label : Edge Hits/Sec
unit : COUNT_PER_SECOND
summaryStatistic : False
name : allEdgeHitsPerSecondMax
description : The highest rate of hits from Akamai to the end user.
label : Edge Hits/Sec Maximum
unit : COUNT_PER_SECOND
summaryStatistic : TrueMetrics are also available for reports returned with Reporting v2 API. In addition, this API version supports dimensions.
# Request: Using metrics
$Report = Get-ReportType -ProductFamily 'delivery' -ReportingArea 'ivm' -Report 'image-policy-stats'
$Report.metrics
# Output: Metrics
name : hits
description : The number of received image hits.
type : LONG
filterable : True
mandatory : False
name : bytes
description : The number of delivered bytes of image content.
type : LONG
filterable : True
mandatory : False# Request: Using dimensions
$Report = Get-ReportType -ProductFamily 'delivery' -ReportingArea 'ivm' -Report 'image-policy-stats'
$Report.dimensions
# Output: Dimensions
name : cpcode
description : Content provider (CP) code.
type : LONG
filterable : True
mandatory : False
filterType : TEXT
authorizable : True
name : time1day
description : Datapoint timestamp for 1 day granularity.
type : LONG
filterable : True
mandatory : False
filterType : TEXT
authorizable : FalseGet report data
There are two ways to get your report data: by creating a new one or getting an existing one.
Generate a report
Run the New-Report command (Reporting v2 API). This method doesn't cache results and is better for large data requests and non-repeating requests.
Large reports can take significant time to generate and may cause synchronous requests to time out. In this case, pass the -Async switch parameter for larger report requests. This returns a query ID you can use to get the report later with Get-Report. If you omit -Async, the command waits for the report to be generated and returns the data when ready.
Note: If you don't know which product families and reporting areas are available to you, run the
Get-ReportProductFamilyandGet-ReportingAreacommands.
# Get report results synchronously
$Report = New-Report -Report 'usage' -ProductFamily 'common' -ReportingArea 'apis' -Start "2026-03-28T00:00:00Z" -End "2026-04-27T00:00:00Z"
# Get report results asynchronously
$AsyncReport = New-Report -Report 'usage' -ProductFamily 'common' -ReportingArea 'apis' -Start "2026-03-28T00:00:00Z" -End "2026-04-27T00:00:00Z" -AsyncAlternatively, use the New-LegacyReport command (Reporting v1 API), which is similar to New-Report, but accepts a bit different parameters. Optionally, you can also provide a report with given -Metrics or -Filters in the command.
$Report = New-LegacyReport -Name 'urlhits-by-time' -Version 1 -Start 2026-05-27T00:00:00Z -End 2026-05-29T00:00:00Z -Interval 'DAY' -ObjectIds 12345Get a report
Use Get-Report (Reporting v2 API) to return available options for a report that was previously requested with New-Report.
You need to pass a report name, product family, and reporting area, along with a query ID returned by the New-Report command. Alternatively, save the output of New-Report and pipe it directly to Get-Report.
Reports created with the -Async switch parameter can take a few minutes to become available. If Get-Report doesn't immediately return report data, wait a short period and try again using the same query ID or the original object returned by New-Report.
Note: If you don't know which product families and reporting areas are available to you, run the
Get-ReportProductFamilyandGet-ReportingAreacommands.
$Results = Get-Report -Report 'usage' -ProductFamily 'common' -ReportingArea 'apis' -QueryID $Report.QueryID
$AsyncReport = New-Report -Report 'usage' -ProductFamily 'common' -ReportingArea 'apis' -Start "2026-03-28T00:00:00Z" -End "2026-04-27T00:00:00Z" -Async
$Results = $AsyncReport | Get-ReportGet-LegacyReport (Reporting v1 API) uses a cacheable result and returns data for subsequent requests more quickly. This method has a query string max. If your query is long, use New-LegacyReport instead. Both commands use the same parameters.
$Results = Get-LegacyReport -Name 'urlhits-by-time' -Version 1 -Start 2026-05-27T00:00:00Z -End 2026-05-29T00:00:00Z -Interval 'DAY' -ObjectIds 12345Parse results
Assign your report results to a variable and parse out the information you need to analyze your data.
-
Printing the results of a report saved to
$Reportmay not display all of the information contained within the variable. To see more information, pipe your results toFormat-Listorfl.$Results | fl data : {@{endpoint=config-dns/2; requestsSum=3025636; requestsPercentage=53.3498703738414; bytesSum=1080925151243; bytesPercentage=79.5413296922291}, @{endpoint=appsec/1; requestsSum=747816; requestsPercentage=13.1859505451034; bytesSum=5167106681; bytesPercentage=0.380228488157313}, @{endpoint=config-gtm/1; requestsSum=569048; requestsPercentage=10.0338034834639; bytesSum=228769938787; bytesPercentage=16.8343433435726}, @{endpoint=identity-management/3; requestsSum=394910; requestsPercentage=6.96329542262642; bytesSum=622262684; bytesPercentage=0.0457900357358679}…} metadata : @{name=API usage report data; links=System.Object[]; rows=69; totalRows=69; requestTime=6/8/2026 2:06:41 PM; evictionTime=6/15/2026 2:07:02 PM} -
Export the results of your request to wherever you normally keep report data.
$Results.data | Export-CSV results.csv
