Search all guides

Reference · Tools

GitHub integration

Manage files, issues, releases, reviews, repositories, organizations, users, and workflows via the GitHub REST API.

Action (binary) Development v1 Binary data

The GitHub node connects directly to the GitHub REST API to read and write across your repositories — files, issues, releases, reviews, and Actions workflows. You could, for example, automatically open a GitHub issue whenever an upstream monitoring alert fires, attach a binary asset to a release, or dispatch a workflow run from another automation. It covers both individual user operations and organization-level tasks in one node.

Works as
Action (binary)
Tool name
github
Parameters
50
Outputs
Output, Error
Credentials
GitHub API
Official docs
GitHub docs docs.github.com

What you can build with GitHub

  • Download a file from a GitHub repository as binary data.
  • Create a new file in a repository from binary data.
  • Create an issue in a GitHub repository.
  • List all releases for a repository.
  • Dispatch a GitHub Actions workflow.
  • Get pull request reviews.

Overview

The GitHub tool provides access to the GitHub REST API v3. It supports file operations (create, edit, delete, get with binary download, and list files in repositories), issue management (create, edit, get, comment, and lock issues), release management (create, get, list, update, and delete releases), pull request reviews (create, get, list, and update reviews), repository info (details, issues, pull requests, license, community profile, popular paths, and referrers), user operations (list repos, get assigned issues, invite to an organization), organization repository listing, and GitHub Actions workflows (dispatch, enable, disable, get, list, and usage). File Get downloads file content as binary data; File Create and Edit can upload binary data.

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires GitHub API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Filefile
Issueissue
Organizationorganization
Releaserelease
Repositoryrepository
Reviewreview
Useruser
Workflowworkflow

Operations

Each resource offers its own set of operations.

ResourceOperationValueDescription
FileCreatecreateCreate a new file in a repository
FileDeletedeleteDelete a file from a repository
FileEditeditEdit an existing file in a repository
FileGetgetGet the content of a single file
FileListlistList contents of a folder
IssueCreatecreateCreate a new issue
IssueCreate CommentcreateCommentCreate a comment on an issue
IssueEditeditEdit an issue
IssueGetgetGet a single issue
IssueLocklockLock an issue
OrganizationGet RepositoriesgetRepositoriesReturns all repositories of an organization
ReleaseCreatecreateCreate a new release
ReleaseDeletedeleteDelete a release
ReleaseGetgetGet a release
ReleaseGet ManygetAllGet many releases
ReleaseUpdateupdateUpdate a release
RepositoryGetgetGet a repository
RepositoryGet IssuesgetIssuesGet issues of a repository
RepositoryGet LicensegetLicenseGet the license of a repository
RepositoryGet ProfilegetProfileGet the community profile
RepositoryGet Pull RequestsgetPullRequestsGet pull requests of a repository
RepositoryList Popular PathslistPopularPathsGet top 10 popular content paths
RepositoryList ReferrerslistReferrersGet top 10 referring domains
ReviewCreatecreateCreate a review
ReviewGetgetGet a review
ReviewGet ManygetAllGet many reviews
ReviewUpdateupdateUpdate a review
UserGet RepositoriesgetRepositoriesReturns a user’s repositories
UserGet IssuesgetUserIssuesReturns issues assigned to the authenticated user
UserInviteinviteInvite a user to an organization
WorkflowDisabledisableDisable a workflow
WorkflowDispatchdispatchDispatch a workflow event
WorkflowEnableenableEnable a workflow
WorkflowGetgetGet a workflow
WorkflowGet UsagegetUsageGet the usage of a workflow
WorkflowListlistList workflows

Parameters

Get takes no parameters of its own — see All Operations. Get License takes no parameters of its own — see All Operations. Get Profile takes no parameters of its own — see All Operations. List Popular Paths takes no parameters of its own — see All Operations. List Referrers takes no parameters of its own — see All Operations. List takes no parameters of its own — see All Operations.

File: Create

