Skip to main content
Experience faster, smarter testing with BrowserStack AI Agents. See what your workflow’s been missing. Explore now!
No Result Found
Get your setup working faster. Join our Discord for optimisation tips from elite testers. Join our DiscordJoin our Discord

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.

GET /api/v1/public/projects

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 50 and the maximum is 100.

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]

    Projects in your group.

    β–Ά SHOW VALUES
    • 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-xxxx format, for example PR-1. You can use it instead of project_key in any endpoint URL, such as /projects/PR-1/builds.

    • name String

      Name of the project.

  • paging Object

    Pagination details of the response.

    β–Ά SHOW VALUES
    • 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_effort is true, this is an upper bound.

    • total_pages Integer

      Total number of pages. When best_effort is true, this is an upper bound.

    • best_effort Boolean

      Returned as true when total and total_pages are upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying on total_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.

GET /api/v1/public/projects/{project_id}

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 example PR-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

    The project.

    β–Ά SHOW VALUES
    • project_key Integer

      Integer key of the project.

    • project_id String

      Project identifier in the PR-xxxx format.

    • 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.

GET /api/v1/public/projects/{project_id}/suites

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 example PR-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, and tablet. Separate multiple values with a comma.

  • scheduler string

    Return only suites with or without an active schedule. Set to on for scheduled suites and off for 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 50 and the maximum is 100.

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]

    Test suites that match the request.

    β–Ά SHOW VALUES
    • 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. null when not set.

    • device_type String

      Device type the suite is configured for. The possible values are desktop, mobile, and tablet.

    • emulated Boolean

      Whether the suite runs on emulated devices.

    • browsers Array[Object]

      Browsers the suite runs on.

      β–Ά SHOW VALUES
      • browser String

        Browser name, for example Chrome, Firefox, Edge, or Safari.

      • 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

      Schedule status of the suite.

      β–Ά SHOW VALUES
      • 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

    Pagination details of the response.

    β–Ά SHOW VALUES
    • 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_effort is true, this is an upper bound.

    • total_pages Integer

      Total number of pages. When best_effort is true, this is an upper bound.

    • best_effort Boolean

      Returned as true when total and total_pages are upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying on total_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.

GET /api/v1/public/projects/{project_id}/suites/{suite_id}

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 example PR-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

    The test suite.

    β–Ά SHOW VALUES
    • 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. null when not set.

    • environment_id String

      Identifier of the environment the suite runs against. null when 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, and tablet.

    • emulated Boolean

      Whether the suite runs on emulated devices.

    • run_on_real_device Boolean

      Whether the suite runs on real devices.

    • browsers Array[Object]

      Browsers the suite runs on.

      β–Ά SHOW VALUES
      • browser String

        Browser name, for example Chrome, Firefox, Edge, or Safari.

      • 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

      Schedule of the suite.

      β–Ά SHOW VALUES
      • 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:MM format.

      • timezone String

        Time zone of the schedule. null when not set.

      • cron String

        Cron expression equivalent to the schedule.

    • auto_rerun Boolean

      Whether failed tests rerun automatically.

    • execution Object

      Order in which the suite runs its tests.

      β–Ά SHOW VALUES
      • order Array[Object]

        Execution blocks, in the order they run.

        β–Ά SHOW VALUES
        • 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 example test.

        • executionConditions Object

          Conditions that control whether the block runs. null when none are set.

      • browser_args Array[String]

        Browser arguments passed at launch. null when none are set.

    • accessibility Object

      Accessibility testing settings. null when accessibility testing is turned off.

    • geolocation_codes Array[String]

      IP geolocation codes the suite runs from. Empty when not set.

    • local_testing Object

      Local Testing settings of the suite.

      β–Ά SHOW VALUES
      • enabled Boolean

        Whether Local Testing is turned on.

      • local_identifier String

        Local identifier used to route traffic through the Local connection. null when not set.

    • notifications Object

      Notification settings of the suite.

      β–Ά SHOW VALUES
      • 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]

        Users who receive the email notifications.

        β–Ά SHOW VALUES
        • 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]

      Tests in the suite.

      β–Ά SHOW VALUES
      • 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.

GET /api/v1/public/projects/{project_id}/folders

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 example PR-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 50 and the maximum is 100.

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]

    Folders that match the request.

    β–Ά SHOW VALUES
    • id Integer

      Unique identifier of the folder.

    • name String

      Name of the folder.

    • description String

      Description of the folder. null when not set.

    • identifier String

      Display identifier of the folder, for example FD-5126. null when not set.

    • parent_id Integer

      Identifier of the parent folder. null for a root folder.

    • test_recording_count Integer

      Number of tests in the folder.

    • sub_folder_count Integer

      Number of sub-folders. null when not calculated.

    • created_by String

      Name of the user who created the folder.

  • paging Object

    Pagination details of the response.

    β–Ά SHOW VALUES
    • 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_effort is true, this is an upper bound.

    • total_pages Integer

      Total number of pages. When best_effort is true, this is an upper bound.

    • best_effort Boolean

      Returned as true when total and total_pages are upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying on total_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.

