Assign an issue to the g1t agent
Assign an issue to the g1t agent.
/repos/{owner}/{name}/issues/{number}/assignIt opens a pull request for the issue in a sandbox of its own and sees it through: the issue’s acceptance checks, a review by a second agent, revision if either finds something, and catching up when main moves. Returns the pull request at once; follow its progress with get_pull_request. There is no model or agent count to choose. To put many agents to work, assign many issues. Needs the Write role or higher. In preview: only for accounts g1t agents are enabled for.
The response is the pull request the g1t agent opened, still a draft. Follow it with get a pull request: lifecycle says what the agent is doing.
- Authentication: Required. Send an access token as
Authorization: Bearer. - MCP tool:
assign_issue, with the same inputs
Path parameters
Section titled “Path parameters”| 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. |
Body parameters
Section titled “Body parameters”Send a JSON object. Names are snake_case, as in responses; the camelCase spelling is accepted too.
| Name | Type | Required | Description |
|---|---|---|---|
instructions |
string | No | Extra guidance for this run, on top of the issue’s description. |
Example request
Section titled “Example request”curl -X POST https://api.g1t.sh/repos/flagon-io/hello/issues/12/assign \ -H "Authorization: Bearer $G1T_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "instructions": "Keep the change to src/main.rs." }'Example response
Section titled “Example response”A successful request answers 200 with:
{ "id": "pr_01m43smh3vexsr5pmp60qwv0vs", "repo_id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr", "number": 14, "issue": 12, "title": "Greeting should name the caller", "body": null, "agent": "g1t-agent", "runtime": "hosted", "status": "draft", "fork": { "namespace": "pulls", "name": "pr_01m43smh3vexsr5pmp60qwv0vs" }, "fork_repo_id": "rep_01m43smh5xd7aw2kq9tv0b4c8e", "branch": null, "head_commit": null, "merge_base": null, "merged_by": null, "merged_at": null, "superseded_by": null, "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"}Errors
Section titled “Errors”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. |
| 402 | payment_required |
The workspace cannot start this work: it needs the g1t plan or a card check, or it is at a limit. See usage and billing. |
| 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. |
| 409 | conflict |
The request conflicts with the current state. |
| 422 | invalid |
The input is not valid. message says which field and why. |