Skip to content
Wrappers for GitHub API resources built on ghub
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


GHub+ is a thick GitHub API client built using API-Wrap.el on ghub, the minuscule GitHub API client.

Tour by Example

;;; GET /issues

;;; GET /issues?state=closed
(ghubp-get-issues :state 'closed)

(let ((repo (ghub-get "/repos/magit/magit")))
   ;; Magit's issues
   ;; GET /repos/magit/magit/issues
   (ghubp-get-repos-owner-repo-issues repo)

   ;; Magit's closed issues labeled 'easy'
   ;; GET /repos/magit/magit/issues?state=closed&labels=easy
   (ghubp-get-repos-owner-repo-issues repo
     :state 'closed :labels "easy")))


Contributions should be made via pull-request. When it makes sense, be sure your addition works when passing around object-alists.


This package is a thick client built on ghub, the miniscule GitHub client. Its aim is to provide the common functionality most helpful for application development.

Since ghub+ is built on ghub, any and all features you find lacking in ghub+ can be done with ghub without needing to dig into either package’s internals. However, ghub+ provides some macros you may find helpful in development; see Extending for details. If you find your function to be particularly helpful or believe it to be a common use case, please consider contributing it to the library!


To simplify application development, tools have been developed to shorten repetitive syntax and provide useful syntax for common problems that might not otherwise have good, succinct solutions.

(ghubp-unpaginate &rest BODY)

Wraps the form in a let-binding where ghub-unpaginate is t. Forms executed here will continue to poll the API until all output has been received.

(defapi{get,put,head,post,patch,delete}-ghubp ...)

These wonderful macros super-charge the standard ghub-{get,put,...} functions into documentation-generating, resource-wrapping machines. Refer to their documentation or see apiwrap.el for a short tutorial in using these macros.

You can’t perform that action at this time.