Exporting the Hasura GraphQL schema

Table of contents

If you need to share, introspect or export the GraphQL schema, you can use community tooling such as graphqurl, Apollo CLI, get-graphql-schema, etc.

Using graphqurl

For example, using graphqurl, you can get the schema as follows:

Run npm install -g graphqurl to install graphqurl. Then you can run the following commands to download the GraphQL schema:

# If the GraphQL engine is running at https://my-graphql-engine.com/v1/graphql,
# without an admin secret
gq https://my-graphql-engine.com/v1/graphql --introspect > schema.graphql

# If Hasura GraphQL engine is running with an admin secret
gq https://my-graphql-engine.com/v1/graphql -H "X-Hasura-Admin-Secret: adminsecretkey" --introspect > schema.graphql

By default, it downloads the schema in .graphql format. If you want it in JSON format, you can use an additional flag --format json:

# Getting the schema in .json format
gq https://my-graphql-engine.com/v1/graphql --introspect --format json > schema.json

Using Apollo CLI

Using Apollo CLI, you can get the schema as follows:

Run npm install -g apollo to install the Apollo CLI. You can then run the following command to download the GraphQL schema:

# If the GraphQL engine is running at https://my-graphql-engine.com/v1/graphql,
# without an admin secret
apollo schema:download --endpoint https://my-graphql-engine.com/v1/graphql

# If Hasura GraphQL engine is running with an admin secret
apollo schema:download --endpoint https://my-graphql-engine.com/v1/graphql --header "X-Hasura-Admin-Secret: adminsecretkey"

Note that apollo schema:download is an alias of the command apollo service:download.

By default, this downloads the schema to a file called schema.json. This command has no other output types.