Keynote NextGen API reference

Overview

Dynatrace Keynote’s Next Generation API allows you direct access to results data and measurement meta-data (such as agents used and URLs measured) for your Keynote synthetic measurements in real time.

You can access the underlying data that powers MyKeynote graphs, specifically, the data found in the Dashboards, Charts, or Real User tabs, which you can now consume to construct your own dashboard and trending visualizations.

Main features

The NextGen API supports:

  • Full access to metrics and dimensions loaded from the database
  • Metric names that match the MyKeynote UI
  • Any combination of grouping and filtering
  • Auto-detection of bucketing for data aggregation—see Data Bucketing below for details.
  • Custom bucketing
  • Average,  standard deviation, median, and various percentile values for most metrics in trend and table calls 
  • Dynamic calculation of the amount of data returned; no fixed limits
  • Auto-detection of the level of synthetic monitoring (summary, page)—by default, summary, or overall measurement-level data, is returned.

You can control the level of monitoring based on how you group data. For example, if you request user experience time (uxtme) and group by page, page-level data is returned.

For a comparison of NextGen API metrics to older Keynote API systems such as SDA Datafeed or XML Datafeed/Datapulse, see the metrics mapping document.

Supported products

You must be a Keynote customer to use the API methods. The following monitoring products are currently supported by the Next Generation API:

  • Real browser monitoring (TxP)
  • Emulated browser monitoring (ApP)
  • Mobile web monitoring (MWP)

How to issue requests

The NextGen API uses a REST architecture—you issue API commands as HTTP GET requests. You may do this machine-to-machine or interactively by constructing the URL in a browser. 

The URL below shows the syntax of a request for synthetic data:

https://ultraapi.keynote.com/v3.2/synthetic/<requesttype>?login=<user_login>&pass=<md5_hash_password>&[other-parameters]

We can break this request down into logical segments:

  • The hostname of the API system, which is the same for all calls: https://ultraapi.keynote.com
  • API version number and the request for synthetic data (same for all calls): /v3.2/synthetic
  • The API method invoked: /<request-type>?, e.g., /info?
  • Credentials (substitute your own credentials in placeholders): login=<user_login>&pass=<md5_hash_password>
  • Method parameters, for example: &monid=<slot_ID>

The very first parameter in the call, after <request-type>?, is not preceded by & (login=<user_name> above); all subsequent parameters are preceded by &, e.g., &pass=<md5_hash_password> above.

You can provide multiple values for parameters in a comma-separated list, e.g., you can ask for data on several metrics by specifying &metric=uxtme,count. Likewise, you can group data by multiple dimensions and provide multiple values for each dimension, for example:

&group=country,city&country=us,fra&city=<uscity1>,<uscity2>,<fracity1>,<fracity2>

When constructing API calls in your browser, you’ll find the results much easier to view with a JSON browser plugin. For example, try this Google query: https://www.google.com/search?q=json+plugin

Authentication

We currently support basic authentication using MD5 hash. You need MyKeynote login credentials associated with a customer agreement ID.  You may use any MD5 generator. See https://www.google.com/search?q=generate%20md5%20hash for available online MD5 hash generators. This information is required to run every call.

Request types

The NextGen API uses a few request types to handle all data requests. While the legacy synthetic API had a list of request types corresponding to different areas of MyKeynote, the NextGen API focuses directly on efficient retrieval of the underlying data.

info

Get information such as slot details, details about the Keynote agent infrastructure, supported metrics, and dimensions for grouping and filtering data.

trend

Get data by time bucket—corresponds to a typical time graph or data point graph where data is aggregated by time buckets for display.

table

Get data grouped by any dimension such as country or device type to generate dashboards or graph types where tabular data is needed.

har

Download the HAR data for the waterfall graphs of all pages in a data point.

scoe

Download reference or error screenshots.

Responses

The NextGen API supports two formats for response content: CSV and JSON.

  • If not specified, JSON is the default response format. JSON responses return two objects:
    • meta: The header with the list of API call parameters that have been used to compute the data returned 
    • data: The list of results
  • Use the parameter &format=csv for CSV data. The resulting result.csv file is downloaded automatically.