ParameterTypeRequiredDefaultDescription
File PathstringYes—The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list)
Binary FilebooleanNofalseWhether the data to upload should be taken from a binary field.
File ContentstringYes—The text content of the file. (shown when Binary File is false)
Input Binary FieldstringYesdataThe name of the binary field carrying the file: the input field read on create and edit, the output field written on get. Names are case-sensitive. (shown when Binary File is true)
Commit MessagestringYes—The commit message for the file operation.
Commit DetailsfixedCollectionNo{}Optional commit metadata — the commit author, the committer, and the branch to commit to (defaults to the repository’s default branch).
— NamestringNo—The name of the author of the commit.
— EmailstringNo—The email of the author of the commit.
— BranchstringNo—The branch to commit to. Defaults to the repository’s default branch.
— NamestringNo—The name of the committer.
— EmailstringNo—The email of the committer.

File: Delete

ParameterTypeRequiredDefaultDescription
File PathstringYes—The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list)
Commit MessagestringYes—The commit message for the file operation.
Commit DetailsfixedCollectionNo{}Optional commit metadata — the commit author, the committer, and the branch to commit to (defaults to the repository’s default branch).
— NamestringNo—The name of the author of the commit.
— EmailstringNo—The email of the author of the commit.
— BranchstringNo—The branch to commit to. Defaults to the repository’s default branch.
— NamestringNo—The name of the committer.
— EmailstringNo—The email of the committer.

File: Edit

ParameterTypeRequiredDefaultDescription
File PathstringYes—The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list)
Binary FilebooleanNofalseWhether the data to upload should be taken from a binary field.
File ContentstringYes—The text content of the file. (shown when Binary File is false)
Input Binary FieldstringYesdataThe name of the binary field carrying the file: the input field read on create and edit, the output field written on get. Names are case-sensitive. (shown when Binary File is true)
Commit MessagestringYes—The commit message for the file operation.
Commit DetailsfixedCollectionNo{}Optional commit metadata — the commit author, the committer, and the branch to commit to (defaults to the repository’s default branch).
— NamestringNo—The name of the author of the commit.
— EmailstringNo—The email of the author of the commit.
— BranchstringNo—The branch to commit to. Defaults to the repository’s default branch.
— NamestringNo—The name of the committer.
— EmailstringNo—The email of the committer.

File: Get

ParameterTypeRequiredDefaultDescription
File PathstringYes—The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list)
As Binary PropertybooleanNotrueWhether to return the file content as binary data instead of the raw API response.
Put Output File in FieldstringYesdataThe name of the binary field carrying the file: the input field read on create and edit, the output field written on get. Names are case-sensitive. (shown when As Binary Property is true)
ReferencestringNo—The commit, branch or tag to read the file at. Defaults to the repository’s default branch.

File: List

ParameterTypeRequiredDefaultDescription
File PathstringYes—The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list)
PathstringNo—The full path within the repository: the file to act on, or the folder to list.

Issue: Create

ParameterTypeRequiredDefaultDescription
TitlestringYes—The title of the issue.
Body (body)stringNo—The body of the issue.
LabelsstringNo—Comma-separated list of label names to add to the issue.
AssigneesstringNo—Comma-separated list of usernames to assign.

Issue: Create Comment

ParameterTypeRequiredDefaultDescription
Issue NumbernumberYes0The number of the issue.
Comment BodystringYes—The body of the comment.

Issue: Edit

ParameterTypeRequiredDefaultDescription
Issue NumbernumberYes0The number of the issue.
Edit FieldscollectionNo{}Fields to update on the issue.
Options: open, completed
— TitlestringNo—The title of the issue.
— BodystringNo—The body of the issue.
— StateoptionsNoopen
Options: open, closed
— State ReasonoptionsNocompleted
Options: completed, not_planned, reopened
— LabelsstringNo—Comma-separated label names.
— AssigneesstringNo—Comma-separated usernames.

Issue: Get

ParameterTypeRequiredDefaultDescription
Issue NumbernumberYes0The number of the issue.

Issue: Lock

ParameterTypeRequiredDefaultDescription
Issue NumbernumberYes0The number of the issue.
Lock ReasonoptionsNoresolvedThe reason for locking the issue.
Options: off-topic, too heated, resolved, spam

Organization: Get Repositories

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Release: Create

