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
| Direction | Port(s) |
|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires GitHub API credentials.
See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|
| File | file |
| Issue | issue |
| Organization | organization |
| Release | release |
| Repository | repository |
| Review | review |
| User | user |
| Workflow | workflow |
Operations
Each resource offers its own set of operations.
| Resource | Operation | Value | Description |
|---|
| File | Create | create | Create a new file in a repository |
| File | Delete | delete | Delete a file from a repository |
| File | Edit | edit | Edit an existing file in a repository |
| File | Get | get | Get the content of a single file |
| File | List | list | List contents of a folder |
| Issue | Create | create | Create a new issue |
| Issue | Edit | edit | Edit an issue |
| Issue | Get | get | Get a single issue |
| Issue | Lock | lock | Lock an issue |
| Organization | Get Repositories | getRepositories | Returns all repositories of an organization |
| Release | Create | create | Create a new release |
| Release | Delete | delete | Delete a release |
| Release | Get | get | Get a release |
| Release | Get Many | getAll | Get many releases |
| Release | Update | update | Update a release |
| Repository | Get | get | Get a repository |
| Repository | Get Issues | getIssues | Get issues of a repository |
| Repository | Get License | getLicense | Get the license of a repository |
| Repository | Get Profile | getProfile | Get the community profile |
| Repository | Get Pull Requests | getPullRequests | Get pull requests of a repository |
| Repository | List Popular Paths | listPopularPaths | Get top 10 popular content paths |
| Repository | List Referrers | listReferrers | Get top 10 referring domains |
| Review | Create | create | Create a review |
| Review | Get | get | Get a review |
| Review | Get Many | getAll | Get many reviews |
| Review | Update | update | Update a review |
| User | Get Repositories | getRepositories | Returns a user’s repositories |
| User | Get Issues | getUserIssues | Returns issues assigned to the authenticated user |
| User | Invite | invite | Invite a user to an organization |
| Workflow | Disable | disable | Disable a workflow |
| Workflow | Dispatch | dispatch | Dispatch a workflow event |
| Workflow | Enable | enable | Enable a workflow |
| Workflow | Get | get | Get a workflow |
| Workflow | Get Usage | getUsage | Get the usage of a workflow |
| Workflow | List | list | List 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
| Parameter | Type | Required | Default | Description |
|---|
| File Path | string | Yes | — | The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list) |
| Binary File | boolean | No | false | Whether the data to upload should be taken from a binary field. |
| File Content | string | Yes | — | The text content of the file. (shown when Binary File is false) |
| Input Binary Field | string | Yes | data | The 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 Message | string | Yes | — | The commit message for the file operation. |
| Commit Details | fixedCollection | No | {} | Optional commit metadata — the commit author, the committer, and the branch to commit to (defaults to the repository’s default branch). |
| — Name | string | No | — | The name of the author of the commit. |
| — Email | string | No | — | The email of the author of the commit. |
| — Branch | string | No | — | The branch to commit to. Defaults to the repository’s default branch. |
| — Name | string | No | — | The name of the committer. |
| — Email | string | No | — | The email of the committer. |
File: Delete
| Parameter | Type | Required | Default | Description |
|---|
| File Path | string | Yes | — | The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list) |
| Commit Message | string | Yes | — | The commit message for the file operation. |
| Commit Details | fixedCollection | No | {} | Optional commit metadata — the commit author, the committer, and the branch to commit to (defaults to the repository’s default branch). |
| — Name | string | No | — | The name of the author of the commit. |
| — Email | string | No | — | The email of the author of the commit. |
| — Branch | string | No | — | The branch to commit to. Defaults to the repository’s default branch. |
| — Name | string | No | — | The name of the committer. |
| — Email | string | No | — | The email of the committer. |
File: Edit
| Parameter | Type | Required | Default | Description |
|---|
| File Path | string | Yes | — | The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list) |
| Binary File | boolean | No | false | Whether the data to upload should be taken from a binary field. |
| File Content | string | Yes | — | The text content of the file. (shown when Binary File is false) |
| Input Binary Field | string | Yes | data | The 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 Message | string | Yes | — | The commit message for the file operation. |
| Commit Details | fixedCollection | No | {} | Optional commit metadata — the commit author, the committer, and the branch to commit to (defaults to the repository’s default branch). |
| — Name | string | No | — | The name of the author of the commit. |
| — Email | string | No | — | The email of the author of the commit. |
| — Branch | string | No | — | The branch to commit to. Defaults to the repository’s default branch. |
| — Name | string | No | — | The name of the committer. |
| — Email | string | No | — | The email of the committer. |
File: Get
| Parameter | Type | Required | Default | Description |
|---|
| File Path | string | Yes | — | The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list) |
| As Binary Property | boolean | No | true | Whether to return the file content as binary data instead of the raw API response. |
| Put Output File in Field | string | Yes | data | The 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) |
| Reference | string | No | — | The commit, branch or tag to read the file at. Defaults to the repository’s default branch. |
File: List
| Parameter | Type | Required | Default | Description |
|---|
| File Path | string | Yes | — | The full path within the repository: the file to act on, or the folder to list. (hidden when Operation is list) |
| Path | string | No | — | The full path within the repository: the file to act on, or the folder to list. |
Issue: Create
| Parameter | Type | Required | Default | Description |
|---|
| Title | string | Yes | — | The title of the issue. |
Body (body) | string | No | — | The body of the issue. |
| Labels | string | No | — | Comma-separated list of label names to add to the issue. |
| Assignees | string | No | — | Comma-separated list of usernames to assign. |
| Parameter | Type | Required | Default | Description |
|---|
| Issue Number | number | Yes | 0 | The number of the issue. |
| Comment Body | string | Yes | — | The body of the comment. |
Issue: Edit
| Parameter | Type | Required | Default | Description |
|---|
| Issue Number | number | Yes | 0 | The number of the issue. |
| Edit Fields | collection | No | {} | Fields to update on the issue. |
| | | | Options: open, completed |
| — Title | string | No | — | The title of the issue. |
| — Body | string | No | — | The body of the issue. |
| — State | options | No | open | |
| | | | Options: open, closed |
| — State Reason | options | No | completed | |
| | | | Options: completed, not_planned, reopened |
| — Labels | string | No | — | Comma-separated label names. |
| — Assignees | string | No | — | Comma-separated usernames. |
Issue: Get
| Parameter | Type | Required | Default | Description |
|---|
| Issue Number | number | Yes | 0 | The number of the issue. |
Issue: Lock
| Parameter | Type | Required | Default | Description |
|---|
| Issue Number | number | Yes | 0 | The number of the issue. |
| Lock Reason | options | No | resolved | The reason for locking the issue. |
| | | | Options: off-topic, too heated, resolved, spam |
Organization: Get Repositories
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Release: Create
| Parameter | Type | Required | Default | Description |
|---|
| Tag | string | Yes | — | The tag of the release. |
Additional Fields (additionalFields) | collection | No | {} | |
| — Name | string | No | — | |
| — Body | string | No | — | |
| — Draft | boolean | No | false | |
| — Prerelease | boolean | No | false | |
| — Target Commitish | string | No | — | |
Release: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Release ID | string | Yes | — | The ID of the release. |
Release: Get
| Parameter | Type | Required | Default | Description |
|---|
| Release ID | string | Yes | — | The ID of the release. |
Release: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Release: Update
| Parameter | Type | Required | Default | Description |
|---|
| Release ID | string | Yes | — | The ID of the release. |
Additional Fields (additionalFields) | collection | No | {} | |
| — Name | string | No | — | |
| — Body | string | No | — | |
| — Tag Name | string | No | — | |
| — Draft | boolean | No | false | |
| — Prerelease | boolean | No | false | |
| — Target Commitish | string | No | — | |
Repository: Get Issues
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Filters (getRepositoryIssuesFilters) | collection | No | {} | |
| | | | Options: all, created, asc |
| — Assignee | string | No | — | |
| — Creator | string | No | — | |
| — Mentioned | string | No | — | |
| — Labels | string | No | — | Comma-separated label names. |
| — Updated Since | string | No | — | ISO 8601 datetime — return only issues updated at or after this time. |
| — State | options | No | open | |
| | | | Options: all, closed, open |
| — Sort | options | No | created | |
| | | | Options: created, updated, comments |
| — Direction | options | No | desc | |
| | | | Options: asc, desc |
Repository: Get Pull Requests
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Filters (getRepositoryPullRequestsFilters) | collection | No | {} | |
| | | | Options: all, created, asc |
| — State | options | No | open | |
| | | | Options: all, closed, open |
| — Sort | options | No | created | |
| | | | Options: created, updated, popularity, long-running |
| — Direction | options | No | desc | |
| | | | Options: asc, desc |
Review: Create
| Parameter | Type | Required | Default | Description |
|---|
| PR Number | number | Yes | 0 | The number of the pull request. |
| Event | options | No | approve | The review action to perform. |
| | | | Options: approve, requestChanges, comment, pending |
Body (reviewBody) | string | No | — | The body of the review (required for Request Changes or Comment events). (shown when Event is requestChanges, comment) |
Additional Fields (reviewAdditionalFields) | collection | No | {} | |
| — Commit ID | string | No | — | The SHA of the commit that needs a review. |
Review: Get
| Parameter | Type | Required | Default | Description |
|---|
| PR Number | number | Yes | 0 | The number of the pull request. |
| Review ID | string | Yes | — | The ID of the review. |
Review: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| PR Number | number | Yes | 0 | The number of the pull request. |
Review: Update
| Parameter | Type | Required | Default | Description |
|---|
| PR Number | number | Yes | 0 | The number of the pull request. |
| Review ID | string | Yes | — | The ID of the review. |
Body (reviewUpdateBody) | string | No | — | The body of the review. |
User: Get Repositories
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
User: Get Issues
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Filters (getUserIssuesFilters) | collection | No | {} | |
| | | | Options: all, created, asc |
| — Mentioned | string | No | — | |
| — Labels | string | No | — | Comma-separated label names. |
| — Updated Since | string | No | — | |
| — State | options | No | open | |
| | | | Options: all, closed, open |
| — Sort | options | No | created | |
| | | | Options: created, updated, comments |
| — Direction | options | No | desc | |
| | | | Options: asc, desc |
User: Invite
| Parameter | Type | Required | Default | Description |
|---|
| Organization | string | Yes | — | The GitHub organization to invite the user to. |
| Email | string | Yes | — | The email address of the user to invite. |
Workflow: Disable
| Parameter | Type | Required | Default | Description |
|---|
| Workflow ID | string | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). |
Workflow: Dispatch
| Parameter | Type | Required | Default | Description |
|---|
| Workflow ID | string | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). |
| Ref | string | Yes | main | The git reference for the workflow dispatch (branch or tag name). |
| Inputs | json | No | {} | JSON object with input parameters for the workflow. |
Workflow: Enable
| Parameter | Type | Required | Default | Description |
|---|
| Workflow ID | string | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). |
Workflow: Get
| Parameter | Type | Required | Default | Description |
|---|
| Workflow ID | string | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). |
Workflow: Get Usage
| Parameter | Type | Required | Default | Description |
|---|
| Workflow ID | string | Yes | — | The ID or filename of the workflow (e.g. 12345678 or main.yml). |
All Operations
| Parameter | Type | Required | Default | Description |
|---|
| Repository Owner | string | Yes | — | The owner (user or organization) of the repository. (hidden when Operation is invite, getUserIssues) |
| Repository Name | string | Yes | — | The name of the repository. (hidden when Resource is user, organization and Operation is getRepositories, invite, getUserIssues) |
| Max Concurrency | number | No | 10 | Maximum 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
| Mode | Behavior |
|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes 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.