REST API reference
The BesTest REST API
Read and write the same requirements, test cases, cycles, executions and coverage your team works with in Jira, from a script, a pipeline or your own tooling. This page is the reference. If you are setting up for the first time, start with the REST API guide.
Authentication
Every request carries a bearer token. You create tokens yourself in BesTest, under API & MCP tokens in the app menu. A token reaches exactly one Space, at either read-only or read-and-write, and always has an expiry date.
required headers
-H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE"
-H "Accept: application/vnd.api+json"The Accept header is not optional. This API is strict JSON:API, so a request asking for application/json is answered with 406 Not Acceptable. The same media type goes in Content-Type on any request that has a body.
Base URLs
BesTest runs independent servers in three regions and your data lives in exactly one of them. A token minted in one region does not work against another, so if a correct-looking token returns 403, check this first.
| Region | Base URL |
|---|---|
| Europe | https://prod-eu.getbestest.com/api/v1 |
| North America | https://prod-us.getbestest.com/api/v1 |
| India | https://prod-in.getbestest.com/api/v1 |
Examples throughout this reference use the Europe host. Swap it for yours.
Filtering, sorting and paging
Every collection endpoint takes the same query parameters. Filtering uses FiltrQL, a readable text expression rather than a nest of bracketed parameters.
query string
# One condition
?filter=status = 'PASSED'
# Combined, and url-encoded in practice
?filter=status = 'FAILED' AND executedAt > now-7d
# Across a relationship, with paging and sorting
?filter=requirement.significance >= 3&sort=-createdAt&page[size]=50sorttakes a comma-separated field list; prefix with a minus for descending.page[number]andpage[size]page the results. The default page is 25 and the maximum is 100.includeside-loads related resources into one response instead of costing you a second request.fields[type]returns only the attributes you name, which matters on the wider entities.
For the complete operator list as your deployment currently supports it, call GET /api/v1/filter-reference. It returns every operator with its aliases and examples, so a client can build filters without hard-coding a dialect.
Permissions and limits
- A token never sees more than its owner does, and only inside the one Space it was created for.
- A read-only token is refused on every write with 403.
- Rate limit is 100 requests a minute per token, shared with MCP. Over it you get 429.
- Writes are attributed to the token owner, so history still shows a person.
Resources
Pick a group to see its endpoints, parameters and examples.
Requirements
13What the product is supposed to do, and how well it is covered.
Test cases
19Test cases, their steps, and the folders that organise them.
Test cycles
13Planned runs of a set of test cases, and their folders.
Executions
12Results: what was run, when, by whom, and how it went.
Test collections
34Reusable groupings of test cases, static or rule-driven.
Test campaigns
25Multi-cycle programmes of work, grouped for reporting.
Links and traceability
12The relationships between requirements, test cases and Jira work items.
Review and approval
15Review requests, reviewer assignments and outcomes.
Custom fields
7Your own fields on requirements, test cases, cycles and executions.
Spaces and people
18Spaces, organisations, users, environments and versions.
Comments
12Discussion threads on testing objects, and their @mentions.
Notifications
12What the app told people, and their delivery preferences.
Saved filters
6Stored filter definitions shared across the Space.
API tokens
4Read and revoke the tokens that reach this Space.
Actions
19Domain operations that do more than write one row.
Schema discovery
2Ask the API what it can do, for the token you hold.
