Create Synthetic API Monitoring Job API
This page describes the API used to create and configure a Synthetic API monitoring job.
Create an API Monitoring Job
Creates a new API monitoring job with the specified JSON payload.
Resource URL
POST <api_server_URL>/v1/synthetic/api/schedule
or, use the following URL if you are using the OAuth authentication method:
POST <controller_url>/controller/restui/synthetic/api-schedule/<applicationId>/updateSchedule
Request/Response Format
JSON
Example
- Request
 { "scheduleRunConfigs": [ { "rate": { "value": 15, "unit": "MINUTES" }, "daysOfWeek": [ "SUN", "WED", "THUR", "FRI", "MON", "TUES", "SAT" ], "timezone": "UTC" } ], "description": "jobUI", "apiMetadata": { "script": { "contentType": "JAVASCRIPT", "script": "// Javascript based API Monitoring Test\n\nconst assert = require(\"assert\");\n(async () => {\n var response = await client.get(\"<URL>\");\n assert.equal(response.statusCode, 200);\n assert.equal(response.statusMessage, \"OK\");\n for(var key in response.headers) {\n console.log(`${key} : ${response.headers[key]}`);\n }\n assert.equal(response.body, \"response body\");\n})()" } }, "browserCodes": [ "API" ], "chromeVersions": [], "locationCodes": [ "M50" ], "timeoutSeconds": 15, "appKey": "appKey", "composableConfig": { "numBeforeConfirmedError": 0, "resourceErrorDetection": { "ignoreWhen": { "resourceUrlContains": [], "resourceMimeType": [] }, "onlyWhen": { "resourceUrlContains": [], "resourceMimeType": [] } } }, "performanceCriteria": { "retestOnWarning": false, "retestOnCritical": false, "warningCriterion": [], "criticalCriterion": [] } }- Response
 { "_id": "job_id", "version": 1, "scheduleRunConfigs": [ { "rate": { "value": 1, "unit": "MINUTES" }, "daysOfWeek": [ "WED", "FRI", "SUN", "SAT", "TUES", "MON", "THUR" ], "timezone": "UTC" } ], "userEnabled": true, "systemEnabled": true, "type": "ALL_BROWSERS", "rate": { "value": 15, "unit": "MINUTES" }, "daysOfWeek": [ "WED", "FRI", "SUN", "SAT", "TUES", "MON", "THUR" ], "timezone": "UTC", "description": "https://appdynamics.com", "appKey": "appKey", "scheduleMode": "NONE", "url": "https://appdynamics.com", "browserCodes": [ "Chrome" ], "chromeVersions": [ "86" ], "locationCodes": [ "BOM", "M50" ], "failOnPageError": true, "captureVisualMetrics": true, "simulateMobileBrowser": false, "networkProfile": { "name": "Native", "downloadKbps": 5000, "uploadKbps": 1000, "roundtripTimeMillis": 28, "packetLossPercent": 0, "isDefault": false }, "timeoutSeconds": 15, "state": { "lastFireTime": "2022-04-06T05:57:16.000Z", "nextFireTime": "2022-04-06T06:00:16.000Z" }, "projectedUsage": { "projectedDailyRuns": 2880, "projectedMonthlyRuns": 86400 }, "performanceCriteria": { "retestOnWarning": false, "retestOnCritical": false, "criterion": [] }, "composableConfig": { "numBeforeConfirmedError": 0, "resourceErrorDetection": { "ignoreWhen": { "resourceUrlContains": [], "resourceMimeType": [] }, "onlyWhen": { "resourceUrlContains": [], "resourceMimeType": [] } } }, "created": "2022-04-05T05:30:36.426Z", "updated": "2022-04-05T05:30:36.426Z" }
Request Parameters
| Parameter Name | Parameter Type | Value | Description | Mandatory Request | 
|---|---|---|---|---|
scheduleRunConfigs | - | No | ||
rate | - | No | ||
value | number | Minutes: 1 - 60 Hours: 1 - 24 Days: "null"  | No | |
unit | String | Minutes, Hours, or Days | No | |
daysOfWeek | String | "SUN", "MON", "TUES", "WED", "THUR", "FRI", "SAT" | No | |
timeRange | String | Between hh:mm AM/PM to hh:mm AM/PM | No | |
timezone | String | "UTC" | GMT +/-hh:mm | No | 
startTimeMillis | String | No | ||
endTimeMillis | String | No | ||
description | String | Job name | Name of the job | Yes | 
url | String | "null" or URL to monitor | The URL that you want to monitor. When you use this parameter, the value of the script  | No | 
script | String |    | If you have a scripted job, specify the python-based selenium script used for simulating the user flow or behavior. When you use this parameter, the value of the url  | No | 
apiMetadata | String | Script object of the API monitoring job | Yes | |
contentType | String | Yes | ||
script | String | Yes | ||
browserCodes | String | Use the following Synthetic internal browser codes: 
  | No | |
chromeVersions | String | Chrome browser version 86 | No | |
locationCodes | String | Synthetic internal location codes of each agent location. See Location Codes.  | Yes | |
timeoutSeconds | Number | No | ||
appKey | String | Application Key | You can get the application key from the Controller. 
  | Yes | 
networkProfile  | String | "name": "Native", "downloadKbps": 5000, "uploadKbps": 1000, "roundtripTimeMillis": 28, "packetLossPercent": 0, "isDefault": false | No | |
composableConfig | - | You can use this parameter to configure:
  | No | |
numBeforeConfirmedError | Number | 0, 1, 2, 3, 5, or 10 | Number of retries | No | 
resourceErrorDetection | - | No | ||
ignoreWhen | - | No | ||
resourceUrlContains | String | Comma separated list | List of resource URLs | No | 
resourceMimeType | String | No | ||
onlyWhen | - | No | ||
resourceUrlContains | String | Comma separated list | List of resource URLs | No | 
resourceMimeType | String | No | ||
deviceEmulationProfile | String | No | ||
requestHeader | String | No | ||
performanceCriteria | - | No | ||
retestOnWarning | Boolean | true or false  | Re-test on warning event | No | 
retestOnCritical | Boolean | true or false  | Re-test on critical event | No | 
warningCriterion | String | No | ||
criticalCriterion | String | No | 
Location Codes
| Cloud Location | Codes | 
|---|---|
| Azure | |
| Amsterdam | NET | 
| San Antonio | SAN | 
| Melbourne | ASV | 
| Toronto | CAC | 
| Chennai | SIC | 
| AWS | |
| Mumbai | BOM | 
| Dublin | DUB | 
| Frankfurt | FRA | 
| Sao Paulo | GRU | 
| Hong Kong | HON | 
| Ashburn | IAD | 
| Seoul | ICN | 
| London | LON | 
| Boardman | M50 | 
| Milan | MIL | 
| Montreal | MON | 
| Tokyo | NRT | 
| Paris | PAR | 
| San Francisco | SFO | 
| Singapore | SIN | 
| Sydney | SYD | 
Response Status Codes
| Code | Description | 
|---|---|
| 200 | Success | 
| 401 | Unauthorized | 
| 402 | Exceeded job limit | 
| 422 | Validation failure | 
| 429 | Throttled | 
| 500 | Internal server error |