Skip to main content

Quickstart for GitHub REST API

Learn how to get started with the GitHub REST API.

This article describes how to quickly get started with the GitHub REST API using GitHub CLI, JavaScript, or cURL. For a more detailed guide, see "Getting started with the REST API."

Getting started using GitHub CLI

Using GitHub CLI in the command line

GitHub CLI is the easiest way to use the GitHub REST API from the command line.

  1. Install GitHub CLI if you haven't installed it yet. For installation instructions, see the GitHub CLI repository.

  2. Use the auth login subcommand to authenticate to GitHub CLI. For more information, see the GitHub CLI auth login documentation.

    gh auth login
  3. Use the api subcommand to make your API request. For more information, see the GitHub CLI api documentation.

    gh api repos/octocat/Spoon-Knife/issues

Using GitHub CLI in GitHub Actions

You can also use GitHub CLI in your GitHub Actions workflows. For more information, see "Using GitHub CLI in workflows."

Instead of using the gh auth login command, pass an access token as an environment variable called GH_TOKEN. GitHub recommends that you use the built-in GITHUB_TOKEN instead of creating a token. If this is not possible, store your token as a secret and replace GITHUB_TOKEN in the example below with the name of your secret. For more information about GITHUB_TOKEN, see "Automatic token authentication." For more information about secrets, see "Encrypted secrets."

on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api repos/octocat/Spoon-Knife/issues

If you are authenticating with a GitHub App, you can create an installation access token within your workflow:

  1. Store your GitHub App's ID as a secret. In the following example, replace APP_ID with the name of the secret. You can find your app ID on the settings page for your app or through the App API. For more information, see "Apps." For more information about secrets, see "Encrypted secrets."
  2. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including -----BEGIN RSA PRIVATE KEY----- and -----END RSA PRIVATE KEY-----.) In the following example, replace APP_PEM with the name of the secret. For more information, see "Authenticating with GitHub Apps."
  3. Add a step to generate a token, and use that token instead of GITHUB_TOKEN. Note that this token will expire after 60 minutes. For example:
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

on:
  workflow_dispatch:
jobs:
  track_pr:
    runs-on: ubuntu-latest
    steps:
      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_PEM }}

      - name: Use API
        env:
          GH_TOKEN: ${{ steps.generate_token.outputs.token }}
        run: |
          gh api repos/octocat/Spoon-Knife/issues

Getting started using JavaScript

You can use Octokit.js to interact with the GitHub REST API in your JavaScript scripts. For more information, see the Octokit.js README.

Using Octokit.js

  1. Create an access token. For example, create a personal access token (PAT) or a GitHub App user-to-server access token. For more information, see "Creating a personal access token" or "Identifying and authorizing users for GitHub Apps."

    Warning: Treat your access token like a password.

    To keep your token secure, you can store your token as a secret and run your script through GitHub Actions. For more information, see the "Using Octokit.js in GitHub Actions" section.

    If these options are not possible, consider using another service such as the 1Password CLI to store your token securely.

  2. Install octokit. For example, npm install octokit. For other ways to install or load octokit, see the Octokit.js README.

  3. Import octokit in your script. For example, import { Octokit } from "octokit";. For other ways to import octokit, see the Octokit.js README.

  4. Create an instance of Octokit with your token. Replace YOUR-TOKEN with your token.

    const octokit = new Octokit({
      auth: 'YOUR-TOKEN'
    });
    
  5. Use octokit.request to execute your