ParameterTypeRequiredDefaultDescription
TagstringYes—The tag of the release.
Additional Fields (additionalFields)collectionNo{}
— NamestringNo—
— BodystringNo—
— DraftbooleanNofalse
— PrereleasebooleanNofalse
— Target CommitishstringNo—

Release: Delete

ParameterTypeRequiredDefaultDescription
Release IDstringYes—The ID of the release.

Release: Get

ParameterTypeRequiredDefaultDescription
Release IDstringYes—The ID of the release.

Release: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Release: Update

ParameterTypeRequiredDefaultDescription
Release IDstringYes—The ID of the release.
Additional Fields (additionalFields)collectionNo{}
— NamestringNo—
— BodystringNo—
— Tag NamestringNo—
— DraftbooleanNofalse
— PrereleasebooleanNofalse
— Target CommitishstringNo—

Repository: Get Issues

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (getRepositoryIssuesFilters)collectionNo{}
Options: all, created, asc
— AssigneestringNo—
— CreatorstringNo—
— MentionedstringNo—
— LabelsstringNo—Comma-separated label names.
— Updated SincestringNo—ISO 8601 datetime — return only issues updated at or after this time.
— StateoptionsNoopen
Options: all, closed, open
— SortoptionsNocreated
Options: created, updated, comments
— DirectionoptionsNodesc
Options: asc, desc

Repository: Get Pull Requests

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (getRepositoryPullRequestsFilters)collectionNo{}
Options: all, created, asc
— StateoptionsNoopen
Options: all, closed, open
— SortoptionsNocreated
Options: created, updated, popularity, long-running
— DirectionoptionsNodesc
Options: asc, desc

Review: Create

ParameterTypeRequiredDefaultDescription
PR NumbernumberYes0The number of the pull request.
EventoptionsNoapproveThe review action to perform.
Options: approve, requestChanges, comment, pending
Body (reviewBody)stringNo—The body of the review (required for Request Changes or Comment events). (shown when Event is requestChanges, comment)
Additional Fields (reviewAdditionalFields)collectionNo{}
— Commit IDstringNo—The SHA of the commit that needs a review.

Review: Get

ParameterTypeRequiredDefaultDescription
PR NumbernumberYes0The number of the pull request.
Review IDstringYes—The ID of the review.

Review: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
PR NumbernumberYes0The number of the pull request.

Review: Update

ParameterTypeRequiredDefaultDescription
PR NumbernumberYes0The number of the pull request.
Review IDstringYes—The ID of the review.
Body (reviewUpdateBody)stringNo—The body of the review.

User: Get Repositories

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

User: Get Issues

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (getUserIssuesFilters)collectionNo{}
Options: all, created, asc
— MentionedstringNo—
— LabelsstringNo—Comma-separated label names.
— Updated SincestringNo—
— StateoptionsNoopen
Options: all, closed, open
— SortoptionsNocreated
Options: created, updated, comments
— DirectionoptionsNodesc
Options: asc, desc

User: Invite

ParameterTypeRequiredDefaultDescription
OrganizationstringYes—The GitHub organization to invite the user to.
EmailstringYes—The email address of the user to invite.

Workflow: Disable

ParameterTypeRequiredDefaultDescription
Workflow IDstringYes—The ID or filename of the workflow (e.g. 12345678 or main.yml).

Workflow: Dispatch

ParameterTypeRequiredDefaultDescription
Workflow IDstringYes—The ID or filename of the workflow (e.g. 12345678 or main.yml).
RefstringYesmainThe git reference for the workflow dispatch (branch or tag name).
InputsjsonNo{}JSON object with input parameters for the workflow.

Workflow: Enable

ParameterTypeRequiredDefaultDescription
Workflow IDstringYes—The ID or filename of the workflow (e.g. 12345678 or main.yml).

Workflow: Get

ParameterTypeRequiredDefaultDescription
Workflow IDstringYes—The ID or filename of the workflow (e.g. 12345678 or main.yml).

Workflow: Get Usage

ParameterTypeRequiredDefaultDescription
Workflow IDstringYes—The ID or filename of the workflow (e.g. 12345678 or main.yml).

All Operations

ParameterTypeRequiredDefaultDescription
Repository OwnerstringYes—The owner (user or organization) of the repository. (hidden when Operation is invite, getUserIssues)
Repository NamestringYes—The name of the repository. (hidden when Resource is user, organization and Operation is getRepositories, invite, getUserIssues)
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

