# Inicio rápido para GitHub API REST

Obtén información sobre cómo empezar con la API de REST de GitHub.

## Introducción

En este artículo se describe cómo empezar a usar rápidamente la API de REST de GitHub mediante GitHub CLI, JavaScript o `curl`. Para ver una guía más detallada, consulta [Introducción a la API REST](/es/rest/guides/getting-started-with-the-rest-api).

<div class="ghd-tool cli">

## Usar GitHub CLI en la línea de comandos

GitHub CLI es la forma más sencilla de utilizar la API de REST de GitHub desde la línea de comandos.

1. Instale GitHub CLI en macOS, Windows o Linux. Para obtener más información, consulte [Instalación](https://github.com/cli/cli?ref_product=cli\&ref_type=engagement\&ref_style=text#installation) en el repositorio de GitHub CLI.

2. Para autenticarte en GitHub, ejecuta el siguiente comando desde el terminal.

   ```shell
   gh auth login
   ```

3. Selecciona dónde deseas autenticarte:

   * Si accedes a GitHub en GitHub.com, selecciona **GitHub.com**.
   * Si accedes a GitHub en un dominio diferente, selecciona **Other** y, a continuación, escribe tu nombre de host (por ejemplo: `octocorp.ghe.com`).

4. Sigue el resto de las instrucciones que aparecen en pantalla.

   GitHub CLI almacena automáticamente sus credenciales de Git automáticamente cuando elija HTTPS como su protocolo preferido para las operaciones de Git y responda “yes” cuando le pregunten si quiere autenticarse en Git con sus credenciales GitHub. Esto puede ser útil, ya que permite usar comandos Git como `git push` y `git pull` sin necesidad de configurar un administrador de credenciales independiente o usar SSH.

5. Realizar una solicitud con el subcomando `api` de GitHub CLI seguido de la ruta de acceso. Usa la marca `--method` o `-X` para especificar el método. Para obtener más información, consulta la [documentación de `api`GitHub CLI](https://cli.github.com/manual/gh_api).

   En este ejemplo se hace una solicitud al punto de conexión “Obtener Octocat”, que usa el método `GET` y la ruta de acceso `/octocat`. Para obtener la documentación de referencia completa de este punto de conexión, consulta [Puntos de conexión de la API de REST para metadatos](/es/rest/meta/meta#get-octocat).

   ```shell copy
   gh api /octocat --method GET
   ```

## Uso de GitHub CLI en GitHub Actions

También puedes usar GitHub CLI en los flujos de trabajo de GitHub Actions. Para más información, consulta [Uso de GitHub CLI en flujos de trabajo](/es/actions/using-workflows/using-github-cli-in-workflows).

### Autenticación con token de acceso

En lugar de usar el comando `gh auth login`, pasa el token de acceso como una variable de entorno denominada `GH_TOKEN`. GitHub recomienda autenticarse con el `GITHUB_TOKEN` integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza `GITHUB_TOKEN` en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre `GITHUB_TOKEN`, consulta [Uso de GITHUB\_TOKEN para la autenticación en flujos de trabajo](/es/actions/security-guides/automatic-token-authentication). Para obtener más información sobre secretos, consulta [Uso de secretos en Acciones de GitHub](/es/actions/security-guides/encrypted-secrets).

En el siguiente flujo de trabajo de ejemplo se usa el punto de conexión [Enumerar incidencias del repositorio](/es/rest/issues/issues#list-repository-issues) y se solicita una lista de incidencias en el repositorio `octocat/Spoon-Knife`.

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

### Autenticación con una GitHub App

Si está autenticando con un GitHub App, puedes crear un token de acceso de instalación en el flujo de trabajo:

1. Almacena el id. de tu GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza `APP_ID` por el nombre de la variable de configuración. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API. Para más información, consulta [Puntos de conexión de la API de REST para GitHub Apps](/es/rest/apps/apps#get-an-app). Para obtener más información sobre las variables de configuración, consulta [Almacenamiento de información en variables](/es/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de `-----BEGIN RSA PRIVATE KEY-----` y `-----END RSA PRIVATE KEY-----`). En el siguiente ejemplo, reemplaza `APP_PEM` por el nombre del secreto. Para más información, consulta [Administración de claves privadas para aplicaciones de GitHub](/es/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). Para obtener más información sobre secretos, consulta [Uso de secretos en Acciones de GitHub](/es/actions/security-guides/encrypted-secrets).
3. Agrega un paso para generar un token y use ese token en lugar de `GITHUB_TOKEN`. Ten en cuenta que este token expirará después de 60 minutos. Por ejemplo:

   ```yaml copy
   on:
     workflow_dispatch:
   jobs:
     track_pr:
       runs-on: ubuntu-latest
       steps:
         - name: Generate token
           id: generate-token
           uses: actions/create-github-app-token@v2
           with:
             app-id: ${{ vars.APP_ID }}
             private-key: ${{ secrets.APP_PEM }}
         - name: Use API
           env:
             GH_TOKEN: ${{ steps.generate-token.outputs.token }}
           run: |
             gh api https://api.github.com/repos/octocat/Spoon-Knife/issues
   ```

</div>

<div class="ghd-tool javascript">

## Uso de Octokit.js

Puedes usar Octokit.js para interactuar con la API de REST de GitHub en los scripts de JavaScript. Para obtener más información, consulta [Scripting con la API REST y JavaScript](/es/rest/guides/scripting-with-the-rest-api-and-javascript).

1. Creación de un token de acceso. Por ejemplo, cree un personal access token o un token de acceso de usuario GitHub App. Usarás este token para autenticar la solicitud, por lo que deberías concederle los ámbitos o permisos necesarios para acceder a ese punto de conexión. Para obtener más información, consulte [Autenticación en la API REST](/es/rest/overview/authenticating-to-the-rest-api) o [Identificar y autorizar usuarios para aplicaciones de GitHub](/es/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps).

   > \[!WARNING]
   > Trate el token de acceso igual que una contraseña.
   >
   > Para proteger el token, puedes almacenar el token como secreto y ejecutar el script a través de GitHub Actions. Para obtener más información, consulta la sección [Uso de Octokit.js en GitHub Actions](#using-octokitjs-in-github-actions).

   También puedes almacenar tu token como un secreto de Codespaces y ejecutar tu script en Codespaces. Para más información, consulta [Administración de secretos cifrados para *Codespaces*](/es/codespaces/managing-your-codespaces/managing-encrypted-secrets-for-your-codespaces).

   > Si estas opciones no son posibles, considere el uso de otro servicio de CLI para almacenar el token de forma segura.

2. Instalar `octokit`. Por ejemplo, `npm install octokit`. Para ver otras formas de instalar o cargar `octokit`, consulta [el archivo README de Octokit.js](https://github.com/octokit/octokit.js/#readme).

3. Importar`octokit` en tu script. Por ejemplo, `import { Octokit } from "octokit";`. Para obtener otras formas de importar `octokit`, consulta [el archivo README de Octokit.js](https://github.com/octokit/octokit.js/#readme).

4. Cree una instancia de `Octokit` con el token. Reemplace `YOUR-TOKEN` por el token.

   ```javascript copy
   const octokit = new Octokit({ 
     auth: 'YOUR-TOKEN'
   });
   ```

5. Usa `octokit.request` para ejecutar la solicitud. Envía el método HTTP y la ruta de acceso como primer argumento. Especifica cualquier parámetro de ruta, consulta y cuerpo en un objeto como segundo argumento. Para más información sobre los parámetros de consulta, consulta [Introducción a la API REST](/es/rest/guides/getting-started-with-the-rest-api#using-parameters).

   Por ejemplo, en la siguiente solicitud, el método HTTP es `GET`, la ruta de acceso es `/repos/{owner}/{repo}/issues`, los parámetros son `owner: "octocat"` y `repo: "Spoon-Knife"`.

   ```javascript copy
   await octokit.request("GET /repos/{owner}/{repo}/issues", {
     owner: "octocat",
     repo: "Spoon-Knife",
   });
   ```

## Uso de Octokit.js en GitHub Actions

También puedes ejecutar los scripts de JavaScript en los flujos de trabajo de GitHub Actions. Para más información, consulta [Sintaxis del flujo de trabajo para Acciones de GitHub](/es/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun).

### Autenticación con token de acceso

GitHub recomienda autenticarse con el `GITHUB_TOKEN` integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza `GITHUB_TOKEN` en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre `GITHUB_TOKEN`, consulta [Uso de GITHUB\_TOKEN para la autenticación en flujos de trabajo](/es/actions/security-guides/automatic-token-authentication). Para obtener más información sobre secretos, consulta [Uso de secretos en Acciones de GitHub](/es/actions/security-guides/encrypted-secrets).

Observa el siguiente flujo de trabajo de ejemplo:

1. Comprueba el contenido del repositorio
2. Configura Node.js
3. Instala `octokit`
4. Almacena el valor de `GITHUB_TOKEN` como una variable de entorno denominada `TOKEN` y ejecuta `.github/actions-scripts/use-the-api.mjs`, que puede tener acceso a esa variable de entorno como `process.env.TOKEN`

```yaml
on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - name: Check out repo content
        uses: actions/checkout@v6

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '16.17.0'
          cache: npm

      - name: Install dependencies
        run: npm install octokit

      - name: Run script
        run: |
          node .github/actions-scripts/use-the-api.mjs
        env:
          TOKEN: ${{ secrets.GITHUB_TOKEN }}
```

A continuación se muestra un script JavaScript de ejemplo con la ruta de acceso al archivo `.github/actions-scripts/use-the-api.mjs`.

```javascript
import { Octokit } from "octokit"

const octokit = new Octokit({ 
  auth: process.env.TOKEN
});

try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });

  const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})

  console.log(titleAndAuthor)

} catch (error) {
  console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}
```

### Autenticación con una GitHub App

Si está autenticando con un GitHub App, puedes crear un token de acceso de instalación en el flujo de trabajo:

1. Almacena el id. de tu GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza `APP_ID` por el nombre de la variable de configuración. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API de la misma. Para más información, consulta [Puntos de conexión de la API de REST para GitHub Apps](/es/rest/apps/apps#get-an-app). Para obtener más información sobre las variables de configuración, consulta [Almacenamiento de información en variables](/es/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de `-----BEGIN RSA PRIVATE KEY-----` y `-----END RSA PRIVATE KEY-----`). En el siguiente ejemplo, reemplaza `APP_PEM` por el nombre del secreto. Para más información, consulta [Administración de claves privadas para aplicaciones de GitHub](/es/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). Para obtener más información sobre secretos, consulta [Uso de secretos en Acciones de GitHub](/es/actions/security-guides/encrypted-secrets).
3. Agrega un paso para generar un token y use ese token en lugar de `GITHUB_TOKEN`. Ten en cuenta que este token expirará después de 60 minutos. Por ejemplo:

   ```yaml
   on:
     workflow_dispatch:
   jobs:
     use_api_via_script:
       runs-on: ubuntu-latest
       steps:
         - name: Check out repo content
           uses: actions/checkout@v6

         - name: Setup Node
           uses: actions/setup-node@v4
           with:
             node-version: '16.17.0'
             cache: npm

         - name: Install dependencies
           run: npm install octokit

         - name: Generate token
           id: generate-token
           uses: actions/create-github-app-token@v2
           with:
             app-id: ${{ vars.APP_ID }}
             private-key: ${{ secrets.APP_PEM }}

         - name: Run script
           run: |
             node .github/actions-scripts/use-the-api.mjs
           env:
             TOKEN: ${{ steps.generate-token.outputs.token }}

   ```

</div>

<div class="ghd-tool curl">

## Uso de `curl` en la línea de comandos

> \[!NOTE]
> Si quieres realizar solicitudes de API desde la línea de comandos, GitHub recomienda usar GitHub CLI, lo que simplifica la autenticación y las solicitudes. Para obtener más información sobre cómo empezar a trabajar con la API de REST con GitHub CLI, consulta la versión de GitHub CLI de este artículo.

1. Instala `curl` si aún no está instalado en la máquina. Para comprobar si `curl` está instalado, ejecuta `curl --version` en la línea de comandos. Si la salida es información sobre la versión de `curl`, significa que `curl` está instalado. Si recibes un mensaje similar a `command not found: curl`, debes descargar e instalar `curl`. Para más información, consulta [la página de descarga del proyecto curl](https://curl.se/download.html).

2. Creación de un token de acceso. Por ejemplo, cree un personal access token o un token de acceso de usuario GitHub App. Usarás este token para autenticar la solicitud, por lo que deberías concederle los ámbitos o permisos necesarios para acceder al punto de conexión. Para más información, consulta [Autenticación en la API REST](/es/rest/overview/authenticating-to-the-rest-api).

   > \[!WARNING]
   > Trate el token de acceso igual que una contraseña.
   >
   > Para mantener el token seguro, puedes almacenar el token como un secreto de Codespaces y usar la línea de comandos a través de Codespaces. Para más información, consulta [Administración de secretos cifrados para *Codespaces*](/es/codespaces/managing-your-codespaces/managing-encrypted-secrets-for-your-codespaces).

   > También puedes usar GitHub CLI en lugar de `curl`. GitHub CLI se encargará de la autenticación. Para obtener más información, consulta la versión de GitHub CLI de esta página.
   >
   > Si estas opciones no son posibles, considere el uso de otro servicio de CLI para almacenar el token de forma segura.

3. Usa el comando `curl` para realizar la solicitud. Pase el token en un encabezado `Authorization`. Reemplaza `YOUR-TOKEN` por el token.

   ```shell copy
   curl --request GET \
   --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
   --header "Accept: application/vnd.github+json" \
   --header "Authorization: Bearer YOUR-TOKEN"
   ```

   > \[!NOTE]
   > En la mayoría de los casos, puedes usar `Authorization: Bearer` o `Authorization: token` para pasar un token. Sin embargo, si vas a pasar un token web JSON (JWT), debes usar `Authorization: Bearer`.

## Uso de comandos `curl` en GitHub Actions

También puedes utilizar comandos `curl` en tus flujos de trabajo de GitHub Actions.

### Autenticación con token de acceso

GitHub recomienda autenticarse con el `GITHUB_TOKEN` integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza `GITHUB_TOKEN` en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre `GITHUB_TOKEN`, consulta [Uso de GITHUB\_TOKEN para la autenticación en flujos de trabajo](/es/actions/security-guides/automatic-token-authentication). Para obtener más información sobre secretos, consulta [Uso de secretos en Acciones de GitHub](/es/actions/security-guides/encrypted-secrets).

```yaml copy
on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          curl --request GET \
          --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
          --header "Accept: application/vnd.github+json" \
          --header "Authorization: Bearer $GH_TOKEN"
```

### Autenticación con una GitHub App

Si está autenticando con un GitHub App, puedes crear un token de acceso de instalación en el flujo de trabajo:

1. Almacena el id. de tu GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza `APP_ID` por el nombre de la variable de configuración. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API de la misma. Para más información, consulta [Puntos de conexión de la API de REST para GitHub Apps](/es/rest/apps/apps#get-an-app). Para obtener más información sobre las variables de configuración, consulta [Almacenamiento de información en variables](/es/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
2. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de `-----BEGIN RSA PRIVATE KEY-----` y `-----END RSA PRIVATE KEY-----`). En el siguiente ejemplo, reemplaza `APP_PEM` por el nombre del secreto. Para más información, consulta [Administración de claves privadas para aplicaciones de GitHub](/es/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). Para obtener más información sobre cómo almacenar secretos, consulta [Uso de secretos en Acciones de GitHub](/es/actions/security-guides/encrypted-secrets).
3. Agrega un paso para generar un token y use ese token en lugar de `GITHUB_TOKEN`. Ten en cuenta que este token expirará después de 60 minutos. Por ejemplo:

   ```yaml copy
   on:
     workflow_dispatch:
   jobs:
     use_api:
       runs-on: ubuntu-latest
       steps:
         - name: Generate token
           id: generate-token
           uses: actions/create-github-app-token@v2
           with:
             app-id: ${{ vars.APP_ID }}
             private-key: ${{ secrets.APP_PEM }}

         - name: Use API
           env:
             GH_TOKEN: ${{ steps.generate-token.outputs.token }}
           run: |
             curl --request GET \
             --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
             --header "Accept: application/vnd.github+json" \
             --header "Authorization: Bearer $GH_TOKEN"

   ```

</div>

## Pasos siguientes

Para obtener más información, consulta [Introducción a la API REST](/es/rest/guides/getting-started-with-the-rest-api).