Raise an issue
/api/v1/issuesKey role tester or aboveRaise an issue against a check. This is what a support integration does when a customer reports a bug: the check fails on the platforms you name, in front of everyone working the release, until the fix is in and confirmed.
Body
appstringrequired- App id or name.
checkstringrequired- The check's ref (
AUTH-01), its id, or its exact title. Optional on an app in live (bug-tracking) mode, where an issue can sit on a section or on nothing. sectionstring- Section id, ref or title. With a check: needed only when a title matches checks in more than one section — otherwise the answer is
409 ambiguous_check. Without one, on a live app: the section the issue belongs to. prioritystring- Live apps only:
urgent,high,mediumorlow. textstringrequired- What went wrong, up to 4,000 characters. Include the exact error text when there is one.
platformsstring[]- Platform codes affected, e.g.
["WL", "IOS"]. Leave out for every platform. An unknown code answers400. reporterobject- The person outside your team who reported it:
name(required) andemail. Stored with the issue; the runbook shows Ada Lovelace via API.
curl -X POST "https://qarunbook.com/api/v1/issues" \
-H "Authorization: Bearer $QARUNBOOK_KEY" \
-H "Content-Type: application/json" \
-d '{
"app": "Checkout",
"check": "AUTH-01",
"text": "The Sign in button does nothing on Safari 18. No error, no network request.",
"platforms": ["WL"],
"reporter": {
"name": "Ada Lovelace",
"email": "ada@example.com"
}
}'{
"data": {
"id": "mfr8w1c4d2e",
"app": {
"id": "mfq3k2p9x1a",
"name": "Checkout"
},
"check": {
"id": "mfq3k2qa7bc",
"ref": "AUTH-01",
"title": "Sign in with email and password"
},
"text": "The Sign in button does nothing on Safari 18. No error, no network request.",
"platforms": ["WL"],
"all_platforms": false,
"status": "open",
"raised_by": "Ada Lovelace via API",
"raised_at": "2026-09-27T16:02:11.482Z",
"reporter": {
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"via": "api",
"edited_by": null,
"edited_at": null,
"fixed_by": null,
"fixed_at": null,
"attachments": []
}
}Issue fields
idstring- The issue's id.
checkobject- The check it is raised against —
id,ref,title. platformsstring[]- The platforms it affects. Empty means every platform, which
all_platformsalso says. statusstringopenorfixed.raised_bystring- The name the runbook shows. For an issue raised through the API,
<reporter> via API, or the key's name. reporterobject | null- The external reporter sent when it was raised —
nameand, if given,email. viastring | null- Where it was raised.
apifor issues raised here. section_idstring | null- Live apps: the section an issue with no check belongs to, if any.
checkisnullfor such an issue. prioritystring | null- Live apps:
urgent,high,mediumorlow. assigneesstring[]- Live apps: the names of the people on it.
confirmed_fixed_bystring | null- Live apps: who checked the fix and confirmed it holds — the retest for an issue with no check.
confirmed_fixed_atstring | null- When they did.
attachmentsobject[]- Screenshots and recordings attached in the app, by
nameandkind. Open the issue in qarunbook to view them.
List issues
/api/v1/issuesKey role viewer or aboveNewest first. Paged — see Pagination.
Query parameters
appstring- App id or name. Leave out for every app this key can reach.
checkstring- Only issues on this check — its id, or its ref together with
app. statusstringopen(default),fixedorall.sortstringraised_at(default) orfixed_at— most recently fixed first, for watching fixes land. Fixed issues only: it impliesstatus=fixed, and any other status answers400.limitinteger- 1–200, default 50.
cursorstring- From the previous page's
next_cursor.
curl "https://qarunbook.com/api/v1/issues?app=Checkout&status=open" \
-H "Authorization: Bearer $QARUNBOOK_KEY"{
"data": [
{
"id": "mfr8w1c4d2e",
"app": {
"id": "mfq3k2p9x1a",
"name": "Checkout"
},
"check": {
"id": "mfq3k2qa7bc",
"ref": "AUTH-01",
"title": "Sign in with email and password"
},
"text": "The Sign in button does nothing on Safari 18. No error, no network request.",
"platforms": ["WL"],
"all_platforms": false,
"status": "open",
"raised_by": "Ada Lovelace via API",
"raised_at": "2026-09-27T16:02:11.482Z",
"reporter": {
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"via": "api",
"edited_by": null,
"edited_at": null,
"fixed_by": null,
"fixed_at": null,
"attachments": []
}
],
"next_cursor": null
}Get an issue
/api/v1/issues/:idKey role viewer or abovecurl "https://qarunbook.com/api/v1/issues/mfr8w1c4d2e" \
-H "Authorization: Bearer $QARUNBOOK_KEY"{
"data": {
"id": "mfr8w1c4d2e",
"app": {
"id": "mfq3k2p9x1a",
"name": "Checkout"
},
"check": {
"id": "mfq3k2qa7bc",
"ref": "AUTH-01",
"title": "Sign in with email and password"
},
"text": "The Sign in button does nothing on Safari 18. No error, no network request.",
"platforms": ["WL"],
"all_platforms": false,
"status": "open",
"raised_by": "Ada Lovelace via API",
"raised_at": "2026-09-27T16:02:11.482Z",
"reporter": {
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"via": "api",
"edited_by": null,
"edited_at": null,
"fixed_by": null,
"fixed_at": null,
"attachments": []
}
}Update an issue
/api/v1/issues/:idKey role tester or aboveReword an issue, or change the platforms it affects. The original reporter stays on it; the key is recorded as the editor, and the wording it replaced is kept in the issue's history in the app.
Body — at least one
textstring- The new wording.
platformsstring[]- Replaces the list. Send
[]for every platform.
curl -X PATCH "https://qarunbook.com/api/v1/issues/mfr8w1c4d2e" \
-H "Authorization: Bearer $QARUNBOOK_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["WL", "WM"]
}'{
"data": {
"id": "mfr8w1c4d2e",
"app": {
"id": "mfq3k2p9x1a",
"name": "Checkout"
},
"check": {
"id": "mfq3k2qa7bc",
"ref": "AUTH-01",
"title": "Sign in with email and password"
},
"text": "The Sign in button does nothing on Safari 18. No error, no network request.",
"platforms": ["WL", "WM"],
"all_platforms": false,
"status": "open",
"raised_by": "Ada Lovelace via API",
"raised_at": "2026-09-27T16:02:11.482Z",
"reporter": {
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"via": "api",
"edited_by": "Zendesk via API",
"edited_at": "2026-09-27T16:20:05.113Z",
"fixed_by": null,
"fixed_at": null,
"attachments": []
}
}Mark fixed or reopen
/api/v1/issues/:id/fixKey role adminMark an issue fixed — with no body, or { "fixed": true }. Send { "fixed": false } to reopen it, which fails the check again on the platforms it affects.
curl -X POST "https://qarunbook.com/api/v1/issues/mfr8w1c4d2e/fix" \
-H "Authorization: Bearer $QARUNBOOK_KEY"{
"data": {
"id": "mfr8w1c4d2e",
"app": {
"id": "mfq3k2p9x1a",
"name": "Checkout"
},
"check": {
"id": "mfq3k2qa7bc",
"ref": "AUTH-01",
"title": "Sign in with email and password"
},
"text": "The Sign in button does nothing on Safari 18. No error, no network request.",
"platforms": ["WL"],
"all_platforms": false,
"status": "fixed",
"raised_by": "Ada Lovelace via API",
"raised_at": "2026-09-27T16:02:11.482Z",
"reporter": {
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"via": "api",
"edited_by": null,
"edited_at": null,
"fixed_by": "Release bot via API",
"fixed_at": "2026-09-28T08:00:12.904Z",
"attachments": []
}
}Fixed is not passed
The platforms it affected now read retest. They go back to passed only when somebody — a tester, or your CI through Results — records a result after the fix.