This node replaces the input item’s JSON with the GitHub API response. Fields the item arrived with do not pass through, so capture anything a later node needs before this node or re-join it afterwards. Binary data on the input item is forwarded.

The one exception is File Get with As Binary Property on: there the item JSON passes through untouched and the file is added as a binary property under the field you named, alongside any binary the item already carried. The binary’s file name comes from the file’s path in the repository and its MIME type is detected from that name.

Operations that fan out — one output item per record instead of one per input item:

file:list, repository:getIssues, repository:getPullRequests, repository:listPopularPaths, repository:listReferrers, release:getAll, review:getAll, user:getRepositories, user:getUserIssues, organization:getRepositories, workflow:list.

An empty result from any of them produces no output items at all.

Everything else emits exactly one item carrying the API object — the created issue, the updated release, the repository, the workflow, and so on. Operations where GitHub returns no body instead emit { "success": true }; Workflow Dispatch emits { "success": true, "dispatched": true }.

Reference the response downstream by expression, e.g. {{ $json.number }} after creating an issue, {{ $json.html_url }} after creating a release, or {{ $json.name }} after listing files.

Example Configuration

Create a text file and commit it:

{
  "type": "github",
  "parameters": {
    "resource": "file",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "filePath": "docs/readme.md",
    "binaryData": false,
    "fileContent": "# Hello World\nThis is a test file.",
    "commitMessage": "Add readme file"
  }
}

Edit a file on a branch with explicit commit author details:

{
  "type": "github",
  "parameters": {
    "resource": "file",
    "operation": "edit",
    "owner": "octocat",
    "repository": "Hello-World",
    "filePath": "docs/readme.md",
    "binaryData": false,
    "fileContent": "# Hello World\nUpdated content.",
    "commitMessage": "Update readme file",
    "additionalParameters": {
      "author": { "name": "John Doe", "email": "john@example.com" },
      "branch": { "branch": "feature-branch" }
    }
  }
}

Download a file as binary data:

{
  "type": "github",
  "parameters": {
    "resource": "file",
    "operation": "get",
    "owner": "octocat",
    "repository": "Hello-World",
    "filePath": "image.png",
    "asBinaryProperty": true,
    "binaryPropertyName": "fileData"
  }
}

Create an issue with labels and assignees:

{
  "type": "github",
  "parameters": {
    "resource": "issue",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "title": "{{ $json.title }}",
    "body": "There seems to be a bug in the application.",
    "labels": "bug,urgent",
    "assignees": "octocat,contributor"
  }
}

Edit an existing issue:

{
  "type": "github",
  "parameters": {
    "resource": "issue",
    "operation": "edit",
    "owner": "octocat",
    "repository": "Hello-World",
    "issueNumber": 123,
    "editFields": {
      "title": "Updated bug report",
      "body": "Updated description of the bug.",
      "state": "open",
      "labels": "bug,high-priority"
    }
  }
}

List open bug issues, newest first:

{
  "type": "github",
  "parameters": {
    "resource": "repository",
    "operation": "getIssues",
    "owner": "octocat",
    "repository": "Hello-World",
    "returnAll": false,
    "limit": 50,
    "getRepositoryIssuesFilters": {
      "state": "open",
      "labels": "bug",
      "sort": "created",
      "direction": "desc"
    }
  }
}

Cut a release:

{
  "type": "github",
  "parameters": {
    "resource": "release",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "releaseTag": "v1.0.0",
    "additionalFields": {
      "name": "Version 1.0.0",
      "body": "First stable release",
      "draft": false,
      "prerelease": false
    }
  }
}

Request changes on a pull request:

{
  "type": "github",
  "parameters": {
    "resource": "review",
    "operation": "create",
    "owner": "octocat",
    "repository": "Hello-World",
    "pullRequestNumber": 456,
    "event": "requestChanges",
    "reviewBody": "Please fix the coding style issues.",
    "reviewAdditionalFields": {
      "commitId": "abc123def456"
    }
  }
}

Invite someone to an organization:

