Skip to content

github

github

GitHub REST API — repositories, issues, pull requests, commits, and code search

Coverage

7% (59 of ~900 endpoints)

Focus: repos, orgs, issues, PRs (full CRUD + merge + reviews), commits, branches, git refs, file management, labels, milestones, search, releases (full CRUD), actions/workflows/jobs, users, tags, topics

Missing: projects v2, teams, webhooks, deployments, code scanning, packages, gists, notifications, environments, pages

Last reviewed: 2026-03-27

Tools (59)

GET list_user_repos List repositories for the authenticated user. Use type to filter (owner, member, all).
GET list_orgs List organizations the authenticated user belongs to.
GET list_org_repos List repositories for an organization. Use list_orgs first to find org names.
GET get_repo Get a single repository by owner and name.
PATCH update_repo Update repository settings. Only include fields you want to change. Use for description, homepage, visibility, merge settings, etc.
PUT replace_topics Replace all repository topics. Provide the full list of desired topics.
GET list_issues List issues for a repository. Also returns PRs unless filtered. State: open, closed, all. Note: GitHub treats PRs as issues — check for pull_request field to distinguish.
GET get_issue Get a single issue by number, including body, labels, assignees, and milestone.
POST create_issue Create a new issue. Labels are an array of label name strings.
PATCH update_issue Update an issue. Set state to 'closed' to close it. Only include fields you want to change.
GET list_issue_comments List comments on an issue or pull request.
POST create_issue_comment Add a comment to an issue or pull request. Body supports GitHub-Flavored Markdown.
GET list_pulls List pull requests for a repository. State: open, closed, all.
GET get_pull Get a single pull request including diff stats, mergeable state, and review status.
GET list_pull_files List files changed in a pull request with patch diffs and stats.
GET list_pull_reviews List reviews on a pull request (approved, changes_requested, commented).
POST create_pull Create a new pull request. head is the branch with changes, base is the target branch (e.g. main). Set draft=true to create a draft PR.
PATCH update_pull Update a pull request. Set state to 'closed' to close it. Only include fields you want to change.
PUT merge_pull Merge a pull request. merge_method: merge, squash, or rebase. Optionally provide sha to ensure merging the expected head commit.
GET list_pull_commits List commits on a pull request, ordered chronologically.
POST create_pull_review Create a review on a pull request. event: APPROVE, REQUEST_CHANGES, or COMMENT. Body is the review summary.
GET list_commits List commits on a repository. Filter by sha (branch), path, author, or date range.
GET get_commit Get a single commit by SHA or ref, including full diff stats and file changes.
GET list_branches List branches for a repository.
GET get_branch Get a single branch including its latest commit SHA and protection status.
POST create_ref Create a git reference (branch or tag). For branches use ref='refs/heads/branch-name'. sha is the commit to point to.
DELETE delete_ref Delete a git reference. For branches use ref='heads/branch-name' (without refs/ prefix). For tags use ref='tags/tag-name'.
GET get_content Get file or directory contents. Files are base64 encoded. Directories return a listing. Use ref for a specific branch/tag/SHA.
PUT create_or_update_file Create or update a file. Content must be base64 encoded. To update an existing file, provide the current blob sha (from get_content). Creates a commit.
DELETE delete_file Delete a file from the repository. Requires the current blob sha (from get_content). Creates a commit.
GET search_code Search for code across repositories. Query syntax: 'keyword repo:owner/repo language:go path:internal'. Results include file path, repo, and text matches.
GET search_issues Search issues and PRs across repositories. Query syntax: 'bug repo:owner/repo is:open label:bug'. Use is:pr or is:issue to filter.
GET list_releases List releases for a repository, newest first.
GET get_latest_release Get the latest published release (not draft/prerelease).
GET get_release Get a single release by its numeric ID.
POST create_release Create a release. tag_name is required. If the tag does not exist, target_commitish (branch or SHA) is used to create it. Set draft=true for unpublished releases.
PATCH update_release Update a release. Only include fields you want to change.
DELETE delete_release Delete a release. Does not delete the associated git tag.
GET list_workflow_runs List workflow runs for a repository. Filter by branch, status (queued, in_progress, completed), or event (push, pull_request).
GET get_workflow_run Get a single workflow run including status, conclusion, and timing.
GET list_workflows List all workflows in a repository. Returns workflow ID, name, path, and state.
GET list_workflow_run_jobs List jobs for a workflow run. Filter by latest attempt or all attempts.
GET get_job Get a single workflow job by ID, including steps with status and timing.
GET get_job_log Download the log output of a workflow job. Returns plain text with timestamps. The API responds with a 302 redirect to a temporary download URL which is followed automatically.
POST cancel_workflow_run Cancel a workflow run that is in progress or queued.
POST rerun_workflow Re-run an entire workflow run. Only works for completed runs.
GET list_labels List all labels for a repository.
GET get_label Get a single label by name.
POST create_label Create a label. Color is a 6-character hex code without '#' prefix (e.g. 'ff0000' for red).
PATCH update_label Update a label. Only include fields you want to change. Use new_name to rename.
DELETE delete_label Delete a label from the repository.
GET list_milestones List milestones for a repository. State: open, closed, all.
GET get_milestone Get a single milestone by its number, including open/closed issue counts.
POST create_milestone Create a milestone. due_on is an ISO 8601 timestamp (e.g. '2026-04-01T00:00:00Z').
PATCH update_milestone Update a milestone. Set state to 'closed' to close it. Only include fields you want to change.
DELETE delete_milestone Delete a milestone.
GET get_authenticated_user Get the currently authenticated user's profile including login, name, email, and bio.
GET get_user Get a public user profile by username.
GET list_tags List tags for a repository, newest first. Each tag includes name and commit SHA.

Setup

  1. Navigate to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
  2. Click 'Generate new token (classic)'
  3. Select scopes: repo (full access), read:org (list organizations)
  4. Copy the token (starts with ghp_ or github_pat_)

Environment variable: CREDENTIAL_GITHUB_TOKEN

Authentication docs ↗

Install

Add to your backends.yaml:

- name: github
  transport: rest
  dadl: /app/dadl/github.dadl
  url: "https://api.github.com"

Set the credential:

CREDENTIAL_GITHUB_TOKEN=your-token-here