REST API reference

Spaces and people

Read-mostly reference data. Your token reaches exactly one Space, so these endpoints answer "which Space am I in and who is in it" rather than letting you roam.

List projects

GET/api/v1/projects

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned8

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
projectKeystring | null
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/projects?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "projects",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "externalId": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectKey": "KAN-TC-42",
        "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/projects?page[number]=1",
    "next": "/api/v1/projects?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get a project

GET/api/v1/projects/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned8

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
projectKeystring | null
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/projects/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "projects",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "externalId": "string",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectKey": "KAN-TC-42",
      "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate projects

GET/api/v1/projects/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/projects/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

List organizations

GET/api/v1/organizations

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned4

createdAtdate-time
externalIdstring | null
iduuid
updatedAtdate-time

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/organizations?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "organizations",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "externalId": "string"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/organizations?page[number]=1",
    "next": "/api/v1/organizations?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get an organization

GET/api/v1/organizations/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned4

createdAtdate-time
externalIdstring | null
iduuid
updatedAtdate-time

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/organizations/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "organizations",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "externalId": "string"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate organizations

GET/api/v1/organizations/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/organizations/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

List users

GET/api/v1/users

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned8

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
rolestring
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/users?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "users",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "externalId": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "role": "string",
        "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/users?page[number]=1",
    "next": "/api/v1/users?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get an user

GET/api/v1/users/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned8

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
rolestring
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/users/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "users",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "externalId": "string",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "role": "string",
      "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate users

GET/api/v1/users/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/users/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

List environments

GET/api/v1/environments

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned9

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
namestring
organizationIduuid
projectIduuid
updatedAtdate-time
Show the remaining 1
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/environments?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "environments",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "name": "Checkout rejects an expired card",
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "externalId": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/environments?page[number]=1",
    "next": "/api/v1/environments?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get an environment

GET/api/v1/environments/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned9

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
namestring
organizationIduuid
projectIduuid
updatedAtdate-time
Show the remaining 1
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/environments/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "environments",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "name": "Checkout rejects an expired card",
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "externalId": "string",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate environments

GET/api/v1/environments/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/environments/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

List versions

GET/api/v1/versions

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned8

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
projectIduuid
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/versions?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "versions",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "externalId": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/versions?page[number]=1",
    "next": "/api/v1/versions?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get a version

GET/api/v1/versions/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned8

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
projectIduuid
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/versions/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "versions",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "externalId": "string",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate versions

GET/api/v1/versions/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/versions/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

List fix versions

GET/api/v1/fix_versions

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned9

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
projectIduuid
updatedAtdate-time
updatedByuuid | null
Show the remaining 1
versionNamestring

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/fix_versions?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "fix_versions",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "externalId": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "versionName": "string"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/fix_versions?page[number]=1",
    "next": "/api/v1/fix_versions?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get a fix version

GET/api/v1/fix_versions/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned9

createdAtdate-time
createdByuuid | null
externalIdstring | null
iduuid
organizationIduuid
projectIduuid
updatedAtdate-time
updatedByuuid | null
Show the remaining 1
versionNamestring

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/fix_versions/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "fix_versions",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "externalId": "string",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "versionName": "string"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate fix versions

GET/api/v1/fix_versions/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/fix_versions/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Relationship endpoints

JSON:API exposes each relationship at its own URL. They take the same headers and return the same envelope as everything above, so they are listed rather than documented one by one. In most cases ?include= on the parent request is the better tool: one round trip instead of two.

Show all 36
  • GET/api/v1/projects/{id}/fkProjectsCreatedByUser
  • GET/api/v1/projects/{id}/fkProjectsUpdatedByUser
  • GET/api/v1/projects/{id}/organization
  • GET/api/v1/projects/{id}/relationships/fkProjectsCreatedByUser
  • GET/api/v1/projects/{id}/relationships/fkProjectsUpdatedByUser
  • GET/api/v1/projects/{id}/relationships/organization
  • GET/api/v1/users/{id}/fkUsersCreatedByUser
  • GET/api/v1/users/{id}/fkUsersUpdatedByUser
  • GET/api/v1/users/{id}/organization
  • GET/api/v1/users/{id}/relationships/fkUsersCreatedByUser
  • GET/api/v1/users/{id}/relationships/fkUsersUpdatedByUser
  • GET/api/v1/users/{id}/relationships/organization
  • GET/api/v1/environments/{id}/fkEnvironmentsCreatedByUser
  • GET/api/v1/environments/{id}/fkEnvironmentsUpdatedByUser
  • GET/api/v1/environments/{id}/organization
  • GET/api/v1/environments/{id}/project
  • GET/api/v1/environments/{id}/relationships/fkEnvironmentsCreatedByUser
  • GET/api/v1/environments/{id}/relationships/fkEnvironmentsUpdatedByUser
  • GET/api/v1/environments/{id}/relationships/organization
  • GET/api/v1/environments/{id}/relationships/project
  • GET/api/v1/versions/{id}/fkVersionsCreatedByUser
  • GET/api/v1/versions/{id}/fkVersionsUpdatedByUser
  • GET/api/v1/versions/{id}/organization
  • GET/api/v1/versions/{id}/project
  • GET/api/v1/versions/{id}/relationships/fkVersionsCreatedByUser
  • GET/api/v1/versions/{id}/relationships/fkVersionsUpdatedByUser
  • GET/api/v1/versions/{id}/relationships/organization
  • GET/api/v1/versions/{id}/relationships/project
  • GET/api/v1/fix_versions/{id}/fkFixVersionsCreatedByUser
  • GET/api/v1/fix_versions/{id}/fkFixVersionsUpdatedByUser
  • GET/api/v1/fix_versions/{id}/organization
  • GET/api/v1/fix_versions/{id}/project
  • GET/api/v1/fix_versions/{id}/relationships/fkFixVersionsCreatedByUser
  • GET/api/v1/fix_versions/{id}/relationships/fkFixVersionsUpdatedByUser
  • GET/api/v1/fix_versions/{id}/relationships/organization
  • GET/api/v1/fix_versions/{id}/relationships/project