{
  "type": "github",
  "parameters": {
    "resource": "user",
    "operation": "invite",
    "organization": "my-org",
    "email": "{{ $json.email }}"
  }
}

List the issues assigned to the authenticated user:

{
  "type": "github",
  "parameters": {
    "resource": "user",
    "operation": "getUserIssues",
    "returnAll": false,
    "limit": 20,
    "getUserIssuesFilters": {
      "state": "open",
      "sort": "updated",
      "direction": "desc"
    }
  }
}

Dispatch a GitHub Actions workflow with inputs:

{
  "type": "github",
  "parameters": {
    "resource": "workflow",
    "operation": "dispatch",
    "owner": "octocat",
    "repository": "Hello-World",
    "workflowId": "deploy.yml",
    "ref": "main",
    "inputs": "{\"environment\": \"production\", \"version\": \"{{ $json.version }}\"}"
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool manages GitHub repositories, files, issues, releases, reviews, users, organizations, and Actions workflows. It is ideal for operations like creating a new file, getting a repository’s license, or dispatching a workflow event. It produces updated GitHub resources, file contents, issue details, release information, review statuses, and workflow results.

Behavior notes

  • The item JSON is replaced, not merged. Only File Get in binary mode keeps the incoming fields. Plan for that when chaining GitHub nodes together — a second node can still read the first node’s output, but not the data that came before it.
  • Repository Owner doubles as the account name. For Organization Get Repositories it is the organization; for User Get Repositories it is the user. It is hidden for User Invite and User Get Issues, which do not target a repository.
  • User Get Issues works on the authenticated account — the one the credential belongs to — and takes no owner or repository.
  • Binary uploads are base64 encoded for you, and File Get in binary mode decodes GitHub’s base64 back into real bytes. Pointing File Get at a folder path fails with an explicit error.
  • Deleting a file resolves its SHA first, so you only supply the path, the commit message and (optionally) the branch.
  • Commit author, branch and committer are nested objects under Additional Parameters — for example additionalParameters.branch.branch is the branch name. Leave the branch out to commit to the repository’s default branch.
  • Edit-style collections send only what you fill in. Issue Edit Fields and Release Additional Fields are partial updates; omitted fields are left untouched.
  • Review bodies are required for two events. requestChanges and comment need a body; approve and pending do not.
  • Return All pages through every result. With it off, the request is capped at Limit, which GitHub itself limits to 100 per page.
  • Workflow Dispatch only starts a run. GitHub returns no body, so the item reports dispatched: true rather than a run ID; a missing workflow fails with an explicit “could not be found” error.

Frequently asked questions

What happens to the data from earlier nodes when I chain two GitHub nodes together?

Each GitHub node replaces the item's JSON entirely — it does not merge its output with whatever came before. The one exception is File Get in binary mode, which preserves the incoming fields alongside the downloaded file. If you need data from an earlier step in a later GitHub node, read it from that node's output directly, not from the original incoming item.

How do I upload or download binary files like images or zip archives?

File Create and File Edit both accept binary data as input — the node handles the base64 encoding that the GitHub API requires. File Get works in the opposite direction: it fetches a file and decodes GitHub's base64 back into real bytes. Note that pointing File Get at a folder path rather than a file path will fail with an explicit error.

I triggered a Workflow Dispatch but got no run ID back — did it work?

That is expected. GitHub returns an empty response body for a successful dispatch, so the node reports `dispatched: true` instead of a run ID. If the workflow file cannot be found, you will get an explicit 'could not be found' error rather than a silent failure. To track the triggered run you would need a separate API call to list workflow runs.

What credential does this node require, and does 'User Get Issues' need a repository specified?

The node uses a GitHub API credential (type: githubApi). User Get Issues is the one operation that takes no owner or repository at all — it returns issues assigned to whichever GitHub account the credential belongs to. Every other operation that targets repository content requires the Repository Owner field, which doubles as the organization name for organization-scoped operations.

When creating a pull request review, is a body always required?

Only for the `requestChanges` and `comment` events — both require a body text. The `approve` and `pending` events do not. Submitting a `requestChanges` review without a body will result in an API error, so make sure your workflow conditionally populates the body field when those events are used.

Build with GitHub

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need GitHub API credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.