Skip to content

An issue: its description, labels and acceptance checks, its comments, and every pull request made against it with its status.

GET/repos/{owner}/{name}/issues/{number}

If the issue is closed, resolvedBy is the number of the pull request that was merged for it. Read this before opening a pull request, to see what others have already tried.

A closed issue says how it was closed: reason is completed or not_planned, and resolved_by is the number of the pull request whose merge closed it. Each pull request made for it is listed; one closed because another was merged has superseded_by set.

  • Authentication: Optional. Public data can be read without a token; send one to see what is private.
  • MCP tool: get_issue, with the same inputs
Name Type Required Description
owner string Yes The workspace that owns the repository.
name string Yes The repository’s name.
number integer Yes The number shown after the #. Issues and pull requests share one sequence.
curl https://api.g1t.sh/repos/flagon-io/hello/issues/12 \
-H "Authorization: Bearer $G1T_TOKEN"

A successful request answers 200 with:

{
"issue": {
"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
"repo_id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
"number": 12,
"title": "Greeting should name the caller",
"body": "Take a name from the first argument; fall back to world.",
"labels": [
"feature"
],
"checks": [
"cargo test"
],
"state": "closed",
"reason": "completed",
"resolved_by": 14,
"author": {
"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
"username": "syntaqx",
"kind": "user",
"verified": false,
"workspaces": []
},
"created_at": "2026-10-01T18:04:11.482Z",
"updated_at": "2026-10-01T18:52:17.093Z",
"closed_at": "2026-10-01T18:52:17.093Z",
"pull_count": 2,
"comment_count": 0,
"assignees": [],
"blocked_by": [],
"queued": false,
"agent": null
},
"pulls": [
{
"id": "pr_01m43sjq8tcz5rbm2a7k4d9e6w",
"repo_id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
"number": 13,
"issue": 12,
"title": "Greeting should name the caller",
"body": null,
"agent": "claude-code",
"runtime": "external",
"status": "closed",
"fork": {
"namespace": "pulls",
"name": "pr_01m43sjq8tcz5rbm2a7k4d9e6w"
},
"fork_repo_id": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
"branch": null,
"head_commit": null,
"merge_base": null,
"merged_by": null,
"merged_at": null,
"superseded_by": 14,
"check_status": null,
"files": [],
"assignees": [],
"reviewers": [],
"author": {
"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
"username": "syntaqx",
"kind": "user",
"verified": false,
"workspaces": []
},
"created_at": "2026-10-01T18:20:02.117Z",
"updated_at": "2026-10-01T18:20:02.117Z"
},
{
"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
"repo_id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
"number": 14,
"issue": 12,
"title": "Greeting should name the caller",
"body": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\".",
"agent": "claude-code",
"runtime": "external",
"status": "merged",
"fork": {
"namespace": "pulls",
"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
},
"fork_repo_id": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
"branch": null,
"head_commit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
"merge_base": "3a7e9c1b5d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c",
"merged_by": "syntaqx",
"merged_at": "2026-10-01T18:52:17.093Z",
"superseded_by": null,
"check_status": "passed",
"files": [
{
"path": "src/main.rs",
"additions": 6,
"deletions": 2
}
],
"assignees": [],
"reviewers": [
"ana"
],
"author": {
"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
"username": "syntaqx",
"kind": "user",
"verified": false,
"workspaces": []
},
"created_at": "2026-10-01T18:20:02.117Z",
"updated_at": "2026-10-01T18:52:17.093Z"
}
],
"comments": [
{
"id": "cmt_01m43sr2b7d5f0j6k3n8p1q4v9",
"kind": "event",
"author": {
"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
"username": "syntaqx",
"kind": "user",
"verified": false,
"workspaces": []
},
"body": "opened #14 for this",
"path": null,
"line": null,
"verdict": null,
"created_at": "2026-10-01T18:20:02.141Z"
}
]
}

A failed request answers with one of these statuses and a body like {"error": {"code": "not_found", "message": "Repository not found."}}. See errors.

Status Code When
401 unauthenticated A token is required, or the one sent is not valid.
403 forbidden The token is valid but not allowed to do this, such as a member-only change or an agent token outside its repository.
404 not_found It does not exist, or you cannot see it.
422 invalid The input is not valid. message says which field and why.