Search issues
search_issuesSearch issues.
Returns summaries (with each issue's version and sprint). Filters combine with AND; array filters are OR within the filter. assignee=me for your issues. Paginated with cursor/next_cursor. sprint: a sprint id (S-3) for one sprint, backlog for issues in no sprint, or active for issues in ANY active sprint — a project can run several sprints at once, so when the user means one of them, call list_sprints (state=active) and filter by that sprint's id; read each result's sprint to tell them apart. priority: one or more of highest, high, medium, low, lowest (issues without one count as medium); order=priority sorts highest first, then by rank. release (D113): a release id (R-3) for the issues that ship in it — epic children included — or none; each result's in_release is the release it ships in. severity: critical, high, medium, low (bugs). Templates (spec D129/D130): flag filters by the flags board-core computes from the custom fields and today (Asia/Bangkok) — never stored, so never guess them from status. Sales & Billing: overdue = invoiced installment, unpaid, past due_on; due_soon = invoiced, unpaid, due within due_soon_days; bill_due = installment to invoice now (bill_on reached, not invoiced); awaiting_signature = deal in Sent for ≥ awaiting_sign_days; all_paid = deal fully collected but not Closed yet. Service desk: sla_soon (SLA due within a day), sla_over (past SLA; neither in Waiting / done). Budget planning: over_budget (actual > planned), spent_warn (≥ spent_warn_pct % spent). Several flags = OR. Installments are type: subtask with parent = the deal: "which deals are unpaid / ดีลไหนค้างชำระ" → flag: ["overdue"] (each result's parent is the deal; name the customer from the deal's fields.customer); every installment not yet paid → type: ["subtask"] + fields: '[{"id":"paid_at","op":"empty"}]'. fields is a JSON STRING of [{id, op, value}] — ops eq, ne, lt, lte, gt, gte, between (value = array of two), in (array), empty, not_empty (no value); today for date fields, me for person fields — e.g. '[{"id":"due_on","op":"between","value":["2026-10-06","2026-10-12"]},{"id":"paid_at","op":"empty"}]'; all conditions must hold; field ids come from get_project fields (unknown → 400 unknown_field). sort_field (+ sort_dir asc | desc) sorts by a custom field, issues without a value last. Each result carries fields, flags, computed (formula and rollup values) and, for a deal, children (count, done, amount_total, paid_total, paid_count). Roadmap & Goals (spec D131): on_track / at_risk / off_track are computed from a goal's start, end and rollup progress — off_track = past end and progress < 100, at_risk = elapsed % of start→end minus progress % > 25 (before end), on_track = the rest; none for done goals or goals without dates. "เป้าหมาย Q4 ไหนล่าช้า / which Q4 goals are late?" → flag: ["off_track"] + fields: '[{"id":"quarter","op":"eq","value":"Q4"}]' (read computed.progress and fields.owner to answer). linked_to = an issue key of ANY project of the company or a release KEY/R-n: the issues of this project that link to it ("what depends on KJ-120 / what delivers release R-3?"). Results do not resolve their links — get_issue does (linked[]).
You act with exactly the rights of the user who owns this token; a project you cannot see returns not_found.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| flag | No | One or more computed template flags (spec D130 (3), D129 (10)): e.g. `overdue` = invoiced, unpaid installments past due_on; `bill_due` = installments to invoice today; `awaiting_signature` = deals waiting for the customer; `sla_over` = requests past their SLA; `over_budget`. Flags are computed from the issue's custom fields and today (Asia/Bangkok), never stored. | |
| text | No | Text search over the title, the body and the issue key — whole or in part (e.g. BMTK-3, bmtk); an exact key comes first. | |
| type | No | ||
| label | No | ||
| limit | No | ||
| order | No | `rank` = board/backlog order (manual order, issues without a rank last); `updated` = newest change first; `priority` = highest first, then rank (D89). | rank |
| cursor | No | Opaque cursor from the previous page's `next_cursor`. | |
| fields | No | Custom-field conditions (spec D129 (6)) as a JSON array of `{id, op, value}` (`fieldFilter`), e.g. `[{"id":"due_on","op":"lt","value":"today"},{"id":"paid_at","op":"empty"}]`. Unknown field id → 400 `unknown_field`; a value that does not fit the field type → 400 `invalid_field_value`. All conditions must hold. | |
| parent | No | Issue key `{PROJECT}-{n}`, e.g. `KJ-101`. | |
| sprint | No | Sprint id, or `backlog` for issues in no sprint, or `active`. | |
| status | No | ||
| release | No | Release id (D113) — the issues in it, epic children included (their own `release` null) — or `none` for issues in no release. Projects with releases off → 403 feature_disabled. | |
| assignee | No | User id, or `none` for unassigned, or `me`. | |
| priority | No | One or more priorities (D89); issues without the key count as medium. | |
| severity | No | One or more bug severities (D113). | |
| sort_dir | No | asc | |
| linked_to | No | Issues of this project that link to the given target (spec D131 (1)): an issue key of any project of the company or a release `KEY/R-n`. | |
| done_since | No | Leave out finished work older than this (S100, PO 2026-09-30): issues in a done-category status whose `done_at` (or `updated_at` when the file has no `done_at`) is before this timestamp are not returned, and `omitted_done` says how many were left out. The board sends the start of the current week (Monday 00:00 Asia/Bangkok). Other statuses are unaffected. Omit it to get every issue. | |
| sort_field | No | Sort by a custom field (spec D129 (4), (6)) instead of `order`: date / number / money fields sort by value, text by text; issues without the value come last. | |
| project_key | Yes | Project key, e.g. `KJ`. 2–10 chars, uppercase letters and digits, starts with a letter. |