GET /api/v1/public/projects/{project_id}/folders/{folder_id}

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 example PR-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 id of 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 50 and the maximum is 100.

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

    The folder.

    β–Ά SHOW VALUES
    • 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. null when not set.

  • folders Array[Object]

    Sub-folders of the folder. Empty when there are none.

    β–Ά SHOW VALUES
    • id Integer

      Unique identifier of the folder.

    • name String

      Name of the folder.

    • description String

      Description of the folder. null when not set.

    • identifier String

      Display identifier of the folder, for example FD-5126. null when not set.

    • parent_id Integer

      Identifier of the parent folder. null for a root folder.

    • test_recording_count Integer

      Number of tests in the folder.

    • sub_folder_count Integer

      Number of sub-folders. null when not calculated.

    • created_by String

      Name of the user who created the folder.

  • tests Array[Object]

    Tests in the folder.

    β–Ά SHOW VALUES
    • id String

      Unique identifier.

    • name String

      Display name.

  • paging Object

    Pagination details of the response.

    β–Ά SHOW VALUES
    • 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_effort is true, this is an upper bound.

    • total_pages Integer

      Total number of pages. When best_effort is true, this is an upper bound.

    • best_effort Boolean

      Returned as true when total and total_pages are upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying on total_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.

GET /api/v1/public/projects/{project_id}/tests

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 example PR-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 desktop and mobile.

  • last_run_status string

    Return only tests whose latest cloud run ended in one of these statuses. Separate multiple values with a comma.

  • 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 root for 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 50 and the maximum is 100.

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]

    Tests that match the request.

    β–Ά SHOW VALUES
    • 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

      Browser and device configuration of the test.

      β–Ά SHOW VALUES
      • 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

        Screen resolution of the test.

        β–Ά SHOW VALUES
        • width Integer

          Screen width in pixels.

        • height Integer

          Screen height in pixels.

    • last_run_status String

      Status of the latest cloud run, for example passed or failed.

    • 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]

      Test cases in test case management tools that the test is linked to.

      β–Ά SHOW VALUES
      • 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

    Pagination details of the response.

    β–Ά SHOW VALUES
    • 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_effort is true, this is an upper bound.

    • total_pages Integer

      Total number of pages. When best_effort is true, this is an upper bound.

    • best_effort Boolean

      Returned as true when total and total_pages are upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying on total_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.

GET /api/v1/public/projects/{project_id}/tests/{test_id}

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 example PR-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 id of 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 400 response.

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

    The test.

    β–Ά SHOW VALUES
    • 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

      Browser and device configuration of the test.

      β–Ά SHOW VALUES
      • browser String

        Browser the test is configured for.

      • os String

        Operating system the test is configured for.

      • viewport String

        Viewport size, in WIDTHxHEIGHT format.

      • locale String

        Browser locale, for example en-US.

      • advanced_options Object

        Advanced browser settings of the test.

        β–Ά SHOW VALUES
        • 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]

      Test cases in test case management tools that the test is linked to.

      β–Ά SHOW VALUES
      • 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

      Test suites that contain the test.

      β–Ά SHOW VALUES
      • 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]

      Variables the test uses.

      β–Ά SHOW VALUES
      • 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

      Dataset the test reads from. null when the test doesn’t use a dataset.

      β–Ά SHOW VALUES
      • 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]

      Recorded steps of the test. A step whose type is module wraps a reusable module and holds the module’s steps in its own steps array.

      β–Ά SHOW VALUES
      • 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 open or click.

      • locator String

        Locator strategy used to find the element. null when 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]

      Published versions of the test.

      β–Ά SHOW VALUES
      • 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.

GET /api/v1/public/projects/{project_id}/modules

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 example PR-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 50 and the maximum is 100.

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]

    Modules that match the request.

    β–Ά SHOW VALUES
    • 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]

      Tests that use the module.

      β–Ά SHOW VALUES
      • id String

        Unique identifier.

      • name String

        Display name.

  • paging Object

    Pagination details of the response.

    β–Ά SHOW VALUES
    • 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_effort is true, this is an upper bound.

    • total_pages Integer

      Total number of pages. When best_effort is true, this is an upper bound.

    • best_effort Boolean

      Returned as true when total and total_pages are upper bounds rather than exact counts. When you see it, page through the results until you receive an empty list instead of relying on total_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.

GET /api/v1/public/projects/{project_id}/modules/{module_id}

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 example PR-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 id of 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

    The module.

    β–Ά SHOW VALUES
    • id String

      Unique identifier of the module.

    • name String

      Name of the module.

    • description String

      Description of the module. null when not set.

    • resolution String

      Screen resolution the module was recorded at, in WIDTHxHEIGHT format.

    • 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]

      Steps of the module.

      β–Ά SHOW VALUES
      • 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

        Selectors recorded for the element.

        β–Ά SHOW VALUES
        • xpath String

          XPath of the element. null when 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 id attribute 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

          Parent element used to find the element. null when not set.

          β–Ά SHOW VALUES
          • 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

        Browser tab the step runs in.

        β–Ά SHOW VALUES
        • identifier Integer

          Index of the browser tab the step runs in. null when 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]

      Tests that use the module.

      β–Ά SHOW VALUES
      • id String

        Unique identifier.

      • name String

        Display name.

    • test_count Integer

      Number of tests that use the module.

    • versions Array[Object]

      Published versions of the module.

      β–Ά SHOW VALUES
      • 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.

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.

We're continuously improving our docs. We'd love to know what you liked





Thank you for your valuable feedback

Download Copy Check Circle