Authentication

API Requests

Update Comparison

PATCH
https://api.sentinus.vision/comparisons/:id

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)

{
"retries": 0,
"status": "QUEUED"
}

List All Available Custom Checks

GET
https://api.sentinus.vision/customchecks/

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

GET
https://api.sentinus.vision/pages/

Lists all pages from your organization

Query Parameters

Parameter Value
orderBy created_at
orderDir desc
limit 500
offset 0

Add a Page

POST
https://api.sentinus.vision/pages/

Headers

Header Value
Content-Type application/json

Request Body (JSON)

{
"url": "https://example.org/",
"comment": null,
"page_group_id": 123
}

Update a Page: Change URL and page comment

PATCH
https://api.sentinus.vision/pages/:id

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)

{
"comment": "Test comment",
"url": "http://example.org"
}

Update a Page: Pause to exclude from future test runs for now

PATCH
https://api.sentinus.vision/pages/:id

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)

{
"paused_at": "2024-01-01T01:00:00.000Z"
}

Update a Page: Move to a different page group

PATCH
https://api.sentinus.vision/pages/:id

Headers

Header Value
Content-Type application/json

Path Parameters

Parameter Value
id 123

Request Body (JSON)

{
"page_group_id": 21
}

Delete a Page

DELETE
https://api.sentinus.vision/pages/:id

Path Parameters

Parameter Value
id 123

Create Screenshot for URL

GET
https://api.sentinus.vision/screenshot

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 .container element 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)

POST
https://api.sentinus.vision/compare

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

GET
https://api.sentinus.vision/screenshots/:screenshot_id

Path Parameters

Parameter Value
screenshot_id 123

Load Processed Screenshot by ID

GET
https://api.sentinus.vision/screenshots/:screenshot_id/processed/

Path Parameters

Parameter Value
screenshot_id 123

Single Image With Previous, Current and Difference Screenshots Side-by-Side

GET
https://api.sentinus.vision/comparisons/:comparison_id/screenshot/

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

GET
https://api.sentinus.vision/testruns/

Query Parameters

Parameter Value
orderBy created_at
orderDir desc
limit 500
offset 0

Get TestRun Details

GET
https://api.sentinus.vision/testruns/:test_run_id/

Path Parameters

Parameter Value
test_run_id 123

Send TestRun Notifications

GET
https://api.sentinus.vision/testruns/:test_run_id/notify

Path Parameters

Parameter Value
test_run_id 123

Preview TestRun Notifications

GET
https://api.sentinus.vision/testruns/:test_run_id/notify/preview

Shows notifications (Email, Slack) that would be send for this testrun.

Path Parameters

Parameter Value
test_run_id 123

Delete TestRun Notifications (only Slack)

DELETE
https://api.sentinus.vision/testruns/:test_run_id/notify

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

POST
https://api.sentinus.vision/testruns/:test_run_id/cancel

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

POST
https://api.sentinus.vision/testruns/:test_run_id/resume

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

POST
https://api.sentinus.vision/tests/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, if true, would not wait for the test to complete and will return test_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 using ondemand_website_id option 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)

{
"url": "https://example.com/",
"custom_checks": [
3
]
}

Start a New Test Run

POST
https://api.sentinus.vision/tests/:test_id/run/

Starts a new test, returns test run id:

Example response:

{
"test_run_id": 4388
}

Path Parameters

Parameter Value
test_id 123

List Tests

GET
https://api.sentinus.vision/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

GET
https://api.sentinus.vision/users/me/

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

GET
https://api.sentinus.vision/users/

Query Parameters

Parameter Value
orderBy created_at
orderDir desc
limit 500
offset 0

Get a Website

GET
https://api.sentinus.vision/websites/:id

Headers

Header Value
Content-Type application/json

Path Parameters

Parameter Value
id 123

Add a Website

POST
https://api.sentinus.vision/websites/

Headers

Header Value
Content-Type application/json

Request Body (JSON)

{
"name": "Example",
"prod_domain": " https://example.com/ ",
"project_id": 1
}

Update a Website

PATCH
https://api.sentinus.vision/websites/:id

Headers

Header Value
Content-Type application/json

Path Parameters

Parameter Value
id 123

Request Body (JSON)

{
"name": "Example 1",
"dev_domain": "https://dev.example.com"
}

Delete a Website

DELETE
https://api.sentinus.vision/websites/:id

Path Parameters

Parameter Value
id 123

List Websites

GET
https://api.sentinus.vision/websites/

Query Parameters

Parameter Value
orderBy created_at
orderDir desc
limit 500
offset 0