# GitHub GraphQL API documentation

To create integrations, retrieve data, and automate your workflows, use the GitHub GraphQL API. The GitHub GraphQL API offers more precise and flexible queries than the GitHub REST API.

## Recommended

* [About the GraphQL API](/en/graphql/overview/about-the-graphql-api)

  The GitHub GraphQL API offers flexibility and the ability to define precisely the data you want to fetch.

* [Introduction to GraphQL](/en/graphql/guides/introduction-to-graphql)

  Learn useful terminology and concepts for using the GitHub GraphQL API.

* [Forming calls with GraphQL](/en/graphql/guides/forming-calls-with-graphql)

  Learn how to authenticate to the GraphQL API, then learn how to create and run queries and mutations.

* [Using pagination in the GraphQL API](/en/graphql/guides/using-pagination-in-the-graphql-api)

  Learn how to traverse data sets using cursor based pagination with the GraphQL API.

* [Migrating from REST to GraphQL](/en/graphql/guides/migrating-from-rest-to-graphql)

  Learn best practices and considerations for migrating from GitHub's REST API to GitHub's GraphQL API.

* [Rate limits and query limits for the GraphQL API](/en/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api)

  The GitHub GraphQL API has limitations in place to protect against excessive or abusive calls to GitHub's servers.

## Links

### Getting started

* [About the GraphQL API](/en/graphql/overview/about-the-graphql-api)

  The GitHub GraphQL API offers flexibility and the ability to define precisely the data you want to fetch.

* [Forming calls with GraphQL](/en/graphql/guides/forming-calls-with-graphql)

  Learn how to authenticate to the GraphQL API, then learn how to create and run queries and mutations.

## Articles

* [About the GraphQL API](/en/graphql/overview/about-the-graphql-api)

  The GitHub GraphQL API offers flexibility and the ability to define precisely the data you want to fetch.

* [Public schema](/en/graphql/overview/public-schema)

  Download the public schema for the GitHub GraphQL API.

* [Breaking changes](/en/graphql/overview/breaking-changes)

  Learn about recent and upcoming breaking changes to the GitHub GraphQL API.

* [Changelog](/en/graphql/overview/changelog)

  The GraphQL schema changelog is a list of recent and upcoming changes to our GraphQL API schema. It includes backwards-compatible changes and upcoming breaking changes.

* [Rate limits and query limits for the GraphQL API](/en/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api)

  The GitHub GraphQL API has limitations in place to protect against excessive or abusive calls to GitHub's servers.

* [Queries](/en/graphql/reference/queries)

  The query type defines GraphQL operations that retrieve data from the server.

* [Mutations](/en/graphql/reference/mutations)

  The mutation type defines GraphQL operations that change data on the server.

* [Objects](/en/graphql/reference/objects)

  Objects in GraphQL represent the resources you can access.

* [Interfaces](/en/graphql/reference/interfaces)

  Interfaces serve as parent objects from which other objects can inherit.

* [Enums](/en/graphql/reference/enums)

  Enums represent possible sets of values for a field.

* [Unions](/en/graphql/reference/unions)

  A union is a type of object representing many objects.

* [Input objects](/en/graphql/reference/input-objects)

  Input objects can be described as "composable objects" because they include a set of input fields that define the object.

* [Scalars](/en/graphql/reference/scalars)

  Scalars are primitive values Int, Float, String, Boolean, or ID.

* [Introduction to GraphQL](/en/graphql/guides/introduction-to-graphql)

  Learn useful terminology and concepts for using the GitHub GraphQL API.

* [Forming calls with GraphQL](/en/graphql/guides/forming-calls-with-graphql)

  Learn how to authenticate to the GraphQL API, then learn how to create and run queries and mutations.

* [Using global node IDs](/en/graphql/guides/using-global-node-ids)

  You can get global node IDs of objects via the REST API and use them in GraphQL operations.

* [Migrating from REST to GraphQL](/en/graphql/guides/migrating-from-rest-to-graphql)

  Learn best practices and considerations for migrating from GitHub's REST API to GitHub's GraphQL API.

* [Using GraphQL Clients](/en/graphql/guides/using-graphql-clients)

  You can run queries on real GitHub data using various GraphQL clients and libraries.

* [Using pagination in the GraphQL API](/en/graphql/guides/using-pagination-in-the-graphql-api)

  Learn how to traverse data sets using cursor based pagination with the GraphQL API.

* [Managing enterprise accounts](/en/managing-enterprise-accounts)

  You can manage your enterprise account and the organizations it owns with the GraphQL API.

* [Using the GraphQL API for Discussions](/en/graphql/guides/using-the-graphql-api-for-discussions)

  Learn how to use the GitHub Discussions GraphQL API.

* [Migrating GraphQL global node IDs](/en/graphql/guides/migrating-graphql-global-node-ids)

  Learn about the two global node ID formats and how to migrate from the legacy format to the new format.