Schema discovery
These two endpoints are how a client adapts to your Space without hard-coding anything. They are projected per caller, so they describe only what your token can actually reach.
List schema
GET
/api/v1/schemaQuery 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-7dsortstring- Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,namepage[number]integer- Which page to return, starting at 1.
2page[size]integer- Results per page. Defaults to 25, and the maximum is 100.
50includestring- Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folderfields[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_HEREAcceptstringrequired- 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/schema?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": "schema",
"id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
"attributes": {}
}
],
"meta": {
"totalCount": 128
},
"links": {
"first": "/api/v1/schema?page[number]=1",
"next": "/api/v1/schema?page[number]=2"
}
}Show an error response
Error
any 4xx
{
"errors": [
{
"status": "403",
"title": "Forbidden",
"code": "FORBIDDEN",
"detail": "Access denied.",
"source": {
"pointer": "/data"
}
}
]
}List filter-reference
GET
/api/v1/filter-referenceQuery 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-7dsortstring- Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,namepage[number]integer- Which page to return, starting at 1.
2page[size]integer- Results per page. Defaults to 25, and the maximum is 100.
50includestring- Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folderfields[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_HEREAcceptstringrequired- 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/filter-reference?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": "filter-reference",
"id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
"attributes": {}
}
],
"meta": {
"totalCount": 128
},
"links": {
"first": "/api/v1/filter-reference?page[number]=1",
"next": "/api/v1/filter-reference?page[number]=2"
}
}Show an error response
Error
any 4xx
{
"errors": [
{
"status": "403",
"title": "Forbidden",
"code": "FORBIDDEN",
"detail": "Access denied.",
"source": {
"pointer": "/data"
}
}
]
}