QA scenarios, test cases, and session API
Automate test-suite setup, start review sessions, record passed or failed cases, create linked bugs, and finish QA runs.
Before you begin
Use https://tasker.fit/api as the REST base URL. Create an active integration token in Profile → API Tokens, and send Authorization: Bearer <your-api-token>. Replace all example IDs with values returned for your account.
Planning your workflow
QA requests carry company_id and board_id in query parameters. Scenario and case creation send their resource fields in JSON. A case's creation field is scenario, while list filtering uses scenario_id. Parent scenarios use parent_id to organize the hierarchy. Starting a session includes descendant cases and requires a column of the todo workflow kind.
Session results belong to case-report records. Update them by case_report_id with a status of pending, done, or bug. For a bug, supply actual_result, severity, and priority to create or update the linked task. Finish takes sessions_id in JSON, despite the singular session entity; use this exact spelling. Existing case reports are returned within each session's case_reports array.
Example
Automate test-suite setup, start review sessions, record passed or failed cases, create linked bugs, and finish QA runs.
Step-by-step tutorials / 1
Integration workflow
Create a scenario, then create its cases with scenario set to the returned numeric scenario ID.
Start a session and retain its ID and the IDs of its case_reports. Record the outcome of each check.
Report failures with the actual behavior, severity, and priority. Finish only after all cases have been reviewed.
What to expect: Read the returned data object and keep the resource identifiers for subsequent requests. Check the HTTP status before treating a write operation as successful.
Endpoints and request examples
Replace example identifiers, tokens, and dates with your own values. Each example shows fields for a specific operation, rather than a complete response schema.
| Method | Path | Operation |
|---|---|---|
| GET | /features/qa/scenarios/list/ | List scenarios |
| POST | /features/qa/scenarios/list/ | Create a scenario |
| GET | /features/qa/scenarios/ | Read a scenario |
| PATCH | /features/qa/scenarios/ | Rename a scenario |
| DELETE | /features/qa/scenarios/ | Delete a scenario and dependent QA data |
| GET | /features/qa/cases/list/ | List test cases |
| POST | /features/qa/cases/list/ | Create a test case |
| GET | /features/qa/cases/ | Read a test case |
| PATCH | /features/qa/cases/ | Update test instructions |
| DELETE | /features/qa/cases/ | Delete a test case |
| GET | /features/qa/sessions/ | List active sessions |
| POST | /features/qa/sessions/start/ | Start a session |
| PATCH | /features/qa/sessions/cases/ | Mark a case as passed |
| PATCH | /features/qa/sessions/cases/ | Report a failed case |
| PATCH | /features/qa/sessions/finish/ | Finish a reviewed session |
/api/features/qa/scenarios/list/List scenarios
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE"
}Additional fields: parent_id, page, limit, q
cURL example
curl --request GET 'https://tasker.fit/api/features/qa/scenarios/list/?company_id=demo&board_id=RELEASE' \
--header 'Authorization: Bearer <your-api-token>'/api/features/qa/scenarios/list/Create a scenario
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE"
}JSON request body (example)
{
"title": "Checkout",
"parent_id": null
}Additional fields: position
cURL example
curl --request POST 'https://tasker.fit/api/features/qa/scenarios/list/?company_id=demo&board_id=RELEASE' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"title": "Checkout",
"parent_id": null
}'/api/features/qa/scenarios/Read a scenario
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"scenario_id": 1
}cURL example
curl --request GET 'https://tasker.fit/api/features/qa/scenarios/?company_id=demo&board_id=RELEASE&scenario_id=1' \
--header 'Authorization: Bearer <your-api-token>'/api/features/qa/scenarios/Rename a scenario
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"scenario_id": 1
}JSON request body (example)
{
"title": "Checkout regression"
}Additional fields: position
cURL example
curl --request PATCH 'https://tasker.fit/api/features/qa/scenarios/?company_id=demo&board_id=RELEASE&scenario_id=1' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"title": "Checkout regression"
}'/api/features/qa/scenarios/Delete a scenario and dependent QA data
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"scenario_id": 1
}cURL example
curl --request DELETE 'https://tasker.fit/api/features/qa/scenarios/?company_id=demo&board_id=RELEASE&scenario_id=1' \
--header 'Authorization: Bearer <your-api-token>'/api/features/qa/cases/list/List test cases
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"scenario_id": 1
}cURL example
curl --request GET 'https://tasker.fit/api/features/qa/cases/list/?company_id=demo&board_id=RELEASE&scenario_id=1' \
--header 'Authorization: Bearer <your-api-token>'/api/features/qa/cases/list/Create a test case
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE"
}JSON request body (example)
{
"scenario": 1,
"title": "Reject expired card",
"description": "Verify payment validation",
"steps_to_reproduce": "Submit an expired test card",
"expected_result": "Payment is rejected"
}cURL example
curl --request POST 'https://tasker.fit/api/features/qa/cases/list/?company_id=demo&board_id=RELEASE' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"scenario": 1,
"title": "Reject expired card",
"description": "Verify payment validation",
"steps_to_reproduce": "Submit an expired test card",
"expected_result": "Payment is rejected"
}'/api/features/qa/cases/Read a test case
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"case_id": 2
}cURL example
curl --request GET 'https://tasker.fit/api/features/qa/cases/?company_id=demo&board_id=RELEASE&case_id=2' \
--header 'Authorization: Bearer <your-api-token>'/api/features/qa/cases/Update test instructions
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"case_id": 2
}JSON request body (example)
{
"expected_result": "A clear validation message appears"
}Additional fields: title, description, steps_to_reproduce
cURL example
curl --request PATCH 'https://tasker.fit/api/features/qa/cases/?company_id=demo&board_id=RELEASE&case_id=2' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"expected_result": "A clear validation message appears"
}'/api/features/qa/cases/Delete a test case
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"case_id": 2
}cURL example
curl --request DELETE 'https://tasker.fit/api/features/qa/cases/?company_id=demo&board_id=RELEASE&case_id=2' \
--header 'Authorization: Bearer <your-api-token>'/api/features/qa/sessions/List active sessions
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"is_active": true
}Additional fields: page, limit, q
cURL example
curl --request GET 'https://tasker.fit/api/features/qa/sessions/?company_id=demo&board_id=RELEASE&is_active=true' \
--header 'Authorization: Bearer <your-api-token>'/api/features/qa/sessions/start/Start a session
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE"
}JSON request body (example)
{
"scenario_id": 1
}cURL example
curl --request POST 'https://tasker.fit/api/features/qa/sessions/start/?company_id=demo&board_id=RELEASE' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"scenario_id": 1
}'/api/features/qa/sessions/cases/Mark a case as passed
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"case_report_id": 3
}JSON request body (example)
{
"status": "done"
}cURL example
curl --request PATCH 'https://tasker.fit/api/features/qa/sessions/cases/?company_id=demo&board_id=RELEASE&case_report_id=3' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"status": "done"
}'/api/features/qa/sessions/cases/Report a failed case
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE",
"case_report_id": 3
}JSON request body (example)
{
"status": "bug",
"actual_result": "Payment succeeds",
"severity": "major",
"priority": "high"
}cURL example
curl --request PATCH 'https://tasker.fit/api/features/qa/sessions/cases/?company_id=demo&board_id=RELEASE&case_report_id=3' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"status": "bug",
"actual_result": "Payment succeeds",
"severity": "major",
"priority": "high"
}'/api/features/qa/sessions/finish/Finish a reviewed session
Authentication and permission for this operation are required.
URL query parameters (example)
{
"company_id": "demo",
"board_id": "RELEASE"
}JSON request body (example)
{
"sessions_id": 2
}cURL example
curl --request PATCH 'https://tasker.fit/api/features/qa/sessions/finish/?company_id=demo&board_id=RELEASE' \
--header 'Authorization: Bearer <your-api-token>' \
--header 'Content-Type: application/json' \
--data '{
"sessions_id": 2
}'Tips & troubleshooting
- Examples show the key request fields, not every optional field or a full response schema. Query fields belong in the URL; JSON body fields belong in the request body. Keep trailing slashes on endpoint paths.
- Finished sessions are read-only in the web frontend. The API permission and validation rules remain authoritative for writes. A Bug outcome counts as reviewed; finishing does not itself resolve the linked defect.
Frequently asked questions
Can these examples be used with any account?
Only resources accessible to the token's account can be read or changed. Use returned company, board, task, and numeric resource IDs; the examples' demo values are placeholders.
What should an integration do when a request fails?
Check the HTTP status and returned error payload. Validate identifiers and required fields, then check token activity, expiry, and permissions. Do not blindly repeat a POST: a previous attempt may already have created a resource.