Authentication
API Requests
Update Comparison
Available fields:
- "status" - 'QUEUED','RUNNING','FINISHED','FAILED' or 'CANCELED'
- "result" - 'PASSED','FAILED','SKIPPED' or 'ERROR'
- "retries" - number of retries of this test, integer
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
Request Body (JSON)
"status": "QUEUED"
List All Available Custom Checks
Lists custom checks, both those that are available for all users (denoted by "organization_id": null) and those only available to the current user's organization. Custom checks can be added to a scheduled test or used in on-demand tests.
Example response:
{"data": [}{]"id": 1,},
"name": "GTM Check",
"created_at": "2024-09-02T19:52:46.548Z",
"created_by_id": 1,
"updated_at": "2024-09-02T19:52:46.548Z",
"organization_id": 15,
"comment": null
{"id": 7,},
"name": "Google Analytics Check",
"created_at": "2025-04-23T09:11:06.321Z",
"created_by_id": 1,
"updated_at": null,
"organization_id": null,
"comment": "Checks for Google Analytics by checking network requests to \"www.google-analytics.com\" or defined \"gta\" / \"ga\" variables"
{"id": 8,},
"name": "Domain and SSL Expiration Check",
"created_at": "2025-04-28T11:09:58.255Z",
"created_by_id": 1,
"updated_at": null,
"organization_id": null,
"comment": null
{"id": 11,},
"name": "Console & Network Errors Check",
"created_at": "2025-08-19T19:38:59.900Z",
"created_by_id": 1,
"updated_at": null,
"organization_id": null,
"comment": "Checks for console.error or network errors on the page"
{"id": 12,}
"name": "Added/Removed GTM Containers Check",
"created_at": "2025-09-05T08:49:07.652Z",
"created_by_id": 1,
"updated_at": null,
"organization_id": null,
"comment": null
List Pages
Lists all pages from your organization
Query Parameters
| Parameter | Value |
|---|---|
| orderBy | created_at |
| orderDir | desc |
| limit | 500 |
| offset | 0 |
Add a Page
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Request Body (JSON)
"comment": null,
"page_group_id": 123
Update a Page: Change URL and page comment
Page "url" can be a relative URL (for example "/about", in that case production, staging or development domain configured for a website will be used, or "url" can be set to an absolute URL (for example "https://example.com").
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
Request Body (JSON)
"url": "http://example.org"
Update a Page: Pause to exclude from future test runs for now
Setting "paused_at" to any non-null value will pause the page and it will be excluded from all future comparisons.
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
Request Body (JSON)
Update a Page: Move to a different page group
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
Request Body (JSON)
Delete a Page
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
Create Screenshot for URL
NOT async, takes up to 45s
url parameter accepts special syntax for making screenshots of pages that depend on scroll.
For example:
https://www.example.com/@!0,2- scroll the page 2 screen heights vertically before taking a screenshot.https://www.example.com/@0,1000- scroll the page 1000px vertically.https://www.example.com/@!.container,0,1- scroll the page 1 screen height down relative to the top of a.containerelement on the page
You can also supply credentials for the Basic HTTP authentication - https://user:password@example.com
Query Parameters
| Parameter | Value |
|---|---|
| url | https://www.example.com/ |
| width | 1440 |
| height | 1024 |
Compare URL vs Uploaded Screenshot (NOT async, takes up to 60s)
Headers
| Header | Value |
|---|---|
| Content-Type | multipart/form-data |
Request Body (Multipart Form)
| Parameter | Value |
|---|---|
| url | https://example.com |
| threshold | 0.2 |
| screenshot | @file() |
Load Screenshot by ID
Path Parameters
| Parameter | Value |
|---|---|
| screenshot_id | 123 |
Load Processed Screenshot by ID
Path Parameters
| Parameter | Value |
|---|---|
| screenshot_id | 123 |
Single Image With Previous, Current and Difference Screenshots Side-by-Side
Generates a single image with previous, current and difference Screenshots side-by-side. Can be used in notifications.
Path Parameters
| Parameter | Value |
|---|---|
| comparison_id |
List TestRuns
Query Parameters
| Parameter | Value |
|---|---|
| orderBy | created_at |
| orderDir | desc |
| limit | 500 |
| offset | 0 |
Get TestRun Details
Path Parameters
| Parameter | Value |
|---|---|
| test_run_id | 123 |
Send TestRun Notifications
Path Parameters
| Parameter | Value |
|---|---|
| test_run_id | 123 |
Preview TestRun Notifications
Shows notifications (Email, Slack) that would be send for this testrun.
Path Parameters
| Parameter | Value |
|---|---|
| test_run_id | 123 |
Delete TestRun Notifications (only Slack)
Deletes sent Slack notifications for this testrun. Works only if Slack was connected via OAuth2, doesn't work for Webhook connections.
Path Parameters
| Parameter | Value |
|---|---|
| test_run_id | 123 |
Cancel TestRun
Marks test run as canceled, stops all queued comparison from further processing, but allows already running ones to finish.
Path Parameters
| Parameter | Value |
|---|---|
| test_run_id | 123 |
Resume Canceled TestRun
Resumes cancelled test run by adding all canceled comparisons to processing queue.
Path Parameters
| Parameter | Value |
|---|---|
| test_run_id | 123 |
Start a New On-Demand Test Run
Starts a new test, an on-demand test for a given URL.
Parameters:
url- full URL of the page to test.custom_checks- array of IDs of custom JS tests to run. If empty, will run historical screenshot comparison for that page. See List All Available Custom Checks endpoint for possible values.async- optional, iftrue, would not wait for the test to complete and will returntest_run_id. By default, the endpoint waits for the test to complete and returns a list of comparisons with results.website_id- optional, ID of any of your websites, on-demand test will run in the context of that website, using any parameters configured for it. If not specified, will use the oldest website of the user's organization. Can be overriden usingondemand_website_idoption on Organization level.
Example of synchronous on-demand test:
{"url": "https://example.com",}
"custom_checks": [3]
Example response:
{"data": [}{]"id": 279200,}
"created_at": "2025-11-12T11:35:33.809Z",
"started_at": "2025-11-12T11:35:33.809Z",
"loaded_at": "2025-11-12T11:37:01.948Z",
"finished_at": "2025-11-12T11:37:01.948Z",
"duration": 6,
"http_code_to": 200,
"test_run_id": 5095,
"comments": "custom JS test passed",
"details_summary": null,
"details": null,
"type": "JS",
"status": "FINISHED",
"result": "PASSED",
"custom_test_id": 34,
"retries": 2,
"hash": null,
"customization": null,
"page": {"id": 2014,},
"url": "https://example.com"
"browser": {"id": 1,},
"name": "Desktop HD (~13' Macbook Pro M1)",
"width": 1280,
"height": 800,
"deviceScaleFactor": 1
"custom_check": {"id": 3,}
"name": "Custom check name",
"screenshot": false,
"only_failures": false,
"one_page": false
Usually synchronous on-demand runs for 40-80 seconds, depending on the tested website and Sentinus.Vision current load. If test for some reason runs more than 5 minutes, API endpoint will respond with test_run_id that can be used to get results later via GET /testruns/:test_run_id/ endpoint:
{"test_run_id": 1234,}
"timeout": true,
"message": "Test run is still in progress, please check back later."
Example request body for async on-demand test:
{"async": true,}
"url": "https://example.com",
"custom_checks": [1,],
2,
3
Example response:
{"test_run_id": 4388}
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Request Body (JSON)
"custom_checks": [
Start a New Test Run
Starts a new test, returns test run id:
Example response:
{"test_run_id": 4388}
Path Parameters
| Parameter | Value |
|---|---|
| test_id | 123 |
List Tests
Example response:
{"data": [}{],"id": 21,}
"created_at": "2024-09-03T11:12:33.059Z",
"updated_at": "2024-09-03T11:12:33.059Z",
"project_id": 15,
"name": "Test Name",
"test_history": "NONE",
"test_compare_from": "PROD",
"test_compare_to": "NONE",
"test_errors": "NONE",
"page_groups": [{]"id": 21,}
"description": "All Pages",
"created_at": "2024-09-03T11:12:33.052Z",
"updated_at": "2024-09-03T11:12:33.052Z",
"website_id": 15,
"page_group_manager_id": 4
"total_count": 1
Query Parameters
| Parameter | Value |
|---|---|
| orderBy | created_at |
| orderDir | desc |
| limit | 500 |
| offset | 0 |
Current User Details
Example response:
{"data": {}"id": 16,}
"login": "user1",
"name": "Test user",
"email": "",
"created_at": "2024-09-03T11:12:33.033Z",
"updated_at": "2024-09-03T11:12:33.033Z",
"organization_id": 1,
"organization": {"id": 1,}
"name": "Org Name",
"created_at": "2024-09-03T11:12:33.004Z",
"updated_at": "2024-09-17T10:22:30.061Z",
List all Users within Current Organization
Query Parameters
| Parameter | Value |
|---|---|
| orderBy | created_at |
| orderDir | desc |
| limit | 500 |
| offset | 0 |
Get a Website
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
Add a Website
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Request Body (JSON)
"prod_domain": " https://example.com/ ",
"project_id": 1
Update a Website
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
Request Body (JSON)
"dev_domain": "https://dev.example.com"
Delete a Website
Path Parameters
| Parameter | Value |
|---|---|
| id | 123 |
List Websites
Query Parameters
| Parameter | Value |
|---|---|
| orderBy | created_at |
| orderDir | desc |
| limit | 500 |
| offset | 0 |