---
title: graphql
---
{/* title can be removed in Nextra 4, since sidebar title will take from first h1 */}
# `graphql`
The `graphql` module exports a core subset of GraphQL functionality for creation
of GraphQL type systems and servers.
```js
import { graphql } from 'graphql'; // ES6
const { graphql } = require('graphql'); // CommonJS
```
## Overview
### Entry Point
<ul className="apiIndex">
<li>
<a href="#graphql">
`function graphql` Lexes, parses, validates, and executes a GraphQL
request on a schema.
</a>
</li>
</ul>
### Schema
<ul className="apiIndex">
<li>
<a href="../type/#graphqlschema">
`class GraphQLSchema` A representation of the capabilities of a GraphQL
Server.
</a>
</li>
</ul>
### Type Definitions
<ul className="apiIndex">
<li>
<a href="../type/#graphqlscalartype">
`class GraphQLScalarType` A scalar type within GraphQL.
</a>
</li>
<li>
<a href="../type/#graphqlobjecttype">
`class GraphQLObjectType` An object type within GraphQL that contains
fields.
</a>
</li>
<li>
<a href="../type/#graphqlinterfacetype">
`class GraphQLInterfaceType` An interface type within GraphQL that defines
fields implementations will contain.
</a>
</li>
<li>
<a href="../type/#graphqluniontype">
`class GraphQLUnionType` A union type within GraphQL that defines a list
of implementations.
</a>
</li>
<li>
<a href="../type/#graphqlenumtype">
`class GraphQLEnumType` An enum type within GraphQL that defines a list of
valid values.
</a>
</li>
<li>
<a href="../type/#graphqlinputobjecttype">
`class GraphQLInputObjectType` An input object type within GraphQL that
represents structured inputs.
</a>
</li>
<li>
<a href="../type/#graphqllist">
`class GraphQLList` A type wrapper around other types that represents a
list of those types.
</a>
</li>
<li>
<a href="../type/#graphqlnonnull">
`class GraphQLNonNull` A type wrapper around other types that represents a
non-null version of those types.
</a>
</li>
</ul>
### Scalars
<ul className="apiIndex">
<li>
<a href="../type/#graphqlint">
`const GraphQLInt` A scalar type representing integers.
</a>
</li>
<li>
<a href="../type/#graphqlfloat">
`const GraphQLFloat` A scalar type representing floats.
</a>
</li>
<li>
<a href="../type/#graphqlstring">
`const GraphQLString` A scalar type representing strings.
</a>
</li>
<li>
<a href="../type/#graphqlboolean">
`const GraphQLBoolean` A scalar type representing booleans.
</a>
</li>
<li>
<a href="../type/#graphqlid">
`const GraphQLID` A scalar type representing IDs.
</a>
</li>
</ul>
### Errors
<ul className="apiIndex">
<li>
<a href="../error/#formaterror">
`function formatError` Format an error according to the rules described by
the Response Format.
</a>
</li>
</ul>
## Entry Point
### `graphql`
```ts
function graphql(
schema: GraphQLSchema,
requestString: string,
rootValue?: any,
contextValue?: any,
variableValues?: { [key: string]: any },
operationName?: string,
): Promise<GraphQLResult>;
interface ExecutionResult<
TData = ObjMap<unknown>,
TExtensions = ObjMap<unknown>,
> {
errors?: ReadonlyArray<GraphQLError>;
data?: TData | null;
extensions?: TExtensions;
}
```
The `graphql` function lexes, parses, validates and executes a GraphQL request.
It requires a `schema` and a `requestString`. Optional arguments include a
`rootValue`, which will get passed as the root value to the executor, a `contextValue`,
which will get passed to all resolve functions,
`variableValues`, which will get passed to the executor to provide values for
any variables in `requestString`, and `operationName`, which allows the caller
to specify which operation in `requestString` will be run, in cases where
`requestString` contains multiple top-level operations.
## Schema
See the [Type System API Reference](/type#schema).
## Type Definitions
See the [Type System API Reference](/type#definitions).
## Scalars
See the [Type System API Reference](/type#scalars).
## Errors
See the [Errors API Reference](/error)