> ## Documentation Index
> Fetch the complete documentation index at: https://www.mintlify.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# GraphQL setup

> Generate reference pages for your GraphQL API from a schema definition file, with linked types and example queries, mutations, and responses.

## Add a GraphQL schema

To create pages for your GraphQL API, you need a valid GraphQL schema in SDL (Schema Definition Language) format. Store the schema in your documentation repository or host it at an HTTPS URL that Mintlify can fetch.

```graphql schema.graphql theme={null}
"An object with a stable identifier."
interface Node {
  id: ID!
}

type Organization implements Node {
  id: ID!
  name: String!
}

type Query {
  organization(id: ID!): Organization
}
```

## Auto-populate GraphQL pages

To automatically generate pages for every query, mutation, and type in your schema, add a `graphql` property to a tab in your `docs.json`. Mintlify parses the schema and creates a page for each operation and named type.

<CodeGroup>
  ```json Local file theme={null}
  "navigation": {
    "tabs": [
      {
        "tab": "GraphQL API",
        "graphql": "schema.graphql"
      }
    ]
  }
  ```

  ```json Remote URL theme={null}
  "navigation": {
    "tabs": [
      {
        "tab": "GraphQL API",
        "graphql": "https://example.com/schema.graphql"
      }
    ]
  }
  ```

  ```json Custom directory theme={null}
  "navigation": {
    "tabs": [
      {
        "tab": "GraphQL API",
        "graphql": {
          "source": "schema.graphql",
          "directory": "api/graphql"
        }
      }
    ]
  }
  ```
</CodeGroup>

The `graphql` property accepts either a string (a local path or HTTPS URL) or an object with the following fields.

<Note>
  You must declare `graphql` on a [tab](/docs/organize/navigation#tabs). A tab with `graphql` may include `groups`, but no other navigation structures, such as `pages`, `versions`, or `languages`. It also cannot include an `openapi` or `asyncapi` property.
</Note>

<ParamField path="source" type="string" required>
  A local path to an SDL file in your documentation repository or an HTTPS URL to a hosted SDL file. Does not accept HTTP URLs.
</ParamField>

<ParamField path="directory" type="string">
  The directory to store generated pages. Defaults to `graphql-reference`.
</ParamField>

## Generated pages

Mintlify organizes generated pages into three sections under the tab you configured:

* **Queries**: One page per field on your `Query` root type.
* **Mutations**: One page per field on your `Mutation` root type.
* **Types**: One page per named object, input, enum, interface, union, or scalar type.

Each operation page shows the field description, arguments, return type, and links to any referenced types. Query and mutation pages also include a generated example operation, the required variables, and a sample JSON response.

Type pages render the schema definition read-only, with linked field types so readers can navigate the graph.

## Deprecations

Fields and arguments that you mark with `@deprecated` in your schema display as deprecated on the generated pages. If you provide a deprecation reason, it appears next to the field.

## Update your documentation

Mintlify regenerates GraphQL reference pages when you run `mint dev` or when you push changes to your documentation repository. If your schema is hosted at an HTTPS URL, updates to the schema regenerate on the next build.


## Related topics

- [SEO](/docs/optimize/seo.md)
- [GitHub](/docs/deploy/github.md)
- [Host docs at a subpath](/docs/deploy/docs-subpath.md)
