Projects and test assets API for Low Code Automation
List and inspect your Low Code Automation projects, test suites, folders, tests, and modules.
For authentication and the base URL, see the Low Code Automation Reference API overview.
List projects
Fetches the Low Code Automation projects that your group owns. This endpoint requires the View projects role permission.
Request parameters
In the curl request, replace YOUR_USERNAME and YOUR_ACCESS_KEY with your accountβs username and access key.
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects?page=1&per_page=100" \
-H "accept: application/json"
-
name string
Search for projects whose name matches this value.
-
page integer
Page to fetch. Pages are 1-based. The default is
1. -
per_page integer
Number of records per page. The default is
50and the maximum is100.
Response attributes 200 application/json
Response
{
"projects": [
{
"project_key": 314401,
"project_id": "PR-150",
"name": "Web storefront"
},
{
"project_key": 314356,
"project_id": "PR-149",
"name": "Mobile web smoke"
}
],
"paging": {
"page": 1,
"per_page": 100,
"total": 2,
"total_pages": 1
}
}
-
projects Array[Object]
βΆ SHOW VALUESProjects in your group.
-
project_key Integer
Integer key of the project, for example
22530. Use it wherever an endpoint URL asks for the project, such as/projects/22530/builds. -
project_id String
Project ID in the
PR-xxxxformat, for examplePR-1. You can use it instead ofproject_keyin any endpoint URL, such as/projects/PR-1/builds. -
name String
Name of the project.
-
-
paging Object
βΆ SHOW VALUESPagination details of the response.
-
page Integer
Page returned. Pages are 1-based.
-
per_page Integer
Number of records per page.
-
total Integer
Total number of records that match the request. When
best_effortistrue, this is an upper bound. -
total_pages Integer
Total number of pages. When
best_effortistrue, this is an upper bound. -
best_effort Boolean
Returned as
truewhentotalandtotal_pagesare upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying ontotal_pages. Absent when the counts are exact.
-
Use either value from this response wherever an endpoint URL includes {project_id}: project_key, such as 312726, or project_id, such as PR-142. Both point to the same project.
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View projects permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
Get a project
Fetches a single project, including its description. This endpoint requires the View projects role permission.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-40906" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details.
Response attributes 200 application/json
Response
{
"project": {
"project_key": 40906,
"project_id": "PR-40906",
"name": "Checkout regression",
"description": "P0 and P1 cases for the checkout flow"
}
}
-
project Object
βΆ SHOW VALUESThe project.
-
project_key Integer
Integer key of the project.
-
project_id String
Project identifier in the
PR-xxxxformat. -
name String
Name of the project.
-
description String
Description of the project.
-
Response 400 application/json
The Project Key is invalid.
Response
{
"error": {
"code": "invalid_request",
"message": "string"
}
}
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View projects permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 404 application/json
The project doesnβt exist, or it belongs to another group.
Response
{
"error": {
"code": "not_found",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
List test suites
Fetches the test suites in a project. This endpoint requires the View test suites role permission. The total field is an exact count.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-1/suites?device_type=desktop&scheduler=on&page=1&per_page=50" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
name string
Return only suites whose name matches this value.
-
created_by string
Return only suites created by this user. Accepts a BrowserStack user ID, an email address, or a username.
-
device_type string
Return only suites configured for these device types. The possible values are
desktop,mobile, andtablet. Separate multiple values with a comma. -
scheduler string
Return only suites with or without an active schedule. Set to
onfor scheduled suites andofffor the rest. -
page integer
Page to fetch. Pages are 1-based. The default is
1. -
per_page integer
Number of records per page. The default is
50and the maximum is100.
Response attributes 200 application/json
Response
{
"suites": [
{
"id": "86d96231febf686a4797f24aa06564e3e9ad5e95",
"name": "Nightly regression",
"description": "",
"environment_id": null,
"device_type": "desktop",
"emulated": false,
"browsers": [
{
"browser": "Chrome"
}
],
"devices": [],
"scheduler": {
"enabled": true
},
"test_count": 1,
"created_by": "Alex Johnson",
"created_at": "2026-09-07T07:32:48Z"
}
],
"paging": {
"page": 1,
"per_page": 50,
"total": 1,
"total_pages": 1
}
}
-
suites Array[Object]
βΆ SHOW VALUESTest suites that match the request.
-
id String
Unique identifier of the test suite.
-
name String
Name of the test suite.
-
description String
Description of the test suite. Empty when not set.
-
environment_id String
Identifier of the environment the suite runs against.
nullwhen not set. -
device_type String
Device type the suite is configured for. The possible values are
desktop,mobile, andtablet. -
emulated Boolean
Whether the suite runs on emulated devices.
-
browsers Array[Object]
βΆ SHOW VALUESBrowsers the suite runs on.
-
browser String
Browser name, for example
Chrome,Firefox,Edge, orSafari. -
browserVersionSelector String
Browser version the suite runs on, for example
Latest-3. Returned only by the Get a test suite endpoint.
-
-
devices Array[Object]
Mobile devices the suite runs on. Empty for desktop suites.
-
scheduler Object
βΆ SHOW VALUESSchedule status of the suite.
-
enabled Boolean
Whether the setting is turned on.
-
-
test_count Integer
Number of tests in the suite.
-
created_by String
Name of the user who created the suite.
-
created_at String
When the suite was created, as an ISO 8601 timestamp.
-
-
paging Object
βΆ SHOW VALUESPagination details of the response.
-
page Integer
Page returned. Pages are 1-based.
-
per_page Integer
Number of records per page.
-
total Integer
Total number of records that match the request. When
best_effortistrue, this is an upper bound. -
total_pages Integer
Total number of pages. When
best_effortistrue, this is an upper bound. -
best_effort Boolean
Returned as
truewhentotalandtotal_pagesare upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying ontotal_pages. Absent when the counts are exact.
-
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View test suites permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 404 application/json
The project doesnβt exist, or it belongs to another group.
Response
{
"error": {
"code": "not_found",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
Get a test suite
Fetches the full configuration of a single test suite, including its devices, schedule, local testing settings, notifications, and the tests it contains.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-1/suites/66fa3c6f572553b718f93a0ad6e22b7feb2719c6" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
suite_id* string
Unique identifier of the test suite. To get it, open the test suite, click View metadata, then copy the Test suite ID.
Response attributes 200 application/json
The scheduler object is derived from the suiteβs cron expression and returned in a readable form. When the schedule is turned off, frequency, days, time, and timezone are empty.
Response
{
"suite": {
"id": "66fa3c6f572553b718f93a0ad6e22b7feb2719c6",
"name": "Search and discovery",
"description": "",
"base_url": "",
"resolution": null,
"environment_id": null,
"created_by": "Alex Johnson",
"created_at": "2023-11-16T10:43:08Z",
"updated_at": "2026-04-23T07:51:06Z",
"device_type": "desktop",
"emulated": false,
"run_on_real_device": false,
"browsers": [
{
"browser": "Safari",
"browserVersionSelector": "Latest"
}
],
"devices": [],
"scheduler": {
"enabled": true,
"frequency": "weekly",
"days": [
"Thursday"
],
"time": "10:45",
"timezone": null,
"cron": "45 10 * * 4"
},
"auto_rerun": false,
"execution": {
"order": [
{
"kind": "parallel",
"block_id": "2dfea115-7b89-2d5e-2437-2b4c929f59b5",
"onFailure": "continue",
"block_name": "Block 1",
"entityList": [
"3a459e718298285920bbc2007885c3a924a0760d",
"ae5895d6a45a2c27721cd3a881c84a0a3a52399d"
],
"entityType": "test",
"executionConditions": null
}
],
"browser_args": null
},
"accessibility": null,
"geolocation_codes": [],
"local_testing": {
"enabled": false,
"local_identifier": null
},
"notifications": {
"email_configured": true,
"email_trigger": "all",
"email_recipient_count": 6,
"email_recipients": [
{
"id": 2241,
"name": "Alex Johnson",
"email": "alex.johnson@example.com"
}
],
"slack_enabled": false
},
"test_count": 2,
"tests": [
{
"id": "3a459e718298285920bbc2007885c3a924a0760d",
"name": "Search by keyword"
}
]
}
}
-
suite Object
βΆ SHOW VALUESThe test suite.
-
id String
Unique identifier of the test suite.
-
name String
Name of the test suite.
-
description String
Description of the test suite. Empty when not set.
-
base_url String
URL the suiteβs tests start from. Empty when not set.
-
resolution String
Screen resolution for desktop runs.
nullwhen not set. -
environment_id String
Identifier of the environment the suite runs against.
nullwhen not set. -
created_by String
Name of the user who created the suite.
-
created_at String
When the suite was created, as an ISO 8601 timestamp.
-
updated_at String
When the suite was last updated, as an ISO 8601 timestamp.
-
device_type String
Device type the suite is configured for. The possible values are
desktop,mobile, andtablet. -
emulated Boolean
Whether the suite runs on emulated devices.
-
run_on_real_device Boolean
Whether the suite runs on real devices.
-
browsers Array[Object]
βΆ SHOW VALUESBrowsers the suite runs on.
-
browser String
Browser name, for example
Chrome,Firefox,Edge, orSafari. -
browserVersionSelector String
Browser version the suite runs on, for example
Latest-3. Returned only by the Get a test suite endpoint.
-
-
devices Array[Object]
Mobile devices the suite runs on. Empty for desktop suites.
-
scheduler Object
βΆ SHOW VALUESSchedule of the suite.
-
enabled Boolean
Whether the schedule is active.
-
frequency String
How often the suite runs, for example
weekly. -
days Array[String]
Days of the week the suite runs on.
-
time String
Time of day the suite runs, in
HH:MMformat. -
timezone String
Time zone of the schedule.
nullwhen not set. -
cron String
Cron expression equivalent to the schedule.
-
-
auto_rerun Boolean
Whether failed tests rerun automatically.
-
execution Object
βΆ SHOW VALUESOrder in which the suite runs its tests.
-
order Array[Object]
βΆ SHOW VALUESExecution blocks, in the order they run.
-
kind String
How the tests in the block run, for example
parallel. -
block_id String
Unique identifier of the block.
-
onFailure String
What happens when a test in the block fails, for example
continue. -
block_name String
Name of the block.
-
entityList Array[String]
Identifiers of the tests in the block.
-
entityType String
Type of the entities in
entityList, for exampletest. -
executionConditions Object
Conditions that control whether the block runs.
nullwhen none are set.
-
-
browser_args Array[String]
Browser arguments passed at launch.
nullwhen none are set.
-
-
accessibility Object
Accessibility testing settings.
nullwhen accessibility testing is turned off. -
geolocation_codes Array[String]
IP geolocation codes the suite runs from. Empty when not set.
-
local_testing Object
βΆ SHOW VALUESLocal Testing settings of the suite.
-
enabled Boolean
Whether Local Testing is turned on.
-
local_identifier String
Local identifier used to route traffic through the Local connection.
nullwhen not set.
-
-
notifications Object
βΆ SHOW VALUESNotification settings of the suite.
-
email_configured Boolean
Whether email notifications are set up.
-
email_trigger String
Which builds send an email, for example
all. -
email_recipient_count Integer
Number of email recipients.
-
email_recipients Array[Object]
βΆ SHOW VALUESUsers who receive the email notifications.
-
id Integer
User ID of the recipient.
-
name String
Name of the recipient.
-
email String
Email address of the recipient.
-
-
slack_enabled Boolean
Whether Slack notifications are turned on. The Slack webhook URL is never returned.
-
-
test_count Integer
Number of tests in the suite.
-
tests Array[Object]
βΆ SHOW VALUESTests in the suite.
-
id String
Unique identifier.
-
name String
Display name.
-
-
The Slack webhook URL is never returned. slack_enabled reports only whether the integration is turned on.
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View test suites permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 404 application/json
The test suite doesnβt exist, or it belongs to another group.
Response
{
"error": {
"code": "not_found",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
List folders
Fetches the root folders of a project. This endpoint requires the View tests role permission.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-1/folders?name=folder&created_by=alex.johnson%40example.com&page=1&per_page=50" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
name string
Return only folders whose name matches this value.
-
created_by string
Return only folders created by this user. Accepts a BrowserStack user ID, an email address, or a username.
-
page integer
Page to fetch. Pages are 1-based. The default is
1. -
per_page integer
Number of records per page. The default is
50and the maximum is100.
Response attributes 200 application/json
Response
{
"folders": [
{
"id": 736937,
"name": "folder 2",
"description": null,
"identifier": null,
"parent_id": null,
"test_recording_count": 6,
"sub_folder_count": null,
"created_by": "Alex Johnson"
}
],
"paging": {
"page": 1,
"per_page": 50,
"total": 1,
"total_pages": 1,
"best_effort": true
}
}
-
folders Array[Object]
βΆ SHOW VALUESFolders that match the request.
-
id Integer
Unique identifier of the folder.
-
name String
Name of the folder.
-
description String
Description of the folder.
nullwhen not set. -
identifier String
Display identifier of the folder, for example
FD-5126.nullwhen not set. -
parent_id Integer
Identifier of the parent folder.
nullfor a root folder. -
test_recording_count Integer
Number of tests in the folder.
-
sub_folder_count Integer
Number of sub-folders.
nullwhen not calculated. -
created_by String
Name of the user who created the folder.
-
-
paging Object
βΆ SHOW VALUESPagination details of the response.
-
page Integer
Page returned. Pages are 1-based.
-
per_page Integer
Number of records per page.
-
total Integer
Total number of records that match the request. When
best_effortistrue, this is an upper bound. -
total_pages Integer
Total number of pages. When
best_effortistrue, this is an upper bound. -
best_effort Boolean
Returned as
truewhentotalandtotal_pagesare upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying ontotal_pages. Absent when the counts are exact.
-
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View tests permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
Get a folder
Fetches the sub-folders and tests inside a folder. This endpoint requires the View tests role permission.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-1/folders/742984" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
folder_id* string
Unique identifier of the folder. To get it, call the List folders endpoint and copy the
idof the folder from the response. -
name string
Return only sub-folders whose name matches this value.
-
created_by string
Return only sub-folders created by this user. Accepts a BrowserStack user ID, an email address, or a username.
-
page integer
Page to fetch. Pages are 1-based. The default is
1. -
per_page integer
Number of records per page. The default is
50and the maximum is100.
Response attributes 200 application/json
Response
{
"folder": {
"id": 742984,
"name": "Demo",
"identifier": "FD-5126",
"test_recording_count": 2,
"sub_folder_count": 0,
"description": null
},
"folders": [],
"tests": [
{
"id": "af4e429edc11bc5eeac08058fd954b2e12aa38ab",
"name": "Guest checkout"
},
{
"id": "ffe16a0ff8a86231bb983e2bbc907228263ca4ff",
"name": "Registered user checkout"
}
],
"paging": {
"page": 1,
"per_page": 50,
"total": 2,
"total_pages": 1,
"best_effort": true
}
}
-
folder Object
βΆ SHOW VALUESThe folder.
-
id Integer
Unique identifier of the folder.
-
name String
Name of the folder.
-
identifier String
Display identifier of the folder, for example
FD-5126. -
test_recording_count Integer
Number of tests in the folder.
-
sub_folder_count Integer
Number of sub-folders.
-
description String
Description of the folder.
nullwhen not set.
-
-
folders Array[Object]
βΆ SHOW VALUESSub-folders of the folder. Empty when there are none.
-
id Integer
Unique identifier of the folder.
-
name String
Name of the folder.
-
description String
Description of the folder.
nullwhen not set. -
identifier String
Display identifier of the folder, for example
FD-5126.nullwhen not set. -
parent_id Integer
Identifier of the parent folder.
nullfor a root folder. -
test_recording_count Integer
Number of tests in the folder.
-
sub_folder_count Integer
Number of sub-folders.
nullwhen not calculated. -
created_by String
Name of the user who created the folder.
-
-
tests Array[Object]
βΆ SHOW VALUESTests in the folder.
-
id String
Unique identifier.
-
name String
Display name.
-
-
paging Object
βΆ SHOW VALUESPagination details of the response.
-
page Integer
Page returned. Pages are 1-based.
-
per_page Integer
Number of records per page.
-
total Integer
Total number of records that match the request. When
best_effortistrue, this is an upper bound. -
total_pages Integer
Total number of pages. When
best_effortistrue, this is an upper bound. -
best_effort Boolean
Returned as
truewhentotalandtotal_pagesare upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying ontotal_pages. Absent when the counts are exact.
-
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View tests permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 404 application/json
The folder doesnβt exist, or it belongs to another group.
Response
{
"error": {
"code": "not_found",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
List tests
Fetches the tests in a project. To list tests across your group, use Get all recorded tests. This endpoint requires the View tests role permission.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-1/tests?name=Buy%20iPhone&tags=smoke,checkout&device_type=desktop&last_run_status=passed,failed&created_by=alex.johnson%40example.com&folder_id=742984&page=1&per_page=50" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
name string
Return only tests whose name matches this value.
-
tags string
Return only tests carrying these tags. Separate multiple tags with a comma.
-
device_type string
Return only tests configured for this device type. The possible values are
desktopandmobile. -
last_run_status string
Return only tests whose latest cloud run ended in one of these statuses. Separate multiple values with a comma.
- Show 4 more
-
created_by string
Return only tests created by this user. Accepts a BrowserStack user ID, an email address, or a username.
-
folder_id string
Return only tests inside this folder. Set to
rootfor the project root. Omit this parameter to return every test in the project. -
page integer
Page to fetch. Pages are 1-based. The default is
1. -
per_page integer
Number of records per page. The default is
50and the maximum is100.
Response attributes 200 application/json
Response
{
"tests": [
{
"id": "bebf705c719ec37af1b35e7e9102b68927823781",
"name": "Buy iPhone | Add to cart and checkout",
"created_at": "2026-03-07T07:36:02.695Z",
"created_by": "alex.johnson@example.com",
"base_url": "https://bstackdemo.com",
"tags": [
"smoke",
"checkout"
],
"suite": "Smoke Suite",
"config": {
"browser": "chrome",
"os": "Windows 11",
"target_device": "desktop",
"resolution": {
"width": 1920,
"height": 1080
}
},
"last_run_status": "failed",
"latest_version_id": "V3",
"versions_count": 3,
"active_steps_count": 18,
"mappings": []
}
],
"paging": {
"page": 1,
"per_page": 50,
"total": 1,
"total_pages": 1
}
}
-
tests Array[Object]
βΆ SHOW VALUESTests that match the request.
-
id String
Unique identifier of the test.
-
name String
Name of the test.
-
created_at String
When the test was created, as an ISO 8601 timestamp.
-
created_by String
User who created the test.
-
base_url String
URL the test starts from.
-
tags Array[String]
Tags on the test.
-
suite String
Name of the test suite that contains the test.
-
config Object
βΆ SHOW VALUESBrowser and device configuration of the test.
-
browser String
Browser the test is configured for.
-
os String
Operating system the test is configured for.
-
target_device String
Device type the test is configured for, for example
desktop. -
resolution Object
βΆ SHOW VALUESScreen resolution of the test.
-
width Integer
Screen width in pixels.
-
height Integer
Screen height in pixels.
-
-
-
last_run_status String
Status of the latest cloud run, for example
passedorfailed. -
latest_version_id String
Label of the latest published version, for example
V3. -
versions_count Integer
Number of published versions.
-
active_steps_count Integer
Number of active steps in the latest version.
-
mappings Array[Object]
βΆ SHOW VALUESTest cases in test case management tools that the test is linked to.
-
tool String
Test case management tool the test is linked to, for example
jira. -
test_case_id String
Identifier of the linked test case in that tool.
-
-
-
paging Object
βΆ SHOW VALUESPagination details of the response.
-
page Integer
Page returned. Pages are 1-based.
-
per_page Integer
Number of records per page.
-
total Integer
Total number of records that match the request. When
best_effortistrue, this is an upper bound. -
total_pages Integer
Total number of pages. When
best_effortistrue, this is an upper bound. -
best_effort Boolean
Returned as
truewhentotalandtotal_pagesare upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying ontotal_pages. Absent when the counts are exact.
-
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View tests permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
Get a test
Fetches a single test, including every recorded step, its variables, and its dataset. This endpoint requires the View tests role permission.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-1/tests/bebf705c719ec37af1b35e7e9102b68927823781?version=V2" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
test_id* string
Unique identifier of the test. To get it, call the List tests endpoint and copy the
idof the test from the response. -
version string
Published version label of the test to fetch. The default is the current version. An unknown label returns a
400response.
Response attributes 200 application/json
Response
{
"test": {
"id": "bebf705c719ec37af1b35e7e9102b68927823781",
"name": "Buy iPhone | Add to cart and checkout",
"base_url": "https://bstackdemo.com",
"frameworks": [],
"tags": [
"smoke"
],
"target_device": "desktop",
"visual_testing_enabled": false,
"config": {
"browser": "chrome",
"os": "Windows 11",
"viewport": "1920x1080",
"locale": "en-US",
"advanced_options": {
"cookies": [],
"request_headers": [],
"local_storage": [],
"basic_auth": [],
"browser_flags": {}
}
},
"mappings": [
{
"tool": "jira",
"test_case_id": "CHECKOUT-14"
}
],
"suites": {
"count": 1,
"items": [
"Smoke Suite"
]
},
"variables": [
{
"hashed_id": "4c81ba90fe12",
"name": "USER_EMAIL",
"type": "string",
"is_global": true,
"is_shared": false,
"value": "demo_user@example.com"
}
],
"dataset": {
"hashed_id": "d51fa7c3b904",
"name": "Checkout users",
"used_columns": [
"email",
"plan"
]
},
"steps": [
{
"id": "de45d6cf-ac65-422b-9f5c-fa58d25ee036",
"name": "Open page",
"action": "open",
"locator": null,
"position": 1,
"timeout_ms": 30000,
"failure_condition": "stop",
"is_iframe": false,
"is_shadow_dom": false
}
],
"versions": [
{
"version": "V2",
"name": "Pre-release",
"created_at": "2026-06-11T09:02:11.400Z"
}
],
"total_steps": 18,
"selected_version": "V2"
}
}
-
test Object
βΆ SHOW VALUESThe test.
-
id String
Unique identifier of the test.
-
name String
Name of the test.
-
base_url String
URL the test starts from.
-
frameworks Array[String]
Frameworks associated with the test. Empty when none are set.
-
tags Array[String]
Tags on the test.
-
target_device String
Device type the test is configured for, for example
desktop. -
visual_testing_enabled Boolean
Whether visual testing is turned on for the test.
-
config Object
βΆ SHOW VALUESBrowser and device configuration of the test.
-
browser String
Browser the test is configured for.
-
os String
Operating system the test is configured for.
-
viewport String
Viewport size, in
WIDTHxHEIGHTformat. -
locale String
Browser locale, for example
en-US. -
advanced_options Object
βΆ SHOW VALUESAdvanced browser settings of the test.
-
cookies Array[Object]
Cookies set before the test starts.
-
request_headers Array[Object]
Request headers added to every request.
-
local_storage Array[Object]
Local storage entries set before the test starts.
-
basic_auth Array[Object]
Basic authentication credentials used by the test.
-
browser_flags Object
Browser flags passed at launch.
-
-
-
mappings Array[Object]
βΆ SHOW VALUESTest cases in test case management tools that the test is linked to.
-
tool String
Test case management tool the test is linked to, for example
jira. -
test_case_id String
Identifier of the linked test case in that tool.
-
-
suites Object
βΆ SHOW VALUESTest suites that contain the test.
-
count Integer
Number of test suites that contain the test.
-
items Array[String]
Names of the test suites that contain the test.
-
-
variables Array[Object]
βΆ SHOW VALUESVariables the test uses.
-
hashed_id String
Unique identifier of the variable.
-
name String
Name of the variable.
-
type String
Type of the variable, for example
string. -
is_global Boolean
Whether the variable is a global variable.
-
is_shared Boolean
Whether the variable is shared across tests.
-
value String
Value of the variable.
-
-
dataset Object
βΆ SHOW VALUESDataset the test reads from.
nullwhen the test doesnβt use a dataset.-
hashed_id String
Unique identifier of the dataset.
-
name String
Name of the dataset.
-
used_columns Array[String]
Dataset columns the test reads.
-
-
steps Array[Object]
βΆ SHOW VALUESRecorded steps of the test. A step whose
typeismodulewraps a reusable module and holds the moduleβs steps in its ownstepsarray.-
id String
Unique identifier of the step.
-
name String
Name of the step, as shown on the dashboard.
-
action String
Action the step performs, for example
openorclick. -
locator String
Locator strategy used to find the element.
nullwhen the step doesnβt target an element. -
position Integer
Position of the step in the test. A module step has no position.
-
timeout_ms Integer
How long the step waits for its element, in milliseconds.
-
failure_condition String
What happens when the step fails, for example
stop. -
is_iframe Boolean
Whether the element is inside an iframe.
-
is_shadow_dom Boolean
Whether the element is inside a shadow DOM.
-
-
versions Array[Object]
βΆ SHOW VALUESPublished versions of the test.
-
version String
Version label.
-
name String
Name of the version.
-
created_at String
When the version was published, as an ISO 8601 timestamp.
-
-
total_steps Integer
Total number of steps, including the steps inside modules.
-
selected_version String
Version label returned in this response.
-
A step whose type is module is a wrapper for a reusable module. It has no position and none of the usual step fields. The moduleβs own steps are nested in its steps array, each with its own position. total_steps counts those nested steps.
Variables of type secret or masked are never included in variables.
List modules
Fetches the modules in a project. This endpoint requires the View tests role permission.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/PR-1/modules?page=1&per_page=50" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
name string
Return only modules whose name matches this value.
-
page integer
Page to fetch. Pages are 1-based. The default is
1. -
per_page integer
Number of records per page. The default is
50and the maximum is100.
Response attributes 200 application/json
Response
{
"modules": [
{
"id": "2aad6349748f3a2e3d6798a101ed337cd268e0cd",
"name": "Accept cookie banner",
"steps_count": 1,
"test_count": 0,
"tests": []
},
{
"id": "5f29aea7fab7bacaff71ca45b7f4de724ccda517",
"name": "Add product to cart",
"steps_count": 3,
"test_count": 1,
"tests": [
{
"id": "ea16a4aee0066eacef9b682e82f67ab16fc4f430",
"name": "Add to cart from product page"
}
]
}
],
"paging": {
"page": 1,
"per_page": 50,
"total": 2,
"total_pages": 1
}
}
-
modules Array[Object]
βΆ SHOW VALUESModules that match the request.
-
id String
Unique identifier of the module.
-
name String
Name of the module.
-
steps_count Integer
Number of steps in the module.
-
test_count Integer
Number of tests that use the module.
-
tests Array[Object]
βΆ SHOW VALUESTests that use the module.
-
id String
Unique identifier.
-
name String
Display name.
-
-
-
paging Object
βΆ SHOW VALUESPagination details of the response.
-
page Integer
Page returned. Pages are 1-based.
-
per_page Integer
Number of records per page.
-
total Integer
Total number of records that match the request. When
best_effortistrue, this is an upper bound. -
total_pages Integer
Total number of pages. When
best_effortistrue, this is an upper bound. -
best_effort Boolean
Returned as
truewhentotalandtotal_pagesare upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying ontotal_pages. Absent when the counts are exact.
-
Response 401 application/json
The access key is missing or invalid.
Response
{
"error": {
"code": "unauthenticated",
"message": "string"
}
}
Response 403 application/json
Your role doesnβt have the View tests permission.
Response
{
"error": {
"code": "forbidden_rbac",
"message": "string"
}
}
Response 404 application/json
The project doesnβt exist, or it belongs to another group.
Response
{
"error": {
"code": "not_found",
"message": "string"
}
}
Response 503 application/json
An upstream dependency is unavailable.
Response
{
"error": {
"code": "dependency_unavailable",
"message": "string"
}
}
Get a module
Fetches a single module, including its steps and the tests that use it. This endpoint requires the View tests role permission.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X GET "https://lcnc-api.browserstack.com/api/v1/public/projects/22530/modules/c0bef6f796b6be972f10aa68dd3f656d34466cc1?version=1" \
-H "accept: application/json"
-
project_id* string
Unique identifier of the project. Use either the integer Project Key, for example
22530, or the Project ID, for examplePR-1. To find both, open your project, click Settings, then General, and look under Project details. -
module_id* string
Unique identifier of the module. To get it, call the List modules endpoint and copy the
idof the module from the response. -
version string
Published version label of the module to fetch. The default is the current version.
Response attributes 200 application/json
Response
{
"module": {
"id": "c0bef6f796b6be972f10aa68dd3f656d34466cc1",
"name": "Login",
"description": null,
"resolution": "1440x900",
"used_in_loop": false,
"used_in_if_else": false,
"used_in_mobile": false,
"contains_if_else": false,
"contains_loop": false,
"ai_interaction_step_count": 0,
"steps": [
{
"id": "0f65b164d9732191410ff0e5c3089a4d99b3f940",
"name": "Click on <strong>\"SIMULATED LOGIN\"</strong> element",
"action": "click",
"locator": "xpath",
"selectors": {
"xpath": "//html/body/div/div[2]/div/div/div/div[2]/div/a[17]/span[1]",
"css_path": "a:nth-of-type(17) > span:nth-of-type(1)",
"tag_name": "SPAN",
"id": "",
"attributes": {
"class": "MuiButton-label"
},
"data_attributes": {},
"overridden_parent": {
"xpath": "//html/body/div/div[2]/div/div/div/div[2]/div/a[17]",
"css_path": "a:nth-of-type(17)",
"tag_name": "A"
}
},
"timeout_ms": 120000,
"failure_condition": "FAIL_AND_STOP",
"tab": {
"identifier": 0,
"switch_focus": false
},
"is_iframe": false,
"is_shadow_dom": false
}
],
"tests": [
{
"id": "78d6b5d1400badd3ada92c57aed086365733c29c",
"name": "Log in and view order history"
}
],
"test_count": 3,
"versions": [
{
"version": "3",
"name": "Add custom action",
"created_at": "2026-05-20T09:12:44Z"
}
],
"selected_version": "1"
}
}
-
module Object
βΆ SHOW VALUESThe module.
-
id String
Unique identifier of the module.
-
name String
Name of the module.
-
description String
Description of the module.
nullwhen not set. -
resolution String
Screen resolution the module was recorded at, in
WIDTHxHEIGHTformat. -
used_in_loop Boolean
Whether a test uses the module inside a loop.
-
used_in_if_else Boolean
Whether a test uses the module inside an if-else block.
-
used_in_mobile Boolean
Whether a mobile test uses the module.
-
contains_if_else Boolean
Whether the module contains an if-else block.
-
contains_loop Boolean
Whether the module contains a loop.
-
ai_interaction_step_count Integer
Number of AI interaction steps in the module.
-
steps Array[Object]
βΆ SHOW VALUESSteps of the module.
-
id String
Unique identifier of the step.
-
name String
Name of the step, as shown on the dashboard.
-
action String
Action the step performs, for example
type_text. -
locator String
Locator strategy used to find the element, for example
xpath. -
selectors Object
βΆ SHOW VALUESSelectors recorded for the element.
-
xpath String
XPath of the element.
nullwhen the step doesnβt target an element. -
css_path String
CSS path of the element.
-
tag_name String
HTML tag of the element.
-
id String
HTML
idattribute of the element. Empty when the element has none. -
attributes Object
HTML attributes of the element, as key-value pairs.
-
data_attributes Object
data-*attributes of the element, as key-value pairs. -
overridden_parent Object
βΆ SHOW VALUESParent element used to find the element.
nullwhen not set.-
xpath String
XPath of the parent element.
-
css_path String
CSS path of the parent element.
-
tag_name String
HTML tag of the parent element.
-
-
-
timeout_ms Integer
How long the step waits for its element, in milliseconds.
-
failure_condition String
What happens when the step fails, for example
FAIL_AND_STOP. -
tab Object
βΆ SHOW VALUESBrowser tab the step runs in.
-
identifier Integer
Index of the browser tab the step runs in.
nullwhen the step doesnβt target a tab. -
switch_focus Boolean
Whether the step switches focus to that tab.
-
-
is_iframe Boolean
Whether the element is inside an iframe.
-
is_shadow_dom Boolean
Whether the element is inside a shadow DOM.
-
-
tests Array[Object]
βΆ SHOW VALUESTests that use the module.
-
id String
Unique identifier.
-
name String
Display name.
-
-
test_count Integer
Number of tests that use the module.
-
versions Array[Object]
βΆ SHOW VALUESPublished versions of the module.
-
version String
Version label.
-
name String
Name of the version.
-
created_at String
When the version was published, as an ISO 8601 timestamp.
-
-
selected_version String
Version label returned in this response.
-
Related topics
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.