# Browse AI API Documentation - **OpenAPI Version:** `3.1.0` - **API Version:** `v2` Authenticate every request with your Browse AI API key, sent as a Bearer token in the `Authorization` header. [Generate your API key](https://dashboard.browse.ai/api). Still using the deprecated v1 API? See its documentation [here](/api/v1). ## Servers - **URL:** `https://api.browse.ai/v2` ## Operations ### Endpoint for checking the status of Browse AI infrastructure - **Method:** `GET` - **Path:** `/status` - **Tags:** system This endpoint provides you with real-time information regarding the operational status of the Browse AI infrastructure. It gives insights into the condition of the tasks queue, thus allowing you to understand if the services are running smoothly or are under maintenance. #### Responses ##### Status: 200 A JSON containing Browse AI infrastructure status ###### Content-Type: application/json - **`tasksQueueStatus` (required)** `string`, possible values: `"OK", "UNDER_MAINTENANCE"` - **`messageCode`** `string`, possible values: `"success"` - **`statusCode`** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "tasksQueueStatus": "OK" } ``` ### Retrieve list of teams under user account - **Method:** `GET` - **Path:** `/teams` - **Tags:** internal this endpoint be used on Browse AI integrations to fetch all of the teams by auth0 access token #### Responses ##### Status: 200 A JSON containing the total number of the user. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`statusCode` (required)** `number`, possible values: `200` - **`teams` (required)** `object` - **`items` (required)** `array` **Items:** - **`api` (required)** `boolean` — API accessibility - **`createdAt` (required)** `integer` — Team creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique team ID - **`name`** `string` — Team name - **`totalCount` (required)** `integer` — Total number of Team this user has. **Example:** ```json { "statusCode": 200, "messageCode": "success", "teams": { "totalCount": 20, "items": [ { "id": "b04eaafa-00c2-41a2-9c6a-7f7d32805a91", "name": "Browse AI team", "api": true, "createdAt": 1678795867879 } ] } } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ### Retrieve list of robots under your account - **Method:** `GET` - **Path:** `/robots` - **Tags:** robots If you have already created a few robots on [your dashboard](https://dashboard.browse.ai), you can use this endpoint to retrieve a list of them. You can then use other endpoints to retrieve more information about your robots or run robots. #### Responses ##### Status: 200 A JSON containing the total number of robots and an array of robots under this team. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`robots` (required)** `object` - **`items` (required)** `array` **Items:** - **`createdAt` (required)** `integer` — Robot creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique robot ID - **`inputParameters`** `array` **Items:** **One of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `number` — Parameter default value that will be used if you do not specify a parameter's value when running a robot. * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`type` (required)** `string`, possible values: `"number"` — Parameter type * **`max`** `number` — Maximum value this parameter accepts * **`min`** `number` — Minimum value this parameter accepts * **`value`** `number` — Parameter value specified when running robot. **All of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`type` (required)** `string`, possible values: `"url"` — Parameter type **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `array` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. It should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`options` (required)** `array` — Available options for the select parameter **Items:** - **`label` (required)** `string` — The label for the select option - **`value` (required)** `string` — The value for the select option * **`type` (required)** `string`, possible values: `"select"` — Parameter type * **`value`** `array` — Parameter value specified when running robot. If it is specified, it should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` - **`name`** `string` — Robot name - **`totalCount` (required)** `integer` — Total number of robots this team has. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "robots": { "totalCount": 20, "items": [ { "id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "name": "Extract data from Realtor.com", "createdAt": 1678795867879, "inputParameters": null } ] } } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ### Retrieve single robot by ID - **Method:** `GET` - **Path:** `/robots/{robotId}` - **Tags:** robots You can use this endpoint to retrieve a single robot by ID. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Responses ##### Status: 200 A JSON containing the total number of robots and an array of robots under this team. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`robot` (required)** `object` - **`createdAt` (required)** `integer` — Robot creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique robot ID - **`inputParameters`** `array` **Items:** **One of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `number` — Parameter default value that will be used if you do not specify a parameter's value when running a robot. * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`type` (required)** `string`, possible values: `"number"` — Parameter type * **`max`** `number` — Maximum value this parameter accepts * **`min`** `number` — Minimum value this parameter accepts * **`value`** `number` — Parameter value specified when running robot. **All of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`type` (required)** `string`, possible values: `"url"` — Parameter type **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `array` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. It should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`options` (required)** `array` — Available options for the select parameter **Items:** - **`label` (required)** `string` — The label for the select option - **`value` (required)** `string` — The value for the select option * **`type` (required)** `string`, possible values: `"select"` — Parameter type * **`value`** `array` — Parameter value specified when running robot. If it is specified, it should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` - **`name`** `string` — Robot name - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "robot": { "id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "name": "Extract data from Realtor.com", "createdAt": 1678795867879, "inputParameters": null } } ``` ##### Status: 400 A JSON containing an error code and message. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Update a robot's cookies - **Method:** `PATCH` - **Path:** `/robots/{robotId}/cookies` - **Tags:** robots Update a robot's cookies #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Request Body ##### Content-Type: application/json **Array of:** - **`name` (required)** `string` — The name of the cookie. - **`value` (required)** `string` — The value of the cookie. - **`domain`** `string` — The domain associated with the cookie. Specifies the domains to which the cookie should be sent. - **`expirationDate`** `number`, format: `int64` — The expiration date of the cookie in seconds since the UNIX epoch (e.g., POSIX time). If not provided, the cookie will be treated as a session cookie. - **`hostOnly`** `boolean` — If true, the cookie is only sent to the exact domain specified in the "domain" property. If false, the cookie is sent to subdomains as well, provided that the "domain" property allows it. - **`httpOnly`** `boolean` — If true, the cookie is accessible only through the HTTP(S) protocol and cannot be accessed through JavaScript or other client-side scripts. - **`path`** `string` — The URL path to which the cookie should be sent. If not provided, it defaults to the current path of the document location. - **`secure`** `boolean` — Indicates whether the cookie should only be sent over secure (HTTPS) connections. If true, the cookie will not be sent over unencrypted HTTP connections. **Example:** ```json [ { "name": "ACCOUNT_CHOOSER", "value": 12341234, "domain": ".example.com", "expirationDate": 1723659417, "path": "/products/", "secure": true, "httpOnly": true, "hostOnly": true } ] ``` #### Responses ##### Status: 200 A JSON object containing the updated monitor. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`statusCode` (required)** `number`, possible values: `200` - **`cookies`** `array` **Items:** - **`name` (required)** `string` — The name of the cookie. - **`value` (required)** `string` — The value of the cookie. - **`domain`** `string` — The domain associated with the cookie. Specifies the domains to which the cookie should be sent. - **`expirationDate`** `number`, format: `int64` — The expiration date of the cookie in seconds since the UNIX epoch (e.g., POSIX time). If not provided, the cookie will be treated as a session cookie. - **`hostOnly`** `boolean` — If true, the cookie is only sent to the exact domain specified in the "domain" property. If false, the cookie is sent to subdomains as well, provided that the "domain" property allows it. - **`httpOnly`** `boolean` — If true, the cookie is accessible only through the HTTP(S) protocol and cannot be accessed through JavaScript or other client-side scripts. - **`path`** `string` — The URL path to which the cookie should be sent. If not provided, it defaults to the current path of the document location. - **`secure`** `boolean` — Indicates whether the cookie should only be sent over secure (HTTPS) connections. If true, the cookie will not be sent over unencrypted HTTP connections. **Example:** ```json { "statusCode": 200, "messageCode": "success", "cookies": [ { "name": "ACCOUNT_CHOOSER", "value": 12341234, "domain": ".example.com", "expirationDate": 1723659417, "path": "/products/", "secure": true, "httpOnly": true, "hostOnly": true } ] } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "body_parse_error"` - **`statusCode` (required)** `number`, possible values: `400` - **`errors`** `array` **Items:** - **`fields` (required)** `array` **Items:** - **`field` (required)** `string` — Field name with the error - **`message` (required)** `string` — Error message for the field - **`summary` (required)** `string` — Summary of the error - **`name`** `string` — Name of the cookie **Example:** ```json { "statusCode": 400, "messageCode": "bad_request", "errors": [ { "name": "ACCOUNT_CHOOSER", "summary": "Errors found in existing cookie fields", "fields": [ { "field": "value", "message": "Required" } ] } ] } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Get all tasks by a robot - **Method:** `GET` - **Path:** `/robots/{robotId}/tasks` - **Tags:** tasks Get all of a robot's tasks #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `page` - **In:** `query` Page number `integer` ##### `pageSize` - **In:** `query` Page size `integer`, default: `10` ##### `status` - **In:** `query` Task status `string`, possible values: `"failed", "successful", "in-progress"` ##### `robotBulkRunId` - **In:** `query` filter the result based on robot bulk run ID `string` ##### `sort` - **In:** `query` A comma separated list of fields to sort by. Default sorting is ascending and prefixing field names with a hyphen '-' yields a descending order. `string` ##### `includeRetried` - **In:** `query` by passing false you can exclude the retried tasks `boolean` ##### `fromDate` - **In:** `query` From task creation date and time in the form of a Unix timestamp `integer` ##### `toDate` - **In:** `query` To task creation date and time in the form of a Unix timestamp `integer` #### Responses ##### Status: 200 A JSON including robots list. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`result` (required)** `object` - **`robotTasks` (required)** `object` - **`hasMore` (required)** `boolean` — Whether there are more tasks on the next page. - **`items` (required)** `array` **Items:** - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. - **`pageNumber` (required)** `integer` — Current page number. - **`totalCount` (required)** `integer` — Total number of tasks this robot has. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "robotTasks": { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [ { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": null, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": null, "capturedScreenshots": null, "capturedLists": null } ] } } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "invalid_from_date", "invalid_to_date"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "invalid_robot_id" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ### Run a robot - **Method:** `POST` - **Path:** `/robots/{robotId}/tasks` - **Tags:** tasks Run a robot on-demand with custom input parameters. When you need to run a robot and get its captured data, you can use this endpoint to run the task, and then use webhooks to receive the captured data as soon as the task is finished. Alternatively, you can poll the GET endpoint to retrieve a task's details as soon as it is finished. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Request Body ##### Content-Type: application/json - **`inputParameters`** `object` — An object of input parameters to override default input parameters. - **`recordVideo`** `boolean` — Try to record a video while running the task. This is not guaranteed to work as the robot might skip video recording if the site is too heavy. **Example:** ```json { "recordVideo": false, "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 } } ``` #### Responses ##### Status: 200 A JSON including robots list. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`result` (required)** `object` - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": null, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": null, "capturedScreenshots": null, "capturedLists": null } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"bad_request", "body_parse_error", "invalid_robot_id", "invalid_input_parameters"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 403 The request can not be processed ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"credits_limit_reached"` - **`statusCode` (required)** `number`, possible values: `403` **Example:** ```json { "statusCode": 403, "messageCode": "credits_limit_reached" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ##### Status: 503 A JSON containing error attributes. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"robot_under_maintenance"` - **`statusCode` (required)** `number`, possible values: `503` **Example:** ```json { "statusCode": 503, "messageCode": "robot_under_maintenance" } ``` ### Retrieve a task - **Method:** `GET` - **Path:** `/robots/{robotId}/tasks/{taskId}` - **Tags:** tasks Retrieve a task's details and captured data. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `taskId` required - **In:** `path` Unique task ID `string` #### Responses ##### Status: 200 A JSON including robots list. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`result` (required)** `object` - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": null, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": null, "capturedScreenshots": null, "capturedLists": null } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id", "invalid_task_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ### Retrieve a robot's monitors - **Method:** `GET` - **Path:** `/robots/{robotId}/monitors` - **Tags:** monitors Retrieve a robot's monitors list. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Responses ##### Status: 200 A JSON including monitors list. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`monitors` (required)** `object` - **`items` (required)** `array` — Array of all monitors **Items:** - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. - **`totalCount` (required)** `number` — Total number of monitors this robot has - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitors": { "totalCount": 10, "items": [ { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } ] } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Create a new monitor on a robot - **Method:** `POST` - **Path:** `/robots/{robotId}/monitors` - **Tags:** monitors Create a new monitor on a robot. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Request Body ##### Content-Type: application/json - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type **Example:** ```json { "name": "Monitor Products", "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15 } ``` #### Responses ##### Status: 200 A JSON object containing the newly created monitor. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`monitor` (required)** `object` - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitor": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "body_parse_error", "invalid_name", "invalid_status", "invalid_input_parameters", "invalid_notifyOnCapturedScreenshotChange", "invalid_notifyOnCapturedTextChange", "invalid_capturedScreenshotNotificationThreshold", "invalid_schedules", "invalid_schedule", "invalid_monitor_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 403 A JSON containing error attributes. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"schedule_interval_below_minimum"` - **`statusCode` (required)** `number`, possible values: `403` **Example:** ```json { "statusCode": 403, "messageCode": "schedule_interval_below_minimum" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Retrieve a robot's monitor - **Method:** `GET` - **Path:** `/robots/{robotId}/monitors/{monitorId}` - **Tags:** monitors Retrieve a robot's monitor. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `monitorId` required - **In:** `path` Unique monitor ID You can find a monitor's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Responses ##### Status: 200 A JSON object containing the monitor. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`monitor` (required)** `object` - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitor": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "invalid_monitor_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Update a robot's monitor - **Method:** `PATCH` - **Path:** `/robots/{robotId}/monitors/{monitorId}` - **Tags:** monitors Update a robot's monitor #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `monitorId` required - **In:** `path` Unique monitor ID You can find a monitor's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Request Body ##### Content-Type: application/json - **`capturedScreenshotNotificationThreshold`** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`inputParameters`** `object` — An object of input parameters to override default input parameters. - **`name`** `string` — Monitor name - **`notifyOnCapturedScreenshotChange`** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange`** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`status`** `string`, possible values: `"active", "paused"` — If set to \`paused\`, the monitor will stop working until an \`active\` status is sent. **Example:** ```json { "name": "Monitor Products", "status": "active", "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15 } ``` #### Responses ##### Status: 200 A JSON object containing the updated monitor. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`monitor` (required)** `object` - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitor": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "body_parse_error", "invalid_name", "invalid_status", "invalid_input_parameters", "invalid_notifyOnCapturedScreenshotChange", "invalid_notifyOnCapturedTextChange", "invalid_capturedScreenshotNotificationThreshold", "invalid_schedules", "invalid_schedule", "invalid_monitor_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 403 A JSON containing error attributes. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"schedule_interval_below_minimum"` - **`statusCode` (required)** `number`, possible values: `403` **Example:** ```json { "statusCode": 403, "messageCode": "schedule_interval_below_minimum" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Delete a robot's monitor - **Method:** `DELETE` - **Path:** `/robots/{robotId}/monitors/{monitorId}` - **Tags:** monitors Delete a robot's monitor. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `monitorId` required - **In:** `path` Unique monitor ID You can find a monitor's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Responses ##### Status: 200 A JSON object containing the deleted monitor. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success" } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "invalid_monitor_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "invalid_robot_id" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Bulk run tasks - **Method:** `POST` - **Path:** `/robots/{robotId}/bulk-runs` - **Tags:** bulk runs Bulk run up to 50,000 tasks at a time using a robot. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Request Body ##### Content-Type: application/json - **`inputParameters` (required)** `array` — An array of input parameters to override the task's default input parameters. **Items:** - **`title`** `string` — A string that describes the bulk run. **Example:** ```json { "title": "Bulk Run Title", "inputParameters": [ { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, { "originUrl": "https://www.ycombinator.com/companies/coinbase", "companies_skip": 0, "companies_limit": 20 } ] } ``` #### Responses ##### Status: 200 A JSON object containing the newly created Bulk run. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`result` (required)** `object` - **`bulkRun`** `object` - **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. - **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. - **`id` (required)** `string` — Unique bulk run ID - **`robotId` (required)** `string` — Unique robot ID - **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. - **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. - **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. - **`title`** `string` — An optional string that describes the bulk run. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "bulkRun": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "title": "Bulk Run Title", "status": "in-progress", "tasksCount": 10, "successfulTasks": 8, "failedTasks": 0, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "createdAt": 1678795867879 } } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"bad_request", "body_parse_error", "invalid_robot_id", "invalid_input_parameters", "zero_length_parameters"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 403 A JSON containing error attributes. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"credits_limit_reached", "exceeded_bulk_run_threshold"` - **`statusCode` (required)** `number`, possible values: `403` **Example:** ```json { "statusCode": 403, "messageCode": "exceeded_bulk_run_threshold" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ##### Status: 503 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"robot_under_maintenance"` - **`statusCode` (required)** `number`, possible values: `503` **Example:** ```json { "statusCode": 503, "messageCode": "robot_under_maintenance" } ``` ### Retrieve a robot's bulk runs list - **Method:** `GET` - **Path:** `/robots/{robotId}/bulk-runs` - **Tags:** bulk runs Retrieve a robot's bulk runs list. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `page` - **In:** `query` Page number `integer` #### Responses ##### Status: 200 A JSON object containing the bulk runs list. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`result` (required)** `object` - **`hasMore` (required)** `boolean` — Whether there are more bulk runs on the next page. - **`items` (required)** `array` **Items:** - **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. - **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. - **`id` (required)** `string` — Unique bulk run ID - **`robotId` (required)** `string` — Unique robot ID - **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. - **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. - **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. - **`title`** `string` — An optional string that describes the bulk run. - **`pageNumber` (required)** `integer` — Current page number. - **`totalCount` (required)** `integer` — Total number of bulk runs a robot has had. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [] } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ### Retrieve a robot's bulk run - **Method:** `GET` - **Path:** `/robots/{robotId}/bulk-runs/{bulkRunId}` - **Tags:** bulk runs Retrieve a robot's bulk run along with a list of tasks run within the bulk run. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `bulkRunId` required - **In:** `path` Unique bulk run ID `string` ##### `page` - **In:** `query` Page number `integer` #### Responses ##### Status: 200 A JSON object containing the bulk run information along with a paginated list of all its tasks. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`result` (required)** `object` - **`bulkRun` (required)** `object` - **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. - **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. - **`id` (required)** `string` — Unique bulk run ID - **`robotId` (required)** `string` — Unique robot ID - **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. - **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. - **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. - **`title`** `string` — An optional string that describes the bulk run. - **`robotTasks` (required)** `object` — A paginated list of tasks. - **`hasMore` (required)** `boolean` — Whether there are more tasks on the next page. - **`items` (required)** `array` **Items:** - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. - **`pageNumber` (required)** `integer` — Current page number. - **`totalCount` (required)** `integer` — Total number of tasks. - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "bulkRun": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "title": "Bulk Run Title", "status": "in-progress", "tasksCount": 10, "successfulTasks": 8, "failedTasks": 0, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "createdAt": 1678795867879 }, "robotTasks": { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [] } } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ### Retrieve a robot's webhooks - **Method:** `GET` - **Path:** `/robots/{robotId}/webhooks` - **Tags:** webhooks Retrieve a robot's webhook list. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Responses ##### Status: 200 A JSON including monitors list. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`statusCode` (required)** `number`, possible values: `200` - **`webhooks` (required)** `object` - **`items` (required)** `array` — Array of all webhooks **Items:** - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique webhook ID - **`url` (required)** `string` — Webhook URL - **`webhookEvent` (required)** `string`, possible values: `"taskCapturedDataChanged", "taskFinished", "taskFinishedSuccessfully", "taskFinishedWithError", "tableExportFinishedSuccessfully"` - **`totalCount` (required)** `number` — Total number of webhooks this robot has **Example:** ```json { "statusCode": 200, "messageCode": "success", "webhooks": { "totalCount": 10, "items": [ { "id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e", "url": "https://example.com/v2/webhooks/callback/events", "webhookEvent": "taskFinished", "createdAt": 1678795867879 } ] } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Create a new webhook on a robot - **Method:** `POST` - **Path:** `/robots/{robotId}/webhooks` - **Tags:** webhooks Create a new webhook on a robot #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` #### Request Body ##### Content-Type: application/json - **`eventType` (required)** `string`, possible values: `"taskCapturedDataChanged", "taskFinished", "taskFinishedSuccessfully", "taskFinishedWithError", "tableExportFinishedSuccessfully"` - **`hookUrl` (required)** `string` — Webhook URL **Example:** ```json { "hookUrl": "https://example.com/v2/webhooks/callback/events", "eventType": "taskFinished" } ``` #### Responses ##### Status: 200 A JSON object containing the newly created webhook. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`statusCode` (required)** `number`, possible values: `200` - **`webhook` (required)** `object` - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique webhook ID - **`url` (required)** `string` — Webhook URL - **`webhookEvent` (required)** `string`, possible values: `"taskCapturedDataChanged", "taskFinished", "taskFinishedSuccessfully", "taskFinishedWithError", "tableExportFinishedSuccessfully"` **Example:** ```json { "statusCode": 200, "messageCode": "success", "webhook": { "id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e", "url": "https://example.com/v2/webhooks/callback/events", "webhookEvent": "taskFinished", "createdAt": 1678795867879 } } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "body_parse_error", "invalid_hookUrl", "invalid_eventType"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### Delete a robot's webhook - **Method:** `DELETE` - **Path:** `/robots/{robotId}/webhooks/{webhookId}` - **Tags:** webhooks Delete a robot's webhook. #### Parameters ##### `robotId` required - **In:** `path` Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar. `string` ##### `webhookId` required - **In:** `path` Unique webhookId ID `string` #### Responses ##### Status: 200 A JSON object containing the deleted monitor. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"success"` - **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success" } ``` ##### Status: 400 A JSON containing error attributes. This will happen if any of the parameters are not valid. ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "invalid_webhook_id", "bad_request"` - **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "invalid_robot_id" } ``` ##### Status: 401 The request is not authorized ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` - **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ##### Status: 404 The resource is not found ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"not_found"` - **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ##### Status: 500 There was an error on the server ###### Content-Type: application/json - **`messageCode` (required)** `string`, possible values: `"internal_server_error"` - **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ## Webhooks ### Task Finished - **Method:**`POST` - **Path:**`/webhooks/taskWebhook` - **Tags:** webhooks ### Table Export Finished (Beta) - **Method:**`POST` - **Path:**`/webhooks/tableExportWebhook` - **Tags:** webhooks, Beta This webhook is called when a table export is finished. The exported file can be a CSV, JSON, or zip file. ## Schemas ### getSystemStatus-200 - **Type:**`object` * **`tasksQueueStatus` (required)** `string`, possible values: `"OK", "UNDER_MAINTENANCE"` * **`messageCode`** `string`, possible values: `"success"` * **`statusCode`** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "tasksQueueStatus": "OK" } ``` ### Team - **Type:**`object` * **`api` (required)** `boolean` — API accessibility * **`createdAt` (required)** `integer` — Team creation date and time in the form of a Unix timestamp * **`id` (required)** `string` — Unique team ID * **`name`** `string` — Team name **Example:** ```json { "id": "b04eaafa-00c2-41a2-9c6a-7f7d32805a91", "name": "Browse AI team", "api": true, "createdAt": 1678795867879 } ``` ### getUserTeams-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`statusCode` (required)** `number`, possible values: `200` * **`teams` (required)** `object` - **`items` (required)** `array` **Items:** - **`api` (required)** `boolean` — API accessibility - **`createdAt` (required)** `integer` — Team creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique team ID - **`name`** `string` — Team name - **`totalCount` (required)** `integer` — Total number of Team this user has. **Example:** ```json { "statusCode": 200, "messageCode": "success", "teams": { "totalCount": 20, "items": [ { "id": "b04eaafa-00c2-41a2-9c6a-7f7d32805a91", "name": "Browse AI team", "api": true, "createdAt": 1678795867879 } ] } } ``` ### UnauthorizedResponse - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"unauthorized", "no_api_access"` * **`statusCode` (required)** `number`, possible values: `401` **Example:** ```json { "statusCode": 401, "messageCode": "unauthorized" } ``` ### CommonParameterPart - **Type:**`object` * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`required`** `boolean` — Whether a parameter is required or not * **`type`** `string` — Parameter type **Example:** ```json { "type": "", "name": "originUrl", "label": "Origin URL", "required": false } ``` ### Text Parameter - **Type:** **Example:** ### Numeric Parameter - **Type:** **Example:** ### URL Parameter - **Type:** **Example:** ### SelectParameterOption - **Type:**`object` * **`label` (required)** `string` — The label for the select option * **`value` (required)** `string` — The value for the select option **Example:** ```json { "label": "Option 1", "value": "option1" } ``` ### Select Parameter - **Type:** **Example:** ### RobotInputParameters - **Type:**`array` **Example:** ### Robot - **Type:**`object` * **`createdAt` (required)** `integer` — Robot creation date and time in the form of a Unix timestamp * **`id` (required)** `string` — Unique robot ID * **`inputParameters`** `array` **Items:** **One of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `number` — Parameter default value that will be used if you do not specify a parameter's value when running a robot. * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`type` (required)** `string`, possible values: `"number"` — Parameter type * **`max`** `number` — Maximum value this parameter accepts * **`min`** `number` — Minimum value this parameter accepts * **`value`** `number` — Parameter value specified when running robot. **All of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`type` (required)** `string`, possible values: `"url"` — Parameter type **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `array` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. It should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`options` (required)** `array` — Available options for the select parameter **Items:** - **`label` (required)** `string` — The label for the select option - **`value` (required)** `string` — The value for the select option * **`type` (required)** `string`, possible values: `"select"` — Parameter type * **`value`** `array` — Parameter value specified when running robot. If it is specified, it should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` * **`name`** `string` — Robot name **Example:** ```json { "id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "name": "Extract data from Realtor.com", "createdAt": 1678795867879, "inputParameters": [ null ] } ``` ### getRobots-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`robots` (required)** `object` - **`items` (required)** `array` **Items:** - **`createdAt` (required)** `integer` — Robot creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique robot ID - **`inputParameters`** `array` **Items:** **One of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `number` — Parameter default value that will be used if you do not specify a parameter's value when running a robot. * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`type` (required)** `string`, possible values: `"number"` — Parameter type * **`max`** `number` — Maximum value this parameter accepts * **`min`** `number` — Minimum value this parameter accepts * **`value`** `number` — Parameter value specified when running robot. **All of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`type` (required)** `string`, possible values: `"url"` — Parameter type **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `array` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. It should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`options` (required)** `array` — Available options for the select parameter **Items:** - **`label` (required)** `string` — The label for the select option - **`value` (required)** `string` — The value for the select option * **`type` (required)** `string`, possible values: `"select"` — Parameter type * **`value`** `array` — Parameter value specified when running robot. If it is specified, it should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` - **`name`** `string` — Robot name - **`totalCount` (required)** `integer` — Total number of robots this team has. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "robots": { "totalCount": 20, "items": [ { "id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "name": "Extract data from Realtor.com", "createdAt": 1678795867879, "inputParameters": null } ] } } ``` ### getRobot-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`robot` (required)** `object` - **`createdAt` (required)** `integer` — Robot creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique robot ID - **`inputParameters`** `array` **Items:** **One of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `number` — Parameter default value that will be used if you do not specify a parameter's value when running a robot. * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`type` (required)** `string`, possible values: `"number"` — Parameter type * **`max`** `number` — Maximum value this parameter accepts * **`min`** `number` — Minimum value this parameter accepts * **`value`** `number` — Parameter value specified when running robot. **All of:** **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `string` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. If \`encrypted\` is \`true\`, this will appear as an arbitrary string like \`\*\*\*\*\*\*\`. Parameter default values can be updated on robot Settings page on your dashboard. * **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`encrypted` (required)** `boolean` — Whether parameter value and defaultValue are encrypted - **`type` (required)** `string`, possible values: `"url"` — Parameter type **All of:** - **`label` (required)** `string` — Parameter title - **`name` (required)** `string` — Parameter name - **`required`** `boolean` — Whether a parameter is required or not - **`type`** `string` — Parameter type * **`defaultValue` (required)** `array` — Parameter default value that will be used as a fallback if you do not specify a parameter's value when running a robot. It should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` * **`label` (required)** `string` — Parameter title * **`name` (required)** `string` — Parameter name * **`options` (required)** `array` — Available options for the select parameter **Items:** - **`label` (required)** `string` — The label for the select option - **`value` (required)** `string` — The value for the select option * **`type` (required)** `string`, possible values: `"select"` — Parameter type * **`value`** `array` — Parameter value specified when running robot. If it is specified, it should be an array of string values. Each string value should be one of the \`value\` or \`label\` of the \`options\` array. For each string value, if there is a matching \`value\` in the \`options\` array, it will be used as the default value. Otherwise, it looks for the \`label\` in the \`options\` and uses the \`value\` of the option with that \`label\`. If no matching \`value\` or \`label\` is found, it throws an error. **Items:** `string` - **`name`** `string` — Robot name * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "robot": { "id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "name": "Extract data from Realtor.com", "createdAt": 1678795867879, "inputParameters": null } } ``` ### getRobot-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### NotFoundResponse - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"not_found"` * **`statusCode` (required)** `number`, possible values: `404` **Example:** ```json { "statusCode": 404, "messageCode": "not_found" } ``` ### InternalServerResponse - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"internal_server_error"` * **`statusCode` (required)** `number`, possible values: `500` **Example:** ```json { "statusCode": 500, "messageCode": "internal_server_error" } ``` ### RobotCookie - **Type:**`object` * **`name` (required)** `string` — The name of the cookie. * **`value` (required)** `string` — The value of the cookie. * **`domain`** `string` — The domain associated with the cookie. Specifies the domains to which the cookie should be sent. * **`expirationDate`** `number`, format: `int64` — The expiration date of the cookie in seconds since the UNIX epoch (e.g., POSIX time). If not provided, the cookie will be treated as a session cookie. * **`hostOnly`** `boolean` — If true, the cookie is only sent to the exact domain specified in the "domain" property. If false, the cookie is sent to subdomains as well, provided that the "domain" property allows it. * **`httpOnly`** `boolean` — If true, the cookie is accessible only through the HTTP(S) protocol and cannot be accessed through JavaScript or other client-side scripts. * **`path`** `string` — The URL path to which the cookie should be sent. If not provided, it defaults to the current path of the document location. * **`secure`** `boolean` — Indicates whether the cookie should only be sent over secure (HTTPS) connections. If true, the cookie will not be sent over unencrypted HTTP connections. **Example:** ```json { "name": "ACCOUNT_CHOOSER", "value": 12341234, "domain": ".example.com", "expirationDate": 1723659417, "path": "/products/", "secure": true, "httpOnly": true, "hostOnly": true } ``` ### upsertRobotCookies-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`statusCode` (required)** `number`, possible values: `200` * **`cookies`** `array` **Items:** - **`name` (required)** `string` — The name of the cookie. - **`value` (required)** `string` — The value of the cookie. - **`domain`** `string` — The domain associated with the cookie. Specifies the domains to which the cookie should be sent. - **`expirationDate`** `number`, format: `int64` — The expiration date of the cookie in seconds since the UNIX epoch (e.g., POSIX time). If not provided, the cookie will be treated as a session cookie. - **`hostOnly`** `boolean` — If true, the cookie is only sent to the exact domain specified in the "domain" property. If false, the cookie is sent to subdomains as well, provided that the "domain" property allows it. - **`httpOnly`** `boolean` — If true, the cookie is accessible only through the HTTP(S) protocol and cannot be accessed through JavaScript or other client-side scripts. - **`path`** `string` — The URL path to which the cookie should be sent. If not provided, it defaults to the current path of the document location. - **`secure`** `boolean` — Indicates whether the cookie should only be sent over secure (HTTPS) connections. If true, the cookie will not be sent over unencrypted HTTP connections. **Example:** ```json { "statusCode": 200, "messageCode": "success", "cookies": [ { "name": "ACCOUNT_CHOOSER", "value": 12341234, "domain": ".example.com", "expirationDate": 1723659417, "path": "/products/", "secure": true, "httpOnly": true, "hostOnly": true } ] } ``` ### CookieError - **Type:**`object` * **`fields` (required)** `array` **Items:** - **`field` (required)** `string` — Field name with the error - **`message` (required)** `string` — Error message for the field * **`summary` (required)** `string` — Summary of the error * **`name`** `string` — Name of the cookie **Example:** ```json { "name": "ACCOUNT_CHOOSER", "summary": "Errors found in existing cookie fields", "fields": [ { "field": "value", "message": "Required" } ] } ``` ### upsertRobotCookies-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "body_parse_error"` * **`statusCode` (required)** `number`, possible values: `400` * **`errors`** `array` **Items:** - **`fields` (required)** `array` **Items:** - **`field` (required)** `string` — Field name with the error - **`message` (required)** `string` — Error message for the field - **`summary` (required)** `string` — Summary of the error - **`name`** `string` — Name of the cookie **Example:** ```json { "statusCode": 400, "messageCode": "bad_request", "errors": [ { "name": "ACCOUNT_CHOOSER", "summary": "Errors found in existing cookie fields", "fields": [ { "field": "value", "message": "Required" } ] } ] } ``` ### InputParameters - **Type:**`object` An object of input parameters to override default input parameters. **Example:** ```json { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 } ``` ### CapturedTexts - **Type:**`object` Captured texts **Example:** ```json { "Product Name": "Alexis", "Width": "15", "Pattern Repeat": "PATTERN REPEAT", "Construction": "Hand woven", "Fiber": "100% Wool", "Color": null, "Main Image": "https://isteam.wsimg.com/ip/e31f7bba-252b-4669-9209-639d1c00765d/ols/258_original" } ``` ### CapturedScreenshots - **Type:**`object` All screenshots captured in this task. **Example:** ```json { "top-ads": { "id": "b4d132f3-12d9-4770-ac7d-88e481fc5b47", "name": "Top ads", "src": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "width": 600, "height": 120, "x": 201, "y": 142, "deviceScaleFactor": 1.2, "full": "page", "comparedToScreenshotId": "29d742c2-6f45-4f29-9d48-ba6fe66e6e3d", "diffImageSrc": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "changePercentage": 20, "diffThreshold": 5, "fileRemovedAt": 1678795867879 } } ``` ### CapturedLists - **Type:**`object` All lists captured in this task. **Example:** ```json { "companies": [ { "Position": "1", "name": "Airbnb", "location": "San Francisco, CA, USA", "description": "Book accommodations around the world." }, { "Position": "2", "name": "Coin base", "location": "San Francisco, CA, USA", "description": "Buy, sell, and manage crypto currencies." }, { "Position": "3", "name": "DoorDash", "location": "San Francisco, CA, USA", "description": "Restaurant delivery." } ] } ``` ### RobotTask - **Type:**`object` * **`capturedLists` (required)** `object` — All lists captured in this task. * **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. * **`capturedTexts` (required)** `object` — Captured texts * **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp * **`id` (required)** `string` — Unique task ID * **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. * **`robotId` (required)** `string` — Unique robot ID * **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API * **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. * **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). * **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). * **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. * **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. * **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. * **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task * **`runByTaskMonitorId`** `string` — Monitor ID that ran this check * **`runByUserId`** `string` — User ID who ran the robot on the dashboard * **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp * **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status * **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. * **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. * **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. **Example:** ```json { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": { "Product Name": "Alexis", "Width": "15", "Pattern Repeat": "PATTERN REPEAT", "Construction": "Hand woven", "Fiber": "100% Wool", "Color": null, "Main Image": "https://isteam.wsimg.com/ip/e31f7bba-252b-4669-9209-639d1c00765d/ols/258_original" }, "capturedScreenshots": { "top-ads": { "id": "b4d132f3-12d9-4770-ac7d-88e481fc5b47", "name": "Top ads", "src": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "width": 600, "height": 120, "x": 201, "y": 142, "deviceScaleFactor": 1.2, "full": "page", "comparedToScreenshotId": "29d742c2-6f45-4f29-9d48-ba6fe66e6e3d", "diffImageSrc": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "changePercentage": 20, "diffThreshold": 5, "fileRemovedAt": 1678795867879 } }, "capturedLists": { "companies": [ { "Position": "1", "name": "Airbnb", "location": "San Francisco, CA, USA", "description": "Book accommodations around the world." }, { "Position": "2", "name": "Coin base", "location": "San Francisco, CA, USA", "description": "Buy, sell, and manage crypto currencies." }, { "Position": "3", "name": "DoorDash", "location": "San Francisco, CA, USA", "description": "Restaurant delivery." } ] } } ``` ### getRobotTasks-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`result` (required)** `object` - **`robotTasks` (required)** `object` - **`hasMore` (required)** `boolean` — Whether there are more tasks on the next page. - **`items` (required)** `array` **Items:** - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. - **`pageNumber` (required)** `integer` — Current page number. - **`totalCount` (required)** `integer` — Total number of tasks this robot has. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "robotTasks": { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [ { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": null, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": null, "capturedScreenshots": null, "capturedLists": null } ] } } } ``` ### getRobotTasks-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "invalid_from_date", "invalid_to_date"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "invalid_robot_id" } ``` ### NewRobotTaskBodyParams - **Type:**`object` * **`inputParameters`** `object` — An object of input parameters to override default input parameters. * **`recordVideo`** `boolean` — Try to record a video while running the task. This is not guaranteed to work as the robot might skip video recording if the site is too heavy. **Example:** ```json { "recordVideo": false, "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 } } ``` ### newRobotTask-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`result` (required)** `object` - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": null, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": null, "capturedScreenshots": null, "capturedLists": null } } ``` ### newRobotTask-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"bad_request", "body_parse_error", "invalid_robot_id", "invalid_input_parameters"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### CreditsLimitReachedResponse - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"credits_limit_reached"` * **`statusCode` (required)** `number`, possible values: `403` **Example:** ```json { "statusCode": 403, "messageCode": "credits_limit_reached" } ``` ### RobotUnderMaintenanceResponse - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"robot_under_maintenance"` * **`statusCode` (required)** `number`, possible values: `503` **Example:** ```json { "statusCode": 503, "messageCode": "robot_under_maintenance" } ``` ### getRobotTask-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`result` (required)** `object` - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": null, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": null, "capturedScreenshots": null, "capturedLists": null } } ``` ### getRobotTask-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id", "invalid_task_id"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### Schedules - **Type:**`array` Array of schedules. **Example:** ### Schedule - **Type:**`string` recurring schedule. **Example:** ### Monitor - **Type:**`object` * **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). * **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. * **`id` (required)** `string` — Unique robot monitor ID * **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. * **`name` (required)** `string` — Monitor name * **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. * **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. * **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. * **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. * **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. * **`schedule`** `string` — recurring schedule. * **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type * **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. **Example:** ```json { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } ``` ### getMonitors-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`monitors` (required)** `object` - **`items` (required)** `array` — Array of all monitors **Items:** - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. - **`totalCount` (required)** `number` — Total number of monitors this robot has * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitors": { "totalCount": 10, "items": [ { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } ] } } ``` ### getMonitors-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### CreateNewMonitorRequestBody - **Type:**`object` * **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). * **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. * **`name` (required)** `string` — Monitor name * **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. * **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. * **`schedule`** `string` — recurring schedule. * **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type **Example:** ```json { "name": "Monitor Products", "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15 } ``` ### createNewMonitor-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`monitor` (required)** `object` - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitor": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } } ``` ### CreateOrUpdateMonitorBadRequestResponse - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "body_parse_error", "invalid_name", "invalid_status", "invalid_input_parameters", "invalid_notifyOnCapturedScreenshotChange", "invalid_notifyOnCapturedTextChange", "invalid_capturedScreenshotNotificationThreshold", "invalid_schedules", "invalid_schedule", "invalid_monitor_id"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### CreateOrUpdateMonitorForbiddenResponse - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"schedule_interval_below_minimum"` * **`statusCode` (required)** `number`, possible values: `403` **Example:** ```json { "statusCode": 403, "messageCode": "schedule_interval_below_minimum" } ``` ### getMonitor-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`monitor` (required)** `object` - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitor": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } } ``` ### getMonitor-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "invalid_monitor_id"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### deleteMonitor-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success" } ``` ### deleteMonitor-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "invalid_monitor_id"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "invalid_robot_id" } ``` ### MonitorUpdateBodyParams - **Type:**`object` * **`capturedScreenshotNotificationThreshold`** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). * **`inputParameters`** `object` — An object of input parameters to override default input parameters. * **`name`** `string` — Monitor name * **`notifyOnCapturedScreenshotChange`** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. * **`notifyOnCapturedTextChange`** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. * **`schedule`** `string` — recurring schedule. * **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type * **`status`** `string`, possible values: `"active", "paused"` — If set to \`paused\`, the monitor will stop working until an \`active\` status is sent. **Example:** ```json { "name": "Monitor Products", "status": "active", "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15 } ``` ### updateMonitor-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`monitor` (required)** `object` - **`capturedScreenshotNotificationThreshold` (required)** `number` — The "screenshot changed" email notification will be sent to you if the change is greater than this threshold (in percent). - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique robot monitor ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`name` (required)** `string` — Monitor name - **`notifyOnCapturedScreenshotChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured screenshots. - **`notifyOnCapturedTextChange` (required)** `boolean` — If set to \`true\`, an email notification will be sent to you when a change is detected in captured texts. - **`pausedReason` (required)** `string`, possible values: `"lowCredits", "tooManyFailures", "userRequested", "userInactivity"` — Specifies the reason why the monitor is in a paused state. - **`status` (required)** `string`, possible values: `"active", "paused"` — Represents the current state of the monitor. 'active' indicates that the monitor is currently operational and performing its intended functions, while 'paused' signifies that the monitor's activities are temporarily suspended. The 'paused' state may be due to reasons specified in the 'pausedReason' attribute. - **`pausedAt`** `integer` — Monitor pause date and time in the form of a Unix timestamp. - **`schedule`** `string` — recurring schedule. - **`schedules`** `array` — Array of schedules. **Items:** - **`everyMinutes` (required)** `number` — Schedule interval in minutes - **`type` (required)** `string`, possible values: `"FIXED_INTERVAL"` — Schedule type - **`updatedAt`** `integer` — Monitor last update date and time in the form of a Unix timestamp. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "monitor": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "name": "Monitor Products", "status": "active", "pausedReason": null, "inputParameters": null, "schedules": null, "schedule": null, "notifyOnCapturedScreenshotChange": true, "notifyOnCapturedTextChange": true, "capturedScreenshotNotificationThreshold": 15, "createdAt": 1678795867879, "pausedAt": 1678795867879, "updatedAt": 1678795867879 } } ``` ### BulkRun - **Type:**`object` * **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. * **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. * **`id` (required)** `string` — Unique bulk run ID * **`robotId` (required)** `string` — Unique robot ID * **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. * **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. * **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. * **`title`** `string` — An optional string that describes the bulk run. **Example:** ```json { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "title": "Bulk Run Title", "status": "in-progress", "tasksCount": 10, "successfulTasks": 8, "failedTasks": 0, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "createdAt": 1678795867879 } ``` ### BulkRuns - **Type:**`object` * **`hasMore` (required)** `boolean` — Whether there are more bulk runs on the next page. * **`items` (required)** `array` **Items:** - **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. - **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. - **`id` (required)** `string` — Unique bulk run ID - **`robotId` (required)** `string` — Unique robot ID - **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. - **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. - **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. - **`title`** `string` — An optional string that describes the bulk run. * **`pageNumber` (required)** `integer` — Current page number. * **`totalCount` (required)** `integer` — Total number of bulk runs a robot has had. **Example:** ```json { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [ { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "title": "Bulk Run Title", "status": "in-progress", "tasksCount": 10, "successfulTasks": 8, "failedTasks": 0, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "createdAt": 1678795867879 } ] } ``` ### getBulkRuns-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`result` (required)** `object` - **`hasMore` (required)** `boolean` — Whether there are more bulk runs on the next page. - **`items` (required)** `array` **Items:** - **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. - **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. - **`id` (required)** `string` — Unique bulk run ID - **`robotId` (required)** `string` — Unique robot ID - **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. - **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. - **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. - **`title`** `string` — An optional string that describes the bulk run. - **`pageNumber` (required)** `integer` — Current page number. - **`totalCount` (required)** `integer` — Total number of bulk runs a robot has had. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [] } } ``` ### getBulkRuns-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### ArrayOfUserInputParameters - **Type:**`array` An array of input parameters to override the task's default input parameters. **Example:** ### BulkRunBodyParams - **Type:**`object` * **`inputParameters` (required)** `array` — An array of input parameters to override the task's default input parameters. **Items:** * **`title`** `string` — A string that describes the bulk run. **Example:** ```json { "title": "Bulk Run Title", "inputParameters": [ { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, { "originUrl": "https://www.ycombinator.com/companies/coinbase", "companies_skip": 0, "companies_limit": 20 } ] } ``` ### newBulkRun-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`result` (required)** `object` - **`bulkRun`** `object` - **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. - **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. - **`id` (required)** `string` — Unique bulk run ID - **`robotId` (required)** `string` — Unique robot ID - **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. - **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. - **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. - **`title`** `string` — An optional string that describes the bulk run. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "bulkRun": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "title": "Bulk Run Title", "status": "in-progress", "tasksCount": 10, "successfulTasks": 8, "failedTasks": 0, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "createdAt": 1678795867879 } } } ``` ### newBulkRun-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"bad_request", "body_parse_error", "invalid_robot_id", "invalid_input_parameters", "zero_length_parameters"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### newBulkRun-403 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"credits_limit_reached", "exceeded_bulk_run_threshold"` * **`statusCode` (required)** `number`, possible values: `403` **Example:** ```json { "statusCode": 403, "messageCode": "exceeded_bulk_run_threshold" } ``` ### RobotTasks - **Type:**`object` A paginated list of tasks. - **`hasMore` (required)** `boolean` — Whether there are more tasks on the next page. - **`items` (required)** `array` **Items:** - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. - **`pageNumber` (required)** `integer` — Current page number. - **`totalCount` (required)** `integer` — Total number of tasks. **Example:** ```json { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [ { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": null, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedDataTemporaryUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "capturedTexts": null, "capturedScreenshots": null, "capturedLists": null } ] } ``` ### getBulkRun-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`result` (required)** `object` - **`bulkRun` (required)** `object` - **`createdAt` (required)** `integer` — Bulk run creation date and time in the form of a Unix timestamp. - **`failedTasks` (required)** `integer` — Number of failed tasks under this bulk run. - **`id` (required)** `string` — Unique bulk run ID - **`robotId` (required)** `string` — Unique robot ID - **`status` (required)** `string`, possible values: `"in-progress", "finished", "paused", "stopped"` — The status of the bulk run. - **`successfulTasks` (required)** `integer` — Number of successfully finished tasks under this bulk run. - **`tasksCount` (required)** `integer` — Total number of tasks under this bulk run. - **`title`** `string` — An optional string that describes the bulk run. - **`robotTasks` (required)** `object` — A paginated list of tasks. - **`hasMore` (required)** `boolean` — Whether there are more tasks on the next page. - **`items` (required)** `array` **Items:** - **`capturedLists` (required)** `object` — All lists captured in this task. - **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. - **`capturedTexts` (required)** `object` — Captured texts - **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp - **`id` (required)** `string` — Unique task ID - **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. - **`robotId` (required)** `string` — Unique robot ID - **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API - **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. - **`capturedDataTemporaryUrl`** `string` — If your task's captured data exceeds 100KB, the data will be only accessible through this link. There's a 7 days expiration time for this link (you need to call this API again to get a new link if it expires). - **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). - **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. - **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. - **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. - **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task - **`runByTaskMonitorId`** `string` — Monitor ID that ran this check - **`runByUserId`** `string` — User ID who ran the robot on the dashboard - **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp - **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status - **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. - **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. - **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. - **`pageNumber` (required)** `integer` — Current page number. - **`totalCount` (required)** `integer` — Total number of tasks. * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success", "result": { "bulkRun": { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "title": "Bulk Run Title", "status": "in-progress", "tasksCount": 10, "successfulTasks": 8, "failedTasks": 0, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "createdAt": 1678795867879 }, "robotTasks": { "totalCount": 20, "pageNumber": 1, "hasMore": true, "items": [] } } } ``` ### getBulkRun-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"bad_request", "invalid_robot_id"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### Webhook - **Type:**`object` * **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. * **`id` (required)** `string` — Unique webhook ID * **`url` (required)** `string` — Webhook URL * **`webhookEvent` (required)** `string`, possible values: `"taskCapturedDataChanged", "taskFinished", "taskFinishedSuccessfully", "taskFinishedWithError", "tableExportFinishedSuccessfully"` **Example:** ```json { "id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e", "url": "https://example.com/v2/webhooks/callback/events", "webhookEvent": "taskFinished", "createdAt": 1678795867879 } ``` ### getWebhooks-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`statusCode` (required)** `number`, possible values: `200` * **`webhooks` (required)** `object` - **`items` (required)** `array` — Array of all webhooks **Items:** - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique webhook ID - **`url` (required)** `string` — Webhook URL - **`webhookEvent` (required)** `string`, possible values: `"taskCapturedDataChanged", "taskFinished", "taskFinishedSuccessfully", "taskFinishedWithError", "tableExportFinishedSuccessfully"` - **`totalCount` (required)** `number` — Total number of webhooks this robot has **Example:** ```json { "statusCode": 200, "messageCode": "success", "webhooks": { "totalCount": 10, "items": [ { "id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e", "url": "https://example.com/v2/webhooks/callback/events", "webhookEvent": "taskFinished", "createdAt": 1678795867879 } ] } } ``` ### getWebhooks-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### CreateNewWebhookBodyParams - **Type:**`object` * **`eventType` (required)** `string`, possible values: `"taskCapturedDataChanged", "taskFinished", "taskFinishedSuccessfully", "taskFinishedWithError", "tableExportFinishedSuccessfully"` * **`hookUrl` (required)** `string` — Webhook URL **Example:** ```json { "hookUrl": "https://example.com/v2/webhooks/callback/events", "eventType": "taskFinished" } ``` ### createNewWebhook-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`statusCode` (required)** `number`, possible values: `200` * **`webhook` (required)** `object` - **`createdAt` (required)** `integer` — Monitor creation date and time in the form of a Unix timestamp. - **`id` (required)** `string` — Unique webhook ID - **`url` (required)** `string` — Webhook URL - **`webhookEvent` (required)** `string`, possible values: `"taskCapturedDataChanged", "taskFinished", "taskFinishedSuccessfully", "taskFinishedWithError", "tableExportFinishedSuccessfully"` **Example:** ```json { "statusCode": 200, "messageCode": "success", "webhook": { "id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e", "url": "https://example.com/v2/webhooks/callback/events", "webhookEvent": "taskFinished", "createdAt": 1678795867879 } } ``` ### createNewWebhook-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "bad_request", "body_parse_error", "invalid_hookUrl", "invalid_eventType"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "bad_request" } ``` ### deleteWebhook-200 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"success"` * **`statusCode` (required)** `number`, possible values: `200` **Example:** ```json { "statusCode": 200, "messageCode": "success" } ``` ### deleteWebhook-400 - **Type:**`object` * **`messageCode` (required)** `string`, possible values: `"invalid_robot_id", "invalid_webhook_id", "bad_request"` * **`statusCode` (required)** `number`, possible values: `400` **Example:** ```json { "statusCode": 400, "messageCode": "invalid_robot_id" } ``` ### RobotTaskWebhook - **Type:**`object` * **`capturedLists` (required)** `object` — All lists captured in this task. * **`capturedScreenshots` (required)** `object` — All screenshots captured in this task. * **`capturedTexts` (required)** `object` — Captured texts * **`createdAt` (required)** `integer` — Task creation date and time in the form of a Unix timestamp * **`id` (required)** `string` — Unique task ID * **`inputParameters` (required)** `object` — An object of input parameters to override default input parameters. * **`robotId` (required)** `string` — Unique robot ID * **`runByAPI` (required)** `boolean` — Whether the robot was ran through the API * **`triedRecordingVideo` (required)** `boolean` — Whether the robot tried to record a video while performing this task. You can change a robot's video recording setting on its Settings page. Robots try to record a video when a task is failed and auto-retried as well. * **`finishedAt`** `integer` — Task finish date and time in the form of a Unix timestamp. If \`null\`, it means robot is still running and capturing data. Tasks time out with an error if they are not finished within 15 minutes (or the maximum duration allowed on your plan). * **`retriedByTaskId`** `string` — The ID of the task that retried this task, if this task failed with an error and was retried. Failed tasks get retried if "Double Check" option is enabled on robot Settings page. "Double Check" is enabled by default. * **`retriedOriginalTaskId`** `string` — The ID of the original failed task this task was retrying. For example, if task A failed and was retried by task B, and task B was retried by task C, \`retriedOriginalTaskId\` will point to task A in both task B and C. * **`retriedTaskId`** `string` — Deprecated legacy alias of \`retriedOriginalTaskId\`, kept for backward compatibility. It always returns the same value as \`retriedOriginalTaskId\`. Prefer using \`retriedOriginalTaskId\` instead. * **`robotBulkRunId`** `string` — Robot bulk run ID associated with this task * **`runByTaskMonitorId`** `string` — Monitor ID that ran this check * **`runByUserId`** `string` — User ID who ran the robot on the dashboard * **`startedAt`** `integer` — Task start date and time in the form of a Unix timestamp * **`status`** `string`, possible values: `"failed", "successful", "in-progress"` — task status * **`userFriendlyError`** `string` — If task fails, a user-friendly error will be provided here. * **`videoRemovedAt`** `integer` — After your account's data retention period, task videos get removed and this field will be video removal date and time in the form of a Unix timestamp. * **`videoUrl`** `string` — If a video was recorded for this task, this is the link to the video. **Example:** ```json { "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0", "inputParameters": { "originUrl": "https://www.ycombinator.com/companies/airbnb", "companies_skip": 0, "companies_limit": 10 }, "robotId": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06", "status": "successful", "runByUserId": null, "robotBulkRunId": null, "runByTaskMonitorId": null, "runByAPI": true, "createdAt": 1678795867879, "startedAt": 1678795867879, "finishedAt": 1678795867879, "userFriendlyError": null, "triedRecordingVideo": true, "videoUrl": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "videoRemovedAt": 1678795867879, "retriedOriginalTaskId": "673da019-bf0c-476e-9c4f-d35252a151dc", "retriedByTaskId": null, "capturedTexts": { "Product Name": "Alexis", "Width": "15", "Pattern Repeat": "PATTERN REPEAT", "Construction": "Hand woven", "Fiber": "100% Wool", "Color": null, "Main Image": "https://isteam.wsimg.com/ip/e31f7bba-252b-4669-9209-639d1c00765d/ols/258_original" }, "capturedScreenshots": { "top-ads": { "id": "b4d132f3-12d9-4770-ac7d-88e481fc5b47", "name": "Top ads", "src": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "width": 600, "height": 120, "x": 201, "y": 142, "deviceScaleFactor": 1.2, "full": "page", "comparedToScreenshotId": "29d742c2-6f45-4f29-9d48-ba6fe66e6e3d", "diffImageSrc": "https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host", "changePercentage": 20, "diffThreshold": 5, "fileRemovedAt": 1678795867879 } }, "capturedLists": { "companies": [ { "Position": "1", "name": "Airbnb", "location": "San Francisco, CA, USA", "description": "Book accommodations around the world." }, { "Position": "2", "name": "Coin base", "location": "San Francisco, CA, USA", "description": "Buy, sell, and manage crypto currencies." }, { "Position": "3", "name": "DoorDash", "location": "San Francisco, CA, USA", "description": "Restaurant delivery." } ] } } ```