{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"e3ff82ac-511f-4d31-acb8-404ce594bb9a","name":"SeaLights Public Api","description":"<img src=\"https://content.pstmn.io/7d7ce812-3ee8-4bf5-9fbd-47317575817b/aW1hZ2UgMzIgKDEpLnBuZw==\" width=\"616\" height=\"383\">\n\n---\n\n**Official Documentation**  \nSeaLights Public API Documentation helps customers consume their data in a flexible way, meaningful to them. This documentation offers details around how to use the SeaLights Public API, as well as a ready-to-use Postman collection.\n\n> Welcome to the Sealights Public API Documentation! This guide is your comprehensive resource for integrating and utilizing our API, designed to enhance your interaction with our platform and analytics capabilities.  \nYou will find detailed instructions on making API calls, managing authentication, and interpreting responses. Our API offers various functionalities, such as managing reports and analytics, accessing agents' metadata (e.g., BSID, LabID), and optimizing your custom testing frameworks.  \nWhether you are a beginner or an experienced developer, this documentation will enable you to maximize the value from Sealights, tailored specifically to your ecosystem.  \nStart exploring today and elevate your projects to the next level! \n  \n\n---\n\n# **🪐 Get Started**\n\nSteps to get started with the SeaLights Public API:\n\n1. **Authorization**: The SeaLights Public API requires an API Key passed as a Bearer Token in the header of your request. _See details in the Authorization section below._\n    \n2. **Access**: You must have at least admin privileges in your organization's SeaLights Web UI to create/manage these tokens.\n    \n\nFor more details, check out the additional sections below. Keep an eye out for in-context documentation within each folder and request in this collection.\n\nThe simplest and fastest way to get started with the SeaLights Public API is to use this collection with Postman. Check out the section \"Using this Postman Collection\" for instructions.\n\n# **🔐 Authorization**\n\nThe SeaLights Public API requires an API Key passed as a Bearer Token in the header of your request.\n\nTwo types of API Key are used in this collection:\n\n1. SeaLights API Token (Required for most of the endpoints)\n    \n2. SeaLights Agent Token (Required only for a few specific endpoints)\n    \n\nYou will only ever need one of these two tokens, depending on the endpoint. We have made this distinction in the documentation for each folder in the collection, and it appears on the documentation for each API call as well. _(Note: if you have imported our SeaLights Public API collection into your Postman account, the correct key is already assigned to each endpoint. See the section \"Using this Postman Collection\" for instructions.)_\n\nBoth of these tokens are managed in the SeaLights Web Application Dashboard. You must have at least admin privileges to create/manage these tokens.\n\n## Getting and Setting your Tokens\n\n### **1\\. SeaLights API Token**\n\nUsed for **most** of the endpoints in the SeaLights Public API\n\n**Get it:**\n\n1. Click on the Settings icon ⚙ at the top right of the SeaLights web application\n    \n2. Click on API Tokens in the left navigation menu  \n    _NOTE:_ If this item isn't part of the menu, you will need to ask an admin to create a token for you.\n    \n3. Click on \"Create New Token\"\n    \n4. Give the token a name\n    \n5. Copy the new token for use in the next step\n    \n\n**Set it:**\n\n- The **SeaLights API Token** has been pre-filled as a collection variable {{SEALIGHTS_API_TOKEN}}. The authorization has been set up at the collection folder level, so all requests in this collection will automatically inherit the needed header.\n    \n\n_See the section \"Using this Postman Collection\" for more details on how we've set up the environment variables for this collection_\n\n### **2\\. SeaLights Agent Token**\n\nUsed for a **select few** of the endpoints in the SeaLights Public API\n\n**Get it:**\n\n1. Click on the Settings icon ⚙ at the top right of the SeaLights web application\n    \n2. Click on Agent Tokens in the left navigation menu  \n    _NOTE:_ If this item isn't part of the menu, you will need to ask an admin to create a token for you.\n    \n3. Click on \"Create New Token\"\n    \n4. Give the token a name\n    \n5. Copy the new token for use in the next step\n    \n\n**Set it:**\n\n- The **SeaLights Agent Token** has been pre-filled as a collection variable {{SEALIGHTS_AGENT_TOKEN}}. The authorization has been set up at the folder level, so all requests in this folders that use this token will automatically inherit the needed header.\n    \n\n_See the section \"Using this Postman Collection\" for more details on how we've set up the environment variables for this collection_\n\nThe SeaLights Public API is a RESTful API.\n\n# ↩ Response Objects\n\n> For additional detail and a full index of Response Objects, go to the collection folder \"Reference Index\" \n  \n\nAll responses that contain a body will be wrapped.\n\nSuccessful responses (`200-299` status codes) will be wrapped in the `data` object.\n\nError responses (`400-599` status codes) will be wrapped in the `error` object.\n\n``` json\n{\n  \"data\": {},\n  \"error\": {}\n}\n\n ```\n\n## Success Response\n\nA successful response has a status code range of 200-299, usually 200 OK. If the response contains data it will be placed in the data object.\n\n### Success Status Codes\n\n| Status Code | Name | Description |\n| --- | --- | --- |\n| 200 | OK | The operation was a success |\n| 201 | CREATED | The `POST`ed object was successfully created |\n| 204 | NO CONTENT | The operation was a success and no further information is needed |\n\n## Error Response\n\nWhenever an error is returned from the API it will be formatted like so:\n\n``` json\n{\n    \"error\": {\n        \"code\": 1002,\n        \"message\": \"Bad request - Missing parameter\"\n    }\n}\n\n ```\n\nThe error response will return a status code, along with a human-readable message signifying the nature of the error\n\n| Attribute | Type | Description |\n| --- | --- | --- |\n| code | number | Internal error code |\n| message | string | Human-readable description of the error |\n\n### Error Status Codes\n\n| Status Code | Name | Description |\n| --- | --- | --- |\n| 400 | BAD REQUEST | The request couldn't be completed because of faulty user input |\n| 401 | UNAUTHORIZED | The supplied token is invalid or lacks API permissions |\n| 404 | NOT FOUND | The requested object could not be found |\n| 409 | Conflict | The request couldn't be completed because of conflicting object states |\n| 429 | TOO MANY REQUESTS | Rate limiting exceeded. See [Rate Limiting](https://) for more information |\n| 500 | INTERNAL SERVER ERROR | Something has gone wrong and it probably isn't your fault! We actively monitor all server errors and are already handling this! |\n\n# ⏱️ Rate Limiting\n\nRate limits are enforced across all endpoints in order to avoid overloading the system. Each endpoint will return helpful headers to help you remain below the threshold.\n\n| Header | Description |\n| --- | --- |\n| `x-ratelimit-limit` | Total number of requests allowed per time frame |\n| `x-ratelimit-remaining` | How many more requests are allowed in the time frame |\n| `x-ratelimit-reset` | The time in epoch seconds (ms \\* 1000) until the limit is reset |\n\nExceeding the throttling limit will result in a `429 Too Many Requests` status code.\n\n# 📑 Pagination\n\nSome endpoints in this API return lists of resources and support pagination. Pagination ensures that the responses are manageable and allows clients to retrieve large sets of data in smaller, more manageable chunks.\n\nPaged endpoints will limit the number of results a single query can return. To facilitate navigation through paginated results, the response will include a next attribute, which provides a link to the next set of results.\n\n## Pagination - Query Parameters\n\n| Parameter | Type | Description | Limitation |\n| --- | --- | --- | --- |\n| offset | number | Number of results to skip (think mySQL `OFFSET`) | Must not be negative. No upper limit. |\n| limit | number | Maximum number of results to return (think mySQL `LIMIT`) | Must be greater than 0. Upper limit described in endpoint. |\n\n## Pagination - The `next` Attribute\n\nPaged requests might contain the attribute `next` in the result. If it exists, you can use it in your next request to get the next page of results. Simply replace `offset` with the value in `next` to get the next page. If `next` is not part of the response, you're at the last page of results.\n\n### Pagination - Example\n\nTo get a list of builds for a certain app and branch, we can use the \"Resolve Builds\" endpoint.\n\nWe can query this endpoint with `offset=0` and `limit=5` to get the first 5 results. This query would look like:\n\n`GET {{SL_DOMAIN}}/sl-api/v1/slim-builds/resolve?appName={{APP_NAME}}&branchName={{BRANCH_NAME}}&periodFrom=1584628060520&offset=0&limit=5`\n\n# ♾️ Enums\n\nComplete list of all SeaLights API request enums.\n\n## TrendReportInterval\n\nWeek refers to a calendar week, from monday to sunday. Month refers to a full calendar month.\n\n| Value | Description |\n| --- | --- |\n| ONE_WEEK | Calculate coverage at weekly intervals |\n| TWO_WEEKS | Calculate coverage at bi-weekly intervals |\n| THREE_WEEKS | Calculate coverage at tri-weekly intervals |\n| FOUR_WEEKS | Calculate coverage at four-weeks intervals |\n| ONE_MONTH | Calcualte coverage at monthly intervals |\n\n## TrendReportDateRange\n\nExcept for CUSTOM, all date ranges are relative to viewing time, not generation time.\n\n| Value | Description |\n| --- | --- |\n| LAST_MONTH | Last month |\n| LAST_TWO_MONTHS | Last two months |\n| LAST_THREE_MONTHS | Last three months |\n| LAST_SIX_MONTHS | Last six months |\n| LAST_YEAR | Last year |\n| CUSTOM | User defined range |\n\n## UpdateTestGroupAction\n\n| Value | Description |\n| --- | --- |\n| Attach | Attach Code Domains to Test Group |\n| Detach | Detach Code Domains from Test Group |\n\n# 💫 Using this Postman Collection\n\n## ℹ️ In-depth Instructions\n\nIn-depth, step-by-step instructions (with screenshots) can be found [here](https://sealights.atlassian.net/wiki/spaces/SUP/pages/3588161549/How+To+Use+the+SeaLights+Public+API+Collection). If you are **not familiar** with using Postman Collections, this is where you should start.\n\nHowever, if you are already comfortable with using Postman and/or Postman Collections, you will probably find the following TL;DR: instructions more than sufficient.\n\n### TL;DR:\n\n1. Use the orange \"Run in Postman\" button (at the top right of this page) to import the SL collection into your own Postman workspace.\n    \n2. Set up the Environment:\n    \n    - Make a copy of the Environment named \"Demo Env\" (included with the collection), give your copy a meaningful name.\n        \n    - Set the first 3 variables:\n        \n        - SL_DOMAIN: This is the domain of your SeaLights instance, WITHOUT a trailing slash (e.g. `https://mycompany.sealights.co`)\n            \n        - SEALIGHTS_API_TOKEN: Found in your SeaLights UI (/settings/tokens/api-tokens).\n            \n            - Click the Gear Icon to access Settings >> From left sidebar: Integration >> API Tokens\n                \n        - SEALIGHTS_AGENT_TOKEN: Found in your SeaLights UI (/settings/tokens/agent-tokens).\n            \n            - Click the Gear Icon to access Settings >> From left sidebar: Cockpit & Onboarding >> Agent Tokens\n                \n3. Work with the Collection:\n    \n    1. Click \"Collections\" From the left sidebar menu in postman to go back to your imported collection.\n        \n    2. Select your new environment from the dropdown at the top right of the Postman window.\n        \n    3. Now while working with the requests in the collection, the vars SL_DOMAIN, SEALIGHTS_API_TOKEN, SEALIGHTS_AGENT_TOKEN will be replaced with the values you set in your environment.\n        \n    4. Each individual request in the collection utilizes a number of query and/or path variables, which can be updated within the request's \"Parameters\" tab. (Note that these values can also be set using variables.) Only params which are \"checked\" will be sent with your request.\n        \n\n<img src=\"https://content.pstmn.io/53af1f8e-c475-453f-bde0-a677438e0743/U2NyZWVuc2hvdCAyMDI0LTA1LTAyIGF0IDE0LjMwLjA3LnBuZw==\">","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":true,"owner":"28625931","team":5995221,"collectionId":"e3ff82ac-511f-4d31-acb8-404ce594bb9a","publishedId":"2s9YypE2wR","public":true,"publicUrl":"https://api-doc.sealights.io","privateUrl":"https://go.postman.co/documentation/28625931-e3ff82ac-511f-4d31-acb8-404ce594bb9a","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"004c97"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":"Tricentis SeaLights Public API "}],"appearance":{"default":"system_default","themes":[{"name":"dark","logo":"https://content.pstmn.io/8f33cdfd-b01a-44ce-8a80-300c871f4310/U0wtVHJpY2VudGlzLWxvZ28tMTI4LnBuZw==","colors":{"top-bar":"ffffff","right-sidebar":"303030","highlight":"027af0"}},{"name":"light","logo":"https://content.pstmn.io/8f33cdfd-b01a-44ce-8a80-300c871f4310/U0wtVHJpY2VudGlzLWxvZ28tMTI4LnBuZw==","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"004c97"}}]}},"version":"8.10.1","publishDate":"2025-05-14T16:05:07.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"Tricentis SeaLights Public API ","description":""},"logos":{"logoLight":"https://content.pstmn.io/8f33cdfd-b01a-44ce-8a80-300c871f4310/U0wtVHJpY2VudGlzLWxvZ28tMTI4LnBuZw==","logoDark":"https://content.pstmn.io/8f33cdfd-b01a-44ce-8a80-300c871f4310/U0wtVHJpY2VudGlzLWxvZ28tMTI4LnBuZw=="}},"statusCode":200},"environments":[{"name":"Demo Env","id":"837f009a-c7b9-46a3-a757-af0101edf8f9","owner":"19078643","values":[{"key":"SL_DOMAIN","value":"https://your-domain.sealights.co","enabled":true,"type":"default"},{"key":"SEALIGHTS_API_TOKEN","value":"123456","enabled":true,"type":"secret"},{"key":"SEALIGHTS_AGENT_TOKEN","value":"123456","enabled":true,"type":"secret"},{"key":"BSID","value":"123456","enabled":false},{"key":"APP_NAME","value":"DemoApp","enabled":false},{"key":"BRANCH_NAME","value":"develop","enabled":false},{"key":"BUILD_TYPE","value":"integration","enabled":false},{"key":"LAB_ID","value":"integ_lab123","enabled":false},{"key":"TEST_STAGE","value":"Manual","enabled":false},{"key":"TEST_GROUP_ID","value":"123456","enabled":false},{"key":"BUILD_NAME","value":"build_001","enabled":false,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/4cf39f69745f556ff428569124efce13386aff3f41bd78d999de25464071ae14","favicon":"https://res.cloudinary.com/postman/image/upload/v1707312192/team/mdrbgfacmk9oa2pkhlwu.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Demo Env","value":"19078643-837f009a-c7b9-46a3-a757-af0101edf8f9"}],"canonicalUrl":"https://api-doc.sealights.io/view/metadata/2s9YypE2wR"}