Re-run a job
Run a finished workflow run again, as a new attempt: every job, with failed_only the jobs that did not succeed, or with job one job (by its id in the latest attempt); each with the jobs that need them.
/repos/{owner}/{name}/actions/jobs/{job}/rerundebug (or GitHub’s enable_debug_logging) runs the attempt with debug logging. The attempt before is kept, with its jobs’ logs. Needs the Write role or higher.
Runs the job again with every job that needs it, as a new attempt; the rest keep how they ended. A job of a matrix runs again with the rest of its matrix, and a job of a called workflow with the job that calls it. The run must have finished.
- Authentication: Required. Send an access token as
Authorization: Bearer. - MCP tool:
workflowwithactionrerun, and the same inputs - Scope: An access token needs
workflows:write. - Also at:
POST /repos/{owner}/{name}/actions/runs/{id}/rerun,POST /repos/{owner}/{name}/actions/runs/{id}/rerun-failed-jobs
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. |
job |
string | Yes | One job to run again, by its id in the latest attempt, with the jobs that need it. |
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 |
|---|---|---|---|
id |
string | No | The run’s id. Not needed with job. |
failed_only |
boolean | No | Only the jobs that did not succeed, and those that need them. |
debug |
boolean | No | Run the new attempt with debug logging: RUNNER_DEBUG=1, and ACTIONS_STEP_DEBUG and ACTIONS_RUNNER_DEBUG set to true. |
enable_debug_logging |
boolean | No | The same as debug, by GitHub’s name for it. |
Example request
Section titled “Example request”curl -X POST https://api.g1t.sh/repos/flagon-io/hello/actions/jobs/job_01kpx7b3d0e4f8g2h6j0k4m8ns/rerun \ -H "Authorization: Bearer $G1T_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "enable_debug_logging": true }'Example response
Section titled “Example response”A successful request answers 200 with:
{ "id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr", "workflow_id": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np", "path": ".g1t/workflows/ci.yml", "name": "CI", "title": "Greeting should name the caller", "number": 12, "attempt": 2, "event": "push", "ref": "refs/heads/main", "sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13", "pull": null, "status": "queued", "conclusion": null, "error": null, "actor": "syntaqx", "created_at": "2026-10-04T15:42:07.318Z", "started_at": null, "finished_at": null}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. |
| 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. |