Call a GitHub API endpoint and get the resulting JSON response

Calls any GitHub API endpoint. You must provide your GitHub Personal token (get one from
Out parameters provide the status code and the full response JSON if valid, otherwise the raw response body.

Supported platforms ios, android, mac
Author @tommeier
Returns A hash including the HTTP status code (:status), the response body (:body), and if valid JSON has been returned the parsed JSON (:json).

2 Examples

result = github_api(
  server_url: "",
  api_token: ENV["GITHUB_TOKEN"],
  http_method: "GET",
  path: "/repos/:owner/:repo/readme",
  body: { ref: "master" }
# Alternatively call directly with optional error handling or block usage
    server_url: "",
    api_token: ENV["GITHUB_TOKEN"],
    http_method: "GET",
    path: "/repos/:owner/:repo/readme",
    error_handlers: {
      404 => proc do |result|
        UI.message("Something went wrong - I couldn't find it...")
      '*' => proc do |result|
        UI.message("Handle all error codes other than 404")
  ) do |result|
    UI.message("JSON returned: #{result[:json]}")


Key Description Default
server_url The server url. e.g. '' (Default: '')
api_token Personal API Token for GitHub - generate one at *
api_bearer Use a Bearer authorization token. Usually generated by GitHub Apps, e.g. GitHub Actions GITHUB_TOKEN environment variable
http_method The HTTP method. e.g. GET / POST GET
body The request body in JSON or hash format {}
raw_body The request body taken verbatim instead of as JSON, useful for file uploads
path The endpoint path. e.g. '/repos/:owner/:repo/readme'
url The complete full url - used instead of path. e.g. ''
error_handlers Optional error handling hash based on status code, or pass '*' to handle all errors {}
headers Optional headers to apply {}
secure Optionally disable secure requests (ssl_verify_peer) true

* = default value is dependent on the user's system

Lane Variables

Actions can communicate with each other using a shared hash lane_context, that can be accessed in other actions, plugins or your lanes: lane_context[SharedValues:XYZ]. The github_api action generates the following Lane Variables:

SharedValue Description
SharedValues::GITHUB_API_STATUS_CODE The status code returned from the request
SharedValues::GITHUB_API_RESPONSE The full response body
SharedValues::GITHUB_API_JSON The parsed json returned from GitHub

To get more information check the Lanes documentation.


To show the documentation in your terminal, run

fastlane action github_api


It is recommended to add the above action into your Fastfile, however sometimes you might want to run one-offs. To do so, you can run the following command from your terminal

fastlane run github_api

To pass parameters, make use of the : symbol, for example

fastlane run github_api parameter1:"value1" parameter2:"value2"

It's important to note that the CLI supports primitive types like integers, floats, booleans, and strings. Arrays can be passed as a comma delimited string (e.g. param:"1,2,3"). Hashes are not currently supported.

It is recommended to add all fastlane actions you use to your Fastfile.

Source code

This action, just like the rest of fastlane, is fully open source, view the source code on GitHub

Back to actions