GitHub Connector
Auth type: bearer_token (GitHub Personal Access Token)
The GitHub connector provides 10 actions covering repositories, issues, and pull requests.
Setup
- Create a Personal Access Token at github.com/settings/tokens
- Select scopes:
repo(for private repos) orpublic_repo(for public only) - Store the token:
# Via CLI
feelr auth github
# Via API
curl -X PUT https://api.feelr.dev/admin/credentials/github \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"token": "ghp_your_pat_here"}'Action Reference
Repositories
| Action | Description | Required Params | Returns |
|---|---|---|---|
repos.list | List repos for authenticated user | — | [{id, name, full_name, private, description, language, default_branch, stargazers_count}] |
Optional params: type (all/owner/public/private/member, default: all), sort (created/updated/pushed/full_name, default: created), per_page (max 100, default: 30)
Issues
| Action | Description | Required Params | Returns |
|---|---|---|---|
issues.list | List issues (excludes PRs) | repo | [{id, number, state, title, user_login, labels, created_at}] |
issues.get | Get a single issue | repo, issue_number | {id, number, state, state_reason, title, body, user_login, assignee_login, labels, comments, created_at, updated_at, closed_at} |
issues.create | Create an issue | repo, title | {id, number, state, title, body, user_login, labels, created_at} |
issues.update | Update an issue | repo, issue_number | {id, number, state, title, ...} |
issues.close | Close an issue | repo, issue_number | {id, number, state, state_reason, ...} |
issues.list optional params: state (open/closed/all, default: open), labels (comma-separated), sort (created/updated/comments, default: created), per_page (max 100, default: 30)
issues.create optional params: body (markdown), labels (comma-separated), assignees (comma-separated usernames)
issues.update optional params: title, body, state (open/closed), labels (comma-separated, replaces all), assignees (comma-separated, replaces all)
issues.close optional params: state_reason (completed/not_planned, default: completed)
Pull Requests
| Action | Description | Required Params | Returns |
|---|---|---|---|
pulls.list | List pull requests | repo | [{id, number, state, title, user_login, head_ref, base_ref, merged, created_at}] |
pulls.get | Get a single PR | repo, pull_number | {id, number, state, title, body, user_login, head_ref, head_sha, base_ref, merged, mergeable, labels, created_at, updated_at, merged_at} |
pulls.create | Create a PR | repo, title, head, base | {id, number, state, title, head_ref, base_ref, created_at} |
pulls.merge | Merge a PR | repo, pull_number | {merged, sha, message} |
pulls.list optional params: state (open/closed/all, default: open), sort (created/updated/popularity/long-running, default: created), per_page (max 100, default: 30)
pulls.create optional params: body (markdown), draft (boolean)
pulls.merge optional params: merge_method (merge/squash/rebase, default: merge), commit_title, commit_message
The repo param always uses the owner/repo format (e.g., octocat/Hello-World).
Examples
List open issues
curl "https://api.feelr.dev/v1/github/issues.list?repo=octocat/Hello-World&state=open" \
-H "X-Feelr-Key: fk_live_..."feelr run github issues.list repo=octocat/Hello-World state=openCreate an issue
curl -X POST https://api.feelr.dev/v1/github/issues.create \
-H "X-Feelr-Key: fk_live_..." \
-H "Content-Type: application/json" \
-d '{"repo": "octocat/Hello-World", "title": "Found a bug", "labels": "bug,urgent"}'feelr run github issues.create repo=octocat/Hello-World title="Found a bug" labels=bug,urgentMerge a pull request
curl -X POST https://api.feelr.dev/v1/github/pulls.merge \
-H "X-Feelr-Key: fk_live_..." \
-H "Content-Type: application/json" \
-d '{"repo": "octocat/Hello-World", "pull_number": 42, "merge_method": "squash"}'feelr run github pulls.merge repo=octocat/Hello-World pull_number=42 merge_method=squash