Note

This response format does not apply to the har or scoe calls, which return HAR data and an image respectively.

The API no longer has fixed limits on the amount of data returned in responses. A cost calculator algorithm returns a number of data points that is subject instead to a maximum based on the number of slots queried; their frequency; and the number of agents, pages, and objects.

Note

We maintain 6 weeks’ of data unless you deploy your scripts with the paid option of maintaining 8-12 weeks’ of data.

Data bucketing

Data bucketing for the trend API call enables users to specify the unit of time by which data should be aggregated. However, we recommend that users avail of our automatic data bucketing feature, which selects an appropriate bucket based on the duration for which you request data.

Note

Bucketing is no longer required for the table API call.

The limits of data that can be retrieved for each time bucket are listed below. All data returned, regardless of bucket, is subject to a maximum of 100000 rows (records) per API call. The bucket parameter of the trend call takes the following values:

  • second: Data is aggregated by the second from the top of the second. You can query up to 500,000 records; you get back up to 100,000 records.
  • minute: Data is aggregated by the minute from the top of the minute. You can query up to 500,000 records; you get back up to 100,000 records.
  • hour: Data is aggregated hourly from the top of the hour. You can query up to 1 million records; you get back up to 100,000 records.
  • day: Data is aggregated daily from the top of the day. There is no limit on the number of records queried or returned.
  • month: Data is aggregated monthly from the top of the month. There is no limit on the number of records queried or returned.  
  • year: Data is aggregated yearly. There is no limit on the number of records queried or returned.

Bucketing begins data aggregation at the top of the time unit specified and aggregates data for entire time units in the duration requested. For example, if you request data bucketed hourly from 5:30 p.m. - 9:30 p.m., you will see aggregated data for 6:00-6:59 p.m., 7:00-7:59 p.m., and 8:00-8:59 p.m.

Custom bucketing

The bucketsize parameter, used in conjunction with bucket, allows you to change the aggregation interval. When specifying bucketing by the second, minute, hour, or day, you can change the bucket size even further by using bucketsize. For example:

bucket=minute&bucketsize=5 5-minute bucket
bucket=minute&bucketsize=15 15-minute bucket
bucket=hour&bucketsize=4   4-hour bucket
bucket=day&bucketsize=7   7-day bucket

For a given start and end time, using bucketsize returns fewer data points in results than if only using bucket.

Rate limits

In order to manage our system capacity, we limit the maximum number of queries each company can make over a period of time. 3600 API requests per hour may be made per company ID. This is shared among all logins associated with that company ID.

We reserve the right to adjust this limit periodically for our free API and to maintain a high level of service for all customers. If you exceed your request limit per hour, the API will return a LIMITEXCEEDED error in the response. If we find that our systems are having performance issues we may reduce the limits on the API without notice. If this happens we will make best efforts to restore service before adjusting the rate limits.

NextGen API methods

info

Description

This call allows you to get a list of information such as metrics available for a service, dimensions available for grouping and filtering data, slot information such as slot IDs and names, agent information, etc.

Syntax

https://ultraapi.keynote.com/v3.2/synthetic/info?list=<value>&login=<user_login>&pass=<md5_hash_password>

Parameters

Name Description Required?
login Login ID <user_login> of the user Yes
pass MD5 password <md5_hash_password> of API user Yes
list The following values for list are currently supported:
  • metrics - Metrics for the service requested
  • topmetrics - The top 20 most frequently requested metrics
  • dimensions - Dimensions for the service requested
  • slots - Details on slots associated with a user login, including slot ID, slot type (slot or index), name, location, browser, page names, and URLs
  • agents - List of all Keynote synthetic monitoring agents
  • errors - List of all possible errors affecting availability
Yes
format Format for downloading data—defaults to JSON. Use &format=csv for CSV files. No

Example call

This call queries information about the metrics, e.g., time to first paint, for which data is captured.

https://ultraapi.keynote.com/v3.2/synthetic/info?list=metrics&login=<user_login>&pass=<md5_hash_password>

Example response

The output contains the supportedcomputation parameter, showing the various calculations supported by a metric.

{
    meta: {
        list: "metrics",
        dbtime: 14,
        apiversion: "29.0.0.201702141815.143929-2"
    },
    data: [
        {
            mask: "css_3_o_c",
            name: "3rd Party CSS Count",
            desc: "Total number of 3rd Party CSS Files",
            unit: "number",
            actiontype: "legacy",
            supportedproduct: [
                "txp",
                "app",
                "mwp"
            ],
            supportedlevel: [
                "script",
                "page"
            ],
            supportedcomputation: {
                raw: [
                    "avg",
                    "stdev",
                    "percentile",
                    "median"
                ],
                aggregated: [
                    "avg",
                ]
            }
        },

This is a response snippet listing a single metric for synthetic measurements with mask, name, and description information; the standard response includes the list of all supported metrics.

Example call

This call queries information about the slots (measurements) associated with a user ID.

https://ultraapi.keynote.com/v3.2/synthetic/info?list=slots&login=<user_login>&pass=<md5_hash_password>

Example response

The output includes information about measurement creation, expiration, and last update (in ISO format). Measurement frequency is reported in seconds.

{
	meta: {
		list: "slots",
		dbtime: 257,
		apiversion: "29.0.0.201702141815.143929-2"
	},
	data: [
		{
			type: "slot",
			pages: {
				1: {
					uiName: " Page1",
					name: " page1",
					url: "http://www.keynote.com/"
				}
			},
			monid: 548538,
			mname: "www.keynote.com app",
			uiname: "www.keynote.com app",
			bname: "internet explorer",
			dtype: "desktop",
			accountid: 118166,
			mtype: "app"
	},
	{
		type: "slot",
		pages: {
			1: {
				uiName: "Page1",
				name: "page1",
				url: "http://www.keynote.com/solutions/monitoring
/mobile-web-monitoring-scripting-tool"
			}
		},
		agentname: "ApP Standard US10",
		monid: 749428,
		mname: "mite.keynote.com pub",
		uiname: "mite.keynote.com pub",
		bname: "simulated",
		dtype: "desktop",
		accountid: 118166,
		mtype: "app",
		mexpiration: "2020-12-31T07:00:00.000Z",
		mcreated: "2008-08-29T19:34:43.000Z",
		mupdated: "2015-12-15T19:24:05.000Z",
		mfrequency: 900,
		magentcount: 32,
		mscripttimestamp: "2009-04-16T01:35:36.000Z"
	},

This is a response snippet listing two single-page measurements (slot); the full response lists all measurements associated with the user ID making the API call.

trend

This call provides you data by time bucket. This is your typical time graph or data point graph where data is aggregated by a time bucket for display. For example, if you view 2 days’ worth of data in a performance trend graph, performance is shown with a bucket size, e.g., every hour; performance is aggregated based on data points in a given hour.

You can choose the bucketing unit with the bucket parameter, and additionally, customize the size with bucketsize.

Syntax

The two general formats of the trend call below use start and end times (in Epoch time) and relative time (in milliseconds) respectively.

https://ultraapi.keynote.com/v3.2/synthetic/trend?login=<user_login>&pass=<md5_hash_password>&tstart=<start_time_epoch_ms>&tend=<end_time_epoch_ms>&metrics=<metrics>&monid=<slot_id>&group=<dimension>&<dimensionname>=<dimension_value>&bucket=<time_unit>&bucketsize=<x>

https://ultraapi.keynote.com/v3.2/synthetic/trend?login=<user_login>&pass=<md5_hash_password>&rltime=<milliseconds>&metrics=<metrics>&monid=<slot_id>&group=<dimension>&<dimensionname>=<dimension_value>&bucket=<time_unit>&bucketsize=<x>

Parameters

Name Description Required?
login Login ID of the user Yes
pass MD5 password of API user Yes
metrics Metrics(s) you would like performance data on for this call. Use a comma-separated list to request data for multiple metrics. You can even request the average, standard deviation, median, or percentile values for supported metrics using the syntax avg(<metric>), sum(<metric>), stdev(<metric>), median(<metric>), or percentile(<metric>,<percentile_number>) in the list of metrics. See Calculations in NextGen API Metrics Definitions for details. If you run the info call with the parameter list=metrics, you can check the available metrics and supported calculations. Yes
rltime Relative time, or time period ending with the current time for which you would like data, in milliseconds   Use instead of tstart and tend. Yes (if not using tstart and tend)
tstart The start time in milliseconds in Epoch time—returns data greater than or equal this date.  Must be used with tend. You can use rltime instead of tstart and tend. Yes (if not using rltime)
tend The end time in milliseconds in Epoch time—returns data strictly lower than this date.  Must be used with tstart. You can use rltime instead of tstart and tend. Yes (if not using rltime)
monid Slot ID(s) for which you want data Specify multiple slot IDs in a comma-separated list. If calling data for multiple slots, we recommend that you group data by slot ID (&group=monid) so that output is organized by slot ID. Yes
bucket The time unit by which to aggregate data (see Data Bucketing)—we recommend that users not specify a value as this is automatically selected based on your time interval (tendtstart, or rltime). Possible values are:
  • second: Data aggregated by the second—you can receive resource-level data with this bucketing option.
  • minute: Data aggregated by the minute—you can receive resource-level data with this bucketing option.
  • hour: Hourly aggregated data
  • day: Daily aggregated data
  • month: Monthly aggregated data
  • year: Yearly aggregated data
No
bucketsize Requires bucket. Provide the number of units of your chosen bucket you want for a customized bucket size. For example, if you choosing bucketing by the minute, enter the number of minutes that you want for each bucket, e.g., 5. No
group Dimensions by which to group or filter your data (<dimension> in the example above)—you can specify multiple dimensions, e.g., group=continent,country. If you ask to group data but do not specify <dimensionname>=<dimension_value>, data for all possible values of the dimension is returned. group=monid is recommended if multiple Keynote measurements are called. No
<dimensionname> Use the name of a dimension and specify dimension values <dimension_value> you want applied to filter data, e.g., country=us,fr,de&type=smartphone requests data for smartphones for the countries United States, France, and Germany.  If you run the info call with the parameter list=dimensions, you can check the available dimensions for a particular service; to see the countries and cities in which you have measurements running, use list=agents. No
header header=0  disables description of metrics returned. No
sort Sort any metric in ascending order using the + sign (i.e., sort=+pageviews) or descending order with the - sign (i.e., sort=-pageviews). No
limit Allows you to limit the number of records returned, e.g., limit=10. No
skip Skip a certain number of records for pagination, e.g., use skip=100&limit=100 to access records 101 to 200 on page 2. No
format Format for downloading data—defaults to JSON. Use &format=csv for CSV files. No

Example call

This call requests the user experience time and count metrics for a single slot ID with bucketing of an hour.

https://ultraapi.keynote.com/v3.2/synthetic/trend?login=<user_login>&pass=<md5_hash_password>&tstart=1444068249750&tend=1444413849750&metrics=uxtme,count&monid=2023883&bucket=hour"

Example response

{
    "meta": {
        "bucket": "hour",
        "monid": "2023885",
        "company": "xxxxxx",
        "tstart": 1444068249750,
        "tend": 1444413849750,
        "mask": "uxtme,count",
        "metrics": {
            "uxtme": {
                "desc": "Full User Experience time as reported by the browser",
                "unit": "ms",
                "name": "User Experience"
            },
            "count": {
                "desc": "Number of total hits or datapoints",
                "unit": "number",
                "name": "Total number of hits"
            }
        },
        "limit": 10000,
        "dbtime": 14,
        "apiversion": "3.0.11"
    },
    "data": [
        {
            "mtime": 1444100400000,
            "uxtme": 4210,
            "count": 1
        },
        {
            "mtime": 1444104000000,
            "uxtme": 6308.333333333333,
            "count": 3
        },
        {
            "mtime": 1444107600000,
            "uxtme": 20701.4,
            "count": 5
        },
        {
            "mtime": 1444136400000,
            "uxtme": 4754.333333333333,
            "count": 3
        },
        {
            "mtime": 1444154400000,
            "uxtme": 5908.9,
            "count": 10
        },
        {
            "mtime": 1444158000000,
            "uxtme": 9968.736842105263,
            "count": 19
        },
        {
            "mtime": 1444165200000,
            "uxtme": 5950.88,
            "count": 25
        },
        {
            "mtime": 1444183200000,
            "uxtme": 13313,
            "count": 9
        },
        {
            "mtime": 1444186800000,
            "uxtme": 12059.083333333334,
            "count": 12
        },
        {
            "mtime": 1444190400000,
            "uxtme": 9162.8,
            "count": 25
        },
        {
            "mtime": 1444194000000,
            "uxtme": 8570.882352941177,
            "count": 34
        },
        {
            "mtime": 1444258800000,
            "uxtme": 4949,
            "count": 3
        }
    ]
}

table

This call allows you to group data by any dimension such as country, URL, or device type. This is useful for any other graphs where tabular data is needed.  

Syntax

The two general formats of the table call below use start and end times (in Epoch time) and relative time (in milliseconds) respectively.

https://ultraapi.keynote.com/v3.2/synthetic/table?login=<user_login>&pass=<md5_hash_password>&tstart=<start_time_epoch_ms>&tend=<end_time_epoch_ms>&metrics=<metrics>&monid=<slot_id>&group=<dimension>&<dimensionname>=<dimension_value>

https://ultraapi.keynote.com/v3.2/synthetic/table?login=<user_login>&pass=<md5_hash_password>&rltime=<milliseconds>&metrics=<metrics>&monid=<slot_id>&group=<dimension>&<dimensionname>=<dimension_value>

Parameters

Name Description Required?
login Login ID of the user Yes
pass MD5 password of API user Yes
metrics Metrics you would like performance data on for this call—Use a comma-separated list to request data for multiple metrics. You can even request the average, standard deviation, median, or percentile values for supported metrics using the syntax avg(<metric>), sum(<metric>), stdev(<metric>), median(<metric>), or percentile(<metric>,<percentile_number>) in the list of metrics. See Calculations in NextGen API Metrics Definitions for details. If you run the info call with the parameter list=metrics, you can check the available metrics and calculations. Yes
rltime Relative time, or time period ending with the current time for which you would like data, in milliseconds  Use instead of tstart and tend. Yes (if not using tstart and tend)
tstart The start time in milliseconds in Epoch time—returns data greater than or equal this date. Must be used with tend. You can use rltime instead of tstart and tend. Yes (if not using rltime)
tend The end time in milliseconds in Epoch time—returns data strictly lower than this date.  Must be used with tstart. You can use rltime instead of tstart and tend. Yes (if not using rltime)
monid Slot ID(s) for which you want data Specify multiple slot IDs in a comma-separated list. If calling data for multiple slots, we recommend that you group data by slot ID (&group=monid) so that output is organized by slot ID. Yes
group Dimensions by which to group or filter your data (<dimension> in the example above)—you can specify multiple dimensions, e.g., group=continent,country. If you ask to group data but do not specify <dimensionname>=<dimension_value>, data for all possible values of the dimension is returned. group=monid is recommended if multiple Keynote measurements are called. No
<dimensionname> Use the name of a dimension and specify dimension values <dimension_value> you want applied to filter data, e.g., country=us,fr,de&type=smartphone requests data for smartphones for the countries United States, France, and Germany. If you run the info call with the parameter list=dimensions, you can check the available dimensions for a particular service. No
header header=0 disables description of metrics returned. No
sort Sort any metric in ascending order using the + sign (i.e., sort=+pageviews) or descending order with the - sign (i.e., sort=-pageviews). No
limit Allows you to limit the number of records returned, e.g., limit=10. No
skip Skip a certain number of records for pagination, e.g., use skip=100&limit=100 to access records 101 to 200 on page 2. No
format Format for downloading data—defaults to JSON. Use &format=csv for CSV files. No

Example call

This call requests the user experience time and count metrics for a single slot ID, grouped by city.

https://ultraapi.keynote.com/v3.2/synthetic/table?login=<user_login>&pass=<md5_hash_password>&rltime=345600000&metrics=uxtme,count&monid=2023885&group=city

Example response

Output includes the automatic bucketing interval applied for the time range requested.

{
    "meta": {
        "bucket": "hour",
        "group": {
            "city": {
                "desc": "City where the agent is located",
                "type": "string",
                "name": "City"
            }
        },
        "monid": "2023885",
        "company": "xxxxxx",
        "tstart": 1444064400000,
        "tend": 1444410000000,
        "metrics": {
            "uxtme": {
                "desc": "Full User Experience time as reported by the browser",
                "unit": "ms",
                "name": "User Experience"
            },
            "count": {
                "desc": "Number of total hits or datapoints",
                "unit": "number",
                "name": "Total number of hits"
            }
        },
        "limit": 10000,
        "dbtime": 11,
        "apiversion": "3.0.11"
    },
    "data": [
        {
            "city": "paris",
            "uxtme": 5181.777777777777,
            "count": 18
        },
        {
            "city": "san francisco",
            "uxtme": 3816.1923076923076,
            "count": 26
        },
        {
            "city": "taipei",
            "uxtme": 7661.851851851852,
            "count": 27
        },
        {
            "city": "tokyo",
            "uxtme": 6309.88,
            "count": 25
        },
        {
            "city": "boston",
            "uxtme": 4519.7037037037035,
            "count": 27
        },
        {
            "city": "seoul",
            "uxtme": 7019.96,
            "count": 25
        },
        {
            "city": "philadelphia",
            "uxtme": 4042.0833333333335,
            "count": 24
        },
        {
            "city": "hong kong",
            "uxtme": 7510.5,
            "count": 24
        },
        {
            "city": "madrid",
            "uxtme": 6792.208333333333,
            "count": 24
        },
        {
            "city": "chennai",
            "uxtme": 10641.384615384615,
            "count": 26
        },
        {
            "city": "amsterdam",
            "uxtme": 5791.619047619048,
            "count": 21
        },
        {
            "city": "los angeles",
            "uxtme": 3855.9615384615386,
            "count": 26
        },
        {
            "city": "singapore",
            "uxtme": 10047.2,
            "count": 21
        },
        {
            "city": "sydney",
            "uxtme": 15861.148148148148,
            "count": 27
        },
        {
            "city": "berlin",
            "uxtme": 6083.909090909091,
            "count": 22
        },
        {
            "city": "stockholm",
            "uxtme": 6349.260869565217,
            "count": 23
        },
        {
            "city": "detroit",
            "uxtme": 4136.375,
            "count": 24
        }
    ]
}

har

This call returns the HAR data for waterfalls of all pages in a data point. You can copy and paste the data into a .har file or an online HAR viewer.

Syntax

https://ultraapi.keynote.com/v3.2/synthetic/har?login=<user_login>&pass=<md5_hash_password>&monid=<slot_id>&agtid=<agent_id>&tgtid=<trans_id>&mtime=<timestamp_epoch_ms>

Parameters

Name Description Required?
login Login ID of the user Yes
pass MD5 password of API user Yes
monid ID of measurement (slot) for which you want data Yes
agtid Agent ID of the data point for which you are requesting HAR data If you run the info call with the parameter list=agents, you can check the available agents and their locations and IDs. Yes
tgtid Transaction ID Yes
mtime The timestamp in milliseconds in Epoch time  Yes

Example call

https://ultraapi.keynote.com/v3.2/synthetic/har?login=<user_login>&pass=<md5_hash_password>&monid=2204070&agtid=42432&tgtid=3111675&mtime=1478153729000

Example output

This sample output shows the beginning of HAR data displayed in the browser.

{
	log: {
		browser: {
			comment: "",
			version: "",
			name: "chrome"
		},
		creator: {
			comment: "",
			version: "13.0",
			name: "txp"
		},
		____sdim: {
			  model: "windows",
			  state: "il",
			  edesc: "Transaction Timed Out",
			  aid: 42432,
			  aname: "chicago centurylink txp",
			  city: "chicago",
			  esubgroup: "exec",
			  name: "step test web-recorder txp script prod val 2",
			  ie: -99000,
			  tid: 3111675,
			  btd: 626076929,
			  idesc: "Transaction Timed Out",
			  sid: 2204070,
			  nbpages: 2,
			  so: "P",
			  ins: 115015,
			  agreement: 158188,
			  avail: 1,
			  cid: 88805,
			  egroup: "tout",
			  country: "us",
			  tts: "2016-11-03T06:15:29.000Z",
			  ee: -99000,
			  device: "desktop",
			  continent: "north america",
			  success: 0,
			  cname: "keynote production"
		  },

scoe

This call returns the reference or error screenshot (screen capture on error) for a page in a measurement. By default, the scoe call returns the error screenshot. The addition of the optional ref parameter returns the reference screenshot.

Syntax

The code examples below show the syntax for requesting an error and reference screenshot, respectively.

https://ultraapi.keynote.com/v3.2/synthetic/scoe?login=<user_login>&pass=<md5_hash_password>&monid=<slot_id>&agtid=<agent_id>&tgtid=<trans_id>&pgeid=<page_number>&mtype=<service_type>&mtime=<timestamp_epoch_ms>

https://ultraapi.keynote.com/v3.2/synthetic/scoe?login=<user_login>&pass=<md5_hash_password>&monid=<slot_id>&agtid=<agent_id>&tgtid=<trans_id>&pgeid=<page_number>&mtype=<service_type>&mtime=<timestamp_epoch_ms>&ref=1

Parameters

Name Description Required?
login Login ID of the user Yes
pass MD5 password of API user Yes
monid ID of measurement (slot) for which you want data Yes
agtid Agent ID of the data point for which you are requesting HAR data If you run the info call with the parameter list=agents, you can check the available agents and their locations and IDs. Yes
tgtid Transaction ID Yes
pgeid Page ID of the page with the screenshot—enter a numerical value. Yes
mtype Service type, i.e., txp, app, or mwp. Yes
mtime The timestamp in milliseconds in Epoch time  Yes
ref Provide a value of 1 to request the reference screenshot. No

Example call

This call requests the error screenshot for a page in a specific data point as defined by its monitor ID, agent ID, target ID, and timestamp.

https://ultraapi.keynote.com/v3.2/synthetic/scoe?login=<user_login>&pass=<md5_hash_password>&monid=2204070&agtid=42432&tgtid=3111675&pgeid=1&mtype=txp&mtime=1478153729000

Example response

The output is an image displayed in your browser window.

Error codes

The Keynote API returns the HTTP status codes 200.

Any errors have messages showing a value and description:

Name Description Value
NOTCONNECTED Not connected to database 1
AGGREGATEERROR Issue during Mongo Aggregate Call 2
TRENDERROR Issue during Trend API call 3
TABLEERROR Issue during Table API call 4
INFOERROR Issue during Info API call 5
BADLIST Specify a correct list in the request 6
CREDENTIALERROR No data found for this user 7
TIMEERROR Update query with smaller range or change bucket type 8
ACTIVEERROR Issue during Active API call 9
CUSTOMPATHERROR Issue during API call 10
UNKOWNERROR Unknown issue during API Call 11
LIMITEXCEEDED Too many API calls 12
POST Not a valid POST request 13
NODATA No data found for this call 14
IRL Issue during account db routing retrieval 15
TIMEOUT The request timed out. Reduce API query or try again later. 16

For example, if you log in with faulty credentials, the API call returns No data found for this user (CREDENTIALERROR, error value 7):

{ "error" : "No result",
  "reason" : { "code" : 7,
      "description" : "No data found for this user",
      "name" : "CREDENTIALERROR"
    }
}

If the service is unavailable, HTTP status code 503 is returned.