{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":555,"path":"api-reference/rest-apis/synth-async-api.md","title":"SyntheticsAsyncBulkCreate API","bundle":null,"doc_type":null,"release":"australia","body":"\n# SyntheticsAsyncBulkCreate API\n\nThe SyntheticsAsyncBulkCreate API provides endpoints to manage asynchronous synthetic monitor creation.\n\nUse this API to create up to 5,000 monitors per request. Monitors can be created using data in JSON or CSV format. For more information about using JSON or CSV files with Postman or Terminal, see the [Synthetic Monitoring Developer Guide](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/developer-guides/synth-monitor_dev-guide.md).\n\nThis API requires the [Synthetic monitoring](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/it-operations-management/synthetic-monitoring-landing-page.md) application \\(com.snc.uib.sow\\_synthetics\\), which is available on the ServiceNow Store. Before calling this API, at least one MID Server location must be configured for synthetic monitoring. For instructions, see [Create synthetic monitoring locations](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/it-operations-management/create-synthetic-monitoring-locations.md).\n\n**Parent Topic:**[REST API reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/api-rest.md)\n\n## SyntheticsAsyncBulkCreate - GET /sn\\_sow\\_synthetics/synthetics\\_async\\_bulk\\_create/\\{job\\_id\\}\n\nChecks the progress of a bulk monitor creation job.\n\nTo call this endpoint, the user must have the x\\_snc\\_sow\\_synthetics.synthetics\\_viewer role.\n\n### URL format\n\nVersioned URL: `/api/sn_sow_synthetics/{api_version}/synthetics_async_bulk_create/{job_id}`\n\nDefault URL: `/api/sn_sow_synthetics/synthetics_async_bulk_create/{job_id}`\n\n### Supported request parameters\n\n<table class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr><tr><td>\n\njob\\_id\n\n</td><td>\n\nID of the monitor creation job.Table: Synthetics Bulk Job \\[sn\\_sow\\_synthetics\\_bulk\\_job\\]\n\nColumn: Job ID\n\nData type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n|Name|Description|\n|----|-----------|\n|None| |\n\n### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table id=\"table_ahp_vlg_1jc\" class=\"rest_api_request_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"accept-JSON-only-entry-RESTAPI\">\n\nData format of the response body. Only supports **application/json**.\n\n</td></tr><tr><td>\n\nAuthorization\n\n</td><td>\n\nHTTP basic authentication or OAuth bearer token.Basic authentication format:\n\n```\nAuthorization: Basic <base64-encoded-username:password>\n```\n\nOAuth format:\n\n```\nAuthorization: Bearer <access-token>\n```\n\n</td></tr></tbody>\n</table>|Header|Description|\n|------|-----------|\n|None| |\n\n### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Status code|Description|\n|-----------|-----------|\n|202|Accepted. Job status successfully retrieved.|\n|401|Unauthorized. The user credentials are incorrect or have not been passed.|\n|403|Forbidden. The user must have the x\\_snc\\_sow\\_synthetics.synthetics\\_viewer role to check job status.|\n|404|Not found. A job with the provided ID was not found in table Synthetics Bulk Job \\[sn\\_sow\\_synthetics\\_bulk\\_job\\].|\n|500|Internal server error. An unexpected error occurred while processing the request. The response contains additional information about the error.|\n\n### Response body parameters \\(JSON\\)\n\n<table id=\"table_glp_cmg_1jc\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nerror\n\n</td><td>\n\nObject returned if the API request failed.Data type: Object\n\n```\n\"error\": {\n   \"code\": \"String\",\n   \"details\": {Object},\n   \"message\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nerror.code\n\n</td><td>\n\nError code. Possible values:\n\n-   AUTHENTICATION\\_FAILED\n-   AUTHORIZATION\\_FAILED\n-   JOB\\_NOT\\_FOUND\n-   INTERNAL\\_ERROR\n\nData type: String\n\n</td></tr><tr><td>\n\nerror.details\n\n</td><td>\n\nAdditional details about the error. The elements included in this object vary based on the type of error.\n\nData type: Object\n\n</td></tr><tr><td>\n\nerror.message\n\n</td><td>\n\nError message.Data type: String\n\n</td></tr><tr><td>\n\nresult\n\n</td><td>\n\nObject containing information about the status of the monitor creation job.Data type: Object\n\n```\n\"result\": {\n   \"errors\": [Array],\n   \"job_id\": \"String\",\n   \"message\": \"String\",\n   \"status\": \"String\",\n   \"summary\": {Object}\n}\n```\n\n</td></tr><tr><td>\n\nresult.job\\_id\n\n</td><td>\n\nID of the monitor creation job.Table: Synthetics Bulk Job \\[sn\\_sow\\_synthetics\\_bulk\\_job\\]\n\nColumn: Job ID\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.message\n\n</td><td>\n\nMessage about the status of the monitor creation job.Data type: String\n\n</td></tr><tr><td>\n\nresult.status\n\n</td><td>\n\nStatus of the monitor creation job.Possible values:\n\n-   pending\n-   processing\n-   completed\n-   failed\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.summary\n\n</td><td>\n\nCurrent summary data for the monitor creation job.Data type: Object\n\n```\n\"summary\": {\n   \"created\": Number,\n   \"failed\": Number,\n   \"processed\": Number,\n   \"successful\": Number,\n   \"total\": Number,\n   \"updated\": Number\n}\n```\n\n</td></tr><tr><td>\n\nresult.summary.created\n\n</td><td>\n\nNumber of monitors successfully created.Data type: Number\n\n</td></tr><tr><td>\n\nresult.summary.failed\n\n</td><td>\n\nNumber of monitors that couldn't be created or updated.Data type: Number\n\n</td></tr><tr><td>\n\nresult.summary.processed\n\n</td><td>\n\nNumber of monitors processed by the job.Data type: Number\n\n</td></tr><tr><td>\n\nresult.summary.successful\n\n</td><td>\n\nNumber of monitors successfully created or updated.Data type: Number\n\n</td></tr><tr><td>\n\nresult.summary.total\n\n</td><td>\n\nTotal number of monitors included in the job.Data type: Number\n\n</td></tr><tr><td>\n\nresult.summary.updated\n\n</td><td>\n\nNumber of monitors successfully updated.Data type: Number\n\n</td></tr><tr><td>\n\nresult.errors\n\n</td><td>\n\nError information for failed monitors.Data type: Array\n\n```\n\"errors\": [\n   {\n      \"check_number\": Number,\n      \"error_code\": \"String\",\n      \"error_message\": \"String\",\n      \"name\": \"String\"      \n   }\n]\n```\n\n</td></tr><tr><td>\n\nresult.errors.check\\_number\n\n</td><td>\n\nOrder of the monitor in the **checks** array provided in the request body for [POST /sn\\_sow\\_synthetics/synthetics\\_async\\_bulk\\_create](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/synth-async-api.md).Data type: Number\n\n</td></tr><tr><td>\n\nresult.errors.error\\_code\n\n</td><td>\n\nError code.Possible values:\n\n-   CREATE\\_FAILED\n-   UPDATE\\_FAILED\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.errors.error\\_message\n\n</td><td>\n\nError message.Data type: String\n\n</td></tr><tr><td>\n\nresult.errors.name\n\n</td><td>\n\nName of the monitor.Data type: String\n\n</td></tr></tbody>\n</table>### cURL request\n\nThis example checks the status of a monitor creation job.\n\n```\ncurl \"https://instance.service-now.com/api/sn_sow_synthetics/v1/synthetics_async_bulk_create/BCJ-1776889518281-0baf339f\" \\\n--request GET \\\n--header \"Accept:application/json\" \\\n--user 'username':'password'\n```\n\nResponse body - job processing.\n\n```\n{\n   \"result\": {\n      \"job_id\": \"BCJ-1776889518281-0baf339f\",\n      \"status\": \"processing\",\n      \"message\": \"Processing in progress: 150/500 (30%)\",\n      \"summary\": {\n         \"total\": 500,\n         \"processed\": 150,\n         \"successful\": 148,\n         \"created\": 145,\n         \"updated\": 3,\n         \"failed\": 2\n      }\n   }\n}\n```\n\nResponse body - job successfully completed.\n\n```\n{\n   \"result\": {\n      \"job_id\": \"BCJ-1776889518281-0baf339f\",\n      \"status\": \"completed\",\n      \"message\": \"Job completed successfully. 497 monitors created, 3 updated, 0 failed out of 500 total.\",\n      \"summary\": {\n         \"total\": 500,\n         \"processed\": 500,\n         \"successful\": 500,\n         \"created\": 497,\n         \"updated\": 3,\n         \"failed\": 0\n      }\n   }\n}\n```\n\nResponse body - job completed with errors.\n\n```\n{\n   \"result\": {\n      \"job_id\": \"BCJ-1776889518281-0baf339f\",\n      \"status\": \"completed\",\n      \"message\": \"Job completed. 98 monitors created, 0 updated, 2 failed out of 100 total.\",\n      \"summary\": {\n         \"total\": 100,\n         \"processed\": 100,\n         \"successful\": 98,\n         \"created\": 98,\n         \"updated\": 0,\n         \"failed\": 2\n      },\n      \"errors\": [\n         {\n            \"check_number\": 23,\n            \"name\": \"Invalid Monitor\",\n            \"error_code\": \"CREATE_FAILED\",\n            \"error_message\": \"cmdb_ci is required\"\n         },\n         {\n            \"check_number\": 45,\n            \"name\": \"Bad Location Monitor\",\n            \"error_code\": \"CREATE_FAILED\",\n            \"error_message\": \"Location not found: invalid_sys_id\"\n         }\n      ]\n   }\n}\n```\n\n## SyntheticsAsyncBulkCreate - POST /sn\\_sow\\_synthetics/synthetics\\_async\\_bulk\\_create\n\nCreates multiple synthetic monitors in a single asynchronous operation.\n\nThis endpoint supports creating up to 5,000 monitors per request, with a maximum payload size of 10MB. Calling this endpoint submits a job to asynchronously create the monitors in batches of 500. Check the job status by calling the endpoint [GET /sn\\_sow\\_synthetics/v1/synthetics\\_async\\_bulk\\_create/\\{job\\_id\\}](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/synth-async-api.md).\n\nUploaded data is checked for uniqueness against existing monitors on the fields **name**, **url**, **location**, **valid\\_http\\_code**, and **valid\\_http\\_code\\_type** to avoid creating duplicates.\n\nTo call this endpoint, the user must have the x\\_snc\\_sow\\_synthetics.synthetics\\_editor role.\n\n### URL format\n\nVersioned URL: `/api/sn_sow_synthetics/{api_version}/synthetics_async_bulk_create`\n\nDefault URL: `/api/sn_sow_synthetics/synthetics_async_bulk_create`\n\n### Supported request parameters\n\n<table class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n<table id=\"table_nk2_21q_z3c\" class=\"rest_api_request_body\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nchecks\n\n</td><td>\n\nRequired. Array of endpoint configuration objects to create monitors for. This array can contain a maximum of 5,000 objects per API request.Data type: Array\n\n```\n\"checks\": [\n   {\n      \"alert_severity\": Number,\n      \"alert_tags\": {Object},\n      \"body\": \"String\",\n      \"body_condition\": {Object},\n      \"cmdb_ci\": \"String\",\n      \"credential\": \"String\",\n      \"description\": \"String\",\n      \"enabled\": Boolean,\n      \"headers\": [Array],\n      \"interval\": Number,\n      \"locations\": [Array],\n      \"max_latency_ms\": Number,\n      \"method\": \"String\",\n      \"name\": \"String\",\n      \"parent_service_sys_id\": \"String\",\n      \"query_string\": \"String\",\n      \"should_create_alert\": Boolean,\n      \"single_api_check_sys_id\": \"String\",\n      \"support_group_sys_id\": \"String\",\n      \"valid_http_code\": \"String\",\n      \"valid_http_code_type\": \"String\"\n   }\n]\n```\n\n</td></tr><tr><td>\n\nchecks.alert\\_severity\n\n</td><td>\n\nSeverity level of alerts created for failed monitor tests. Only use this parameter if **checks.should\\_create\\_alert** is set to `true`.Valid values:\n\n-   `1`: Critical\n-   `2`: Major\n-   `3`: Minor\n-   `4`: Warning\n-   `5`: OK\n\nDefault: 1\n\nData type: Number\n\n</td></tr><tr><td>\n\nchecks.alert\\_tags\n\n</td><td>\n\nCustom tags to use for alerts created for failed monitor tests. Only use this parameter if **checks.should\\_create\\_alert** is set to `true`.The elements contained in this object vary based on the tags used. For example, tags could be used for the environment or team as shown below.\n\n```\n//Example custom tags\n\"alert_tags\": {\n   \"environment\": \"production\",     \n   \"team\": \"platform\"     \n}\n```\n\nDefault: Empty object\n\nData type: Object\n\n</td></tr><tr><td>\n\nchecks.body\n\n</td><td>\n\nRequest body for POST, PUT, or PATCH endpoints. Must be a valid JSON or XML string depending on the `Content-Type` header. Maximum size is 10KB.Default: Null\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.body\\_condition\n\n</td><td>\n\nResponse body validation.Data type: Object\n\n```\n\"body_condition\": {     \n   \"expression\": \"String\",\n   \"type\": \"String\"     \n}\n```\n\n</td></tr><tr><td>\n\nchecks.body\\_condition.expression\n\n</td><td>\n\nExpression to check the response body against. The expression can be any string value, including support for regex, JSONPath, and XPath.Default: Null\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.body\\_condition.type\n\n</td><td>\n\nType of validation used to evaluate the response body against **checks.body\\_condition.expression**.Valid values \\(case-sensitive\\):\n\n-   `equals`: Exact match.\n-   `not_equals`: Not equal to.\n-   `contains`: Contains substring.\n-   `not_contains`: Does not contain substring.\n-   `regex`: Regular expression match.\n-   `jsonpath`: JSONPath expression match.\n-   `xpath`: XPath expression match. Used for XML responses.\n\nDefault: Null\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.cmdb\\_ci\n\n</td><td>\n\nRequired. Sys\\_id of the CMDB endpoint configuration item \\(CI\\) or endpoint URL.If a URL is provided that matches an existing endpoint CI, that CI is used for the monitor. If a URL is provided that doesn't match an existing endpoint CI, a CI is created and used for the monitor.\n\nTable: HTTP Endpoint \\[cmdb\\_ci\\_endpoint\\_http\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.credential\n\n</td><td>\n\nSys\\_id of the credential for the monitor to include in the endpoint request.Table: Credentials \\[discovery\\_credentials\\]\n\nDefault: Null\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.description\n\n</td><td>\n\nDescription of the monitor.Data type: String\n\n</td></tr><tr><td>\n\nchecks.enabled\n\n</td><td>\n\nFlag that indicates whether the monitor will start executing immediately after creation.Valid values:\n\n-   true: The monitor starts executing immediately after creation.\n-   false: The monitor won't start executing until it is enabled.\n\nDefault: true\n\nData type: Boolean\n\n</td></tr><tr><td>\n\nchecks.headers\n\n</td><td>\n\nArray of HTTP headers for the monitor to include in the endpoint request.Data type: Array\n\nDefault: Empty array \\(no headers\\)\n\n```\n\"headers\": [\n   {\n      \"name\": \"String\",\n      \"value\": \"String\"\n   }\n]\n```\n\n</td></tr><tr><td>\n\nchecks.headers.name\n\n</td><td>\n\nName of the HTTP header, such as `Authorization` or `Content-Type`.Data type: String\n\n</td></tr><tr><td>\n\nchecks.headers.value\n\n</td><td>\n\nValue of the HTTP header, such as `Bearer token` or `application/json`.Data type: String\n\n</td></tr><tr><td>\n\nchecks.interval\n\n</td><td>\n\nRequired. Frequency of monitor execution in minutes.ServiceNow hosted locations are limited to 6 tests per minute per monitor.\n\nValid values: 1-60\n\nFor example, a value of `5` sets the monitor to execute once every five minutes.\n\nData type: Number\n\n</td></tr><tr><td>\n\nchecks.locations\n\n</td><td>\n\nRequired. List of sys\\_ids of MID Server locations to use for the monitor.Table: Synthetic Location \\[sn\\_sow\\_synthetics\\_location\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.max\\_latency\\_ms\n\n</td><td>\n\nMaximum acceptable response time in milliseconds. The general guideline is 500-5000ms depending on the endpoint type. The monitor checks against this value when testing, and the test fails if the response time exceeds this value.\n\nDefault: Null \\(no latency threshold\\)\n\nData type: Number\n\n</td></tr><tr><td>\n\nchecks.method\n\n</td><td>\n\nRequired. HTTP method to use. Valid values \\(case-insensitive\\):\n\n-   DELETE\n-   GET\n-   HEAD\n-   PATCH\n-   POST\n-   PUT\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.name\n\n</td><td>\n\nRequired. Display name for the monitor.Maximum length: 100 characters\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.parent\\_service\\_sys\\_id\n\n</td><td>\n\nRequired unless the endpoint has a parent service relationship in the CI Relationship \\[cmdb\\_rel\\_ci\\] table. Sys\\_id of the business service this endpoint supports. Used for service-level reporting and impact analysis.Table: Business Service \\[cmdb\\_ci\\_service\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.query\\_string\n\n</td><td>\n\nQuery parameters for the monitor to include in the endpoint request.Default: Null\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.should\\_create\\_alert\n\n</td><td>\n\nFlag that indicates whether the monitor will create an alert if a test fails.Valid values:\n\n-   true: Alerts are created if monitor tests fail.\n-   false: Alerts aren't created if monitor tests fail.\n\nDefault: false\n\nData type: Boolean\n\n</td></tr><tr><td>\n\nchecks.single\\_api\\_check\\_sys\\_id\n\n</td><td>\n\nSys\\_id of the monitor for the endpoint. Use this parameter to update an existing monitor.Table: Single API \\[sn\\_sow\\_synthetics\\_check\\_single\\_api\\]\n\nDefault: Null\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.support\\_group\\_sys\\_id\n\n</td><td>\n\nRequired unless the endpoint has a parent service relationship in the CI Relationship \\[cmdb\\_rel\\_ci\\] table. Sys\\_id of the support group responsible for this endpoint. Used for alert routing and assignment.Table: Group \\[sys\\_user\\_group\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.valid\\_http\\_code\n\n</td><td>\n\nRequired. Expected HTTP status codes for a successful response. Valid formats:\n\n-   Single value, such as `200`.\n-   Range of values, such as `200-202`.\n-   Comma-separated list of values, such as `'200,201,204'`.\n-   Regular expression, such as `2[0-9]{2}` \\(matches codes 200-299\\).\n\nThe monitor checks against these values when testing, and the test fails if the actual status code doesn't match an expected value.\n\nDefault: Null\n\nData type: String\n\n</td></tr><tr><td>\n\nchecks.valid\\_http\\_code\\_type\n\n</td><td>\n\nRequired. Type of validation used to check the HTTP status code from a response.Valid values \\(case-sensitive\\):\n\n-   `equals`: Checks for an exact match with **checks.valid\\_http\\_code**.\n-   `in_range`: Checks that the status code is within the range of values provided in **checks.valid\\_http\\_code**.\n-   `regex`: Checks for a match with the regular expression provided in **checks.valid\\_http\\_code**.\n\nDefault: Null\n\nData type: String\n\n</td></tr></tbody>\n</table>### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table class=\"rest_api_request_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"accept-JSON-only-entry-RESTAPI\">\n\nData format of the response body. Only supports **application/json**.\n\n</td></tr><tr><td>\n\nAuthorization\n\n</td><td>\n\nHTTP basic authentication or OAuth bearer token.Basic authentication format:\n\n```\nAuthorization: Basic <base64-encoded-username:password>\n```\n\nOAuth format:\n\n```\nAuthorization: Bearer <access-token>\n```\n\n</td></tr><tr><td>\n\nContent-Type\n\n</td><td>\n\nData format of the request body. Supported types: **application/json** or **text/csv**. Default: **application/json**\n\n</td></tr></tbody>\n</table>|Header|Description|\n|------|-----------|\n|None| |\n\n### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table id=\"table_cqm_nqf_1jc\"><thead><tr><th>\n\nStatus code\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\n202\n\n</td><td>\n\nAccepted. A bulk monitor creation job was submitted.\n\n</td></tr><tr><td>\n\n400\n\n</td><td>\n\nBad request. Request validation failed. Check **error.code** and **error.message** in the response body for error details.Common causes:\n\n-   Malformed JSON or CSV payload.\n-   Required field not provided.\n-   Field value out of range or not valid.\n-   Referenced endpoint CI not found in table HTTP Endpoint \\[cmdb\\_ci\\_endpoint\\_http\\].\n-   Referenced MID Server location not found in table Synthetic Location \\[sn\\_sow\\_synthetics\\_location\\].\n-   Referenced service not found in table Business Service \\[cmdb\\_ci\\_service\\].\n-   Duplicate monitor. A monitor already exists for the endpoint.\n\n</td></tr><tr><td>\n\n401\n\n</td><td id=\"entry-401-status-code\">\n\nUnauthorized. The user credentials are incorrect or have not been passed.\n\n</td></tr><tr><td>\n\n403\n\n</td><td>\n\nForbidden. The user must have the x\\_snc\\_sow\\_synthetics.synthetics\\_editor role to create monitors.\n\n</td></tr><tr><td>\n\n413\n\n</td><td>\n\nPayload too large. Request body exceeds 10MB limit.\n\n</td></tr><tr><td>\n\n415\n\n</td><td>\n\nUnsupported media type. The payload must be formatted as JSON or CSV.\n\n</td></tr><tr><td>\n\n429\n\n</td><td>\n\nToo many requests or too many active monitor creation jobs. Wait and retry. Check **error.code** and **error.message** in the response body for more information.Rate limits:\n\n-   10 requests per minute\n-   100 requests per hour\n-   1000 requests per day\n\n</td></tr><tr><td>\n\n500\n\n</td><td id=\"entry-500-status-code\">\n\nInternal server error. An unexpected error occurred while processing the request. The response contains additional information about the error.\n\n</td></tr></tbody>\n</table>### Response body parameters \\(JSON\\)\n\n<table><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nerror\n\n</td><td>\n\nObject returned if the API request failed.Data type: Object\n\n```\n\"error\": {\n   \"code\": \"String\",\n   \"details\": {Object},\n   \"message\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nerror.code\n\n</td><td>\n\nError code. Possible values:\n\n-   INVALID\\_JSON\\_FORMAT\n-   INVALID\\_CSV\\_FORMAT\n-   MISSING\\_REQUIRED\\_FIELD\n-   INVALID\\_FIELD\\_VALUE\n-   CMDB\\_CI\\_NOT\\_FOUND\n-   LOCATION\\_NOT\\_FOUND\n-   SERVICE\\_NOT\\_FOUND\n-   DUPLICATE\\_MONITOR\n-   PAYLOAD\\_TOO\\_LARGE\n-   UNSUPPORTED\\_MEDIA\\_TYPE\n-   RATE\\_LIMIT\\_EXCEEDED\n-   CONCURRENT\\_JOB\\_LIMIT\n-   AUTHENTICATION\\_FAILED\n-   AUTHORIZATION\\_FAILED\n-   JOB\\_NOT\\_FOUND\n-   INTERNAL\\_ERROR\n\nData type: String\n\n</td></tr><tr><td>\n\nerror.details\n\n</td><td>\n\nAdditional details about the error. The elements included in this object vary based on the type of error.\n\nData type: Object\n\n</td></tr><tr><td>\n\nerror.message\n\n</td><td>\n\nError message.Data type: String\n\n</td></tr><tr><td>\n\nresult\n\n</td><td>\n\nObject containing information about the monitor creation job.Data type: Object\n\n```\n\"result\": {\n   \"job_id\": \"String\",\n   \"job_sys_id\": \"String\",\n   \"message\": \"String\",\n   \"status\": \"String\",\n   \"status_check_url\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nresult.job\\_id\n\n</td><td>\n\nID of the monitor creation job.Table: Synthetics Bulk Job \\[sn\\_sow\\_synthetics\\_bulk\\_job\\]\n\nColumn: Job ID\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.job\\_sys\\_id\n\n</td><td>\n\nSys\\_id of the monitor creation job.Table: Synthetics Bulk Job \\[sn\\_sow\\_synthetics\\_bulk\\_job\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.message\n\n</td><td>\n\nMessage about the status of the monitor creation job.Data type: String\n\n</td></tr><tr><td>\n\nresult.status\n\n</td><td>\n\nStatus of the monitor creation job.For a successful API request \\(status code `202 Accepted`\\), the value of this parameter is `pending`.\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.status\\_check\\_url\n\n</td><td>\n\nEndpoint for tracking the current status of the monitor creation job. For more information, see [GET /sn\\_sow\\_synthetics/v1/synthetics\\_async\\_bulk\\_create/\\{job\\_id\\}](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/synth-async-api.md).Data type: String\n\n</td></tr></tbody>\n</table>### cURL request\n\nThis example submits a job to create monitors for two API endpoints.\n\n```\ncurl \"https://instance.service-now.com/api/sn_sow_synthetics/v1/synthetics_async_bulk_create\" \\\n--request POST \\\n--header \"Accept:application/json\" \\\n--header \"Content-Type:application/json\" \\\n--data \"{\n  \"checks\": [\n    {\n      \"name\": \"Production API Health Check\",\n      \"method\": \"GET\",\n      \"description\": \"Monitors the main API health endpoint\",\n      \"interval\": 5,\n      \"cmdb_ci\": \"21d4073087807610f13cbbf7cebb3500\",\n      \"enabled\": true,\n      \"should_create_alert\": true,\n      \"alert_severity\": 1,\n      \"locations\": [\n        \"0fd0279b87003210f13cbbf7cebb3552\",\n        \"2244a48d87cc7610f13cbbf7cebb3554\"\n      ],\n      \"headers\": [\n        {\n          \"name\": \"Accept\",\n          \"value\": \"application/json\"\n        }\n      ],\n      \"query_string\": null,\n      \"credential\": \"\",\n      \"body\": null,\n      \"parent_service_sys_id\": \"6731133c87c07610f13cbbf7cebb35d8\",\n      \"support_group_sys_id\": \"019ad92ec7230010393d265c95c260dd\",\n      \"alert_tags\": {\n        \"environment\": \"production\",\n        \"team\": \"platform\"\n      },\n      \"valid_http_code_type\": \"equals\",\n      \"valid_http_code\": \"200\",\n      \"max_latency_ms\": 5000,\n      \"body_condition\": {\n        \"type\": \"jsonpath\",\n        \"expression\": \"$.status == 'ok'\"\n      }\n    },\n    {\n      \"name\": \"User Service POST Test\",\n      \"method\": \"POST\",\n      \"description\": \"Tests user creation endpoint\",\n      \"interval\": 10,\n      \"cmdb_ci\": \"21d4073087807610f13cbbf7cebb3503\",\n      \"enabled\": true,\n      \"should_create_alert\": true,\n      \"alert_severity\": 2,\n      \"locations\": [\n        \"2244a48d87cc7610f13cbbf7cebb3554\"\n      ],\n      \"headers\": [\n        {\n          \"name\": \"Content-Type\",\n          \"value\": \"application/json\"\n        }\n      ],\n      \"body\": \"{\\\"test\\\": true}\",\n      \"parent_service_sys_id\": \"6731133c87c07610f13cbbf7cebb35e1\",\n      \"support_group_sys_id\": \"0762d92db72422103a858bbb4e11a928\",\n      \"valid_http_code_type\": \"in_range\",\n      \"valid_http_code\": \"200-201\",\n      \"max_latency_ms\": 3000\n    }\n  ]\n}\" \\\n--user 'username':'password'\n```\n\nResponse body - job successfully created.\n\n```\n{\n  \"result\": {\n    \"job_id\": \"BCJ-1706789123456-a1b2c3d4\",\n    \"job_sys_id\": \"abc123def456abc123def456\",\n    \"status\": \"pending\",\n    \"message\": \"Job created successfully. File uploaded. Processing will begin shortly.\",\n    \"status_check_url\": \"/api/sn_sow_synthetics/v1/synthetics_async_bulk_create/BCJ-1706789123456-a1b2c3d4\"\n  }\n}\n```\n\nResponse body - concurrent monitor creation job limit error.\n\n```\n{\n  \"error\": {\n    \"code\": \"CONCURRENT_JOB_LIMIT\",\n    \"message\": \"Maximum concurrent jobs exceeded. Please wait for existing jobs to complete.\"\n  }\n}\n```\n\nResponse body - rate limit error.\n\n```\n{\n  \"error\": {\n    \"code\": \"RATE_LIMIT_EXCEEDED\",\n    \"message\": \"Rate limit exceeded. Please try again later.\",\n    \"details\": {\n      \"remaining_per_minute\": 0,\n      \"remaining_per_hour\": 5,\n      \"remaining_per_day\": 100\n    }\n  }\n}\n```\n\n### cURL request\n\nThis example submits a job to create a monitor for an API endpoint that has a parent service relationship in the CI Relationship \\[cmdb\\_rel\\_ci\\] table.\n\n```\ncurl \"https://instance.service-now.com/api/sn_sow_synthetics/v1/synthetics_async_bulk_create\" \\\n--request POST \\\n--header \"Accept:application/json\" \\\n--header \"Content-Type:application/json\" \\\n--data \"{\n  \"checks\": [\n    {\n      \"cmdb_ci\": \"https://user-mgmt.example.com/api/v2/notifications\",\n      \"name\": \"existing_url_check\",\n      \"method\": \"GET\",\n      \"interval\": 1,\n      \"locations\": [\n        \"335c38f5534332308e4dedeefa7b1314\"\n      ],\n      \"valid_http_code_type\": \"equals\",\n      \"valid_http_code\": \"200\"\n    }\n  ]\n}\" \\\n--user 'username':'password'\n```\n\nResponse body - job successfully created.\n\n```\n{\n  \"result\": {\n    \"job_id\": \"BCJ-1809789123456-a1b2c3d5\",\n    \"job_sys_id\": \"abc123def456abc123def456\",\n    \"status\": \"pending\",\n    \"message\": \"Job created successfully. File uploaded. Processing will begin shortly.\",\n    \"status_check_url\": \"/api/sn_sow_synthetics/v1/synthetics_async_bulk_create/BCJ-1809789123456-a1b2c3d5\"\n  }\n}\n```\n\n"}}