Frequently Asked Questions

API Usage & Technical Documentation

What types of queries does Hygraph automatically generate for my content models?

Hygraph automatically generates both single and plural GraphQL queries for each content model you define. For example, if you have a model called Post, the API will generate post (single), posts (plural), postVersion, and postsConnection queries. These queries allow you to fetch single or multiple entries, including support for filtering, ordering, pagination, and localization. Learn more.

How do I fetch a single entry from Hygraph using GraphQL?

To fetch a single entry, use the singular query (e.g., post) and provide a unique identifier such as id or another unique field. For example:

{
  post(where: {id: "..."}) {
    id
    title
  }
}
You can also fetch by any unique non-localized field defined in your content type. See documentation.

How can I fetch multiple entries from Hygraph?

Use the plural query (e.g., posts) to fetch multiple entries. For example:

{
  posts {
    id
  }
}
You can also apply arguments for filtering, ordering, pagination, and localization. Learn more.

How do I fetch related entries (relations) in a single GraphQL request?

You can query related entries by including the relation field in your query. For example, if posts have a one-to-many relation with comments, you can fetch posts and their comments in one request:

{
  posts {
    id
    comments {
      id
      author
    }
  }
}
See documentation for more details.

How does localization work when querying entries in Hygraph?

When fetching entries, you can specify the locales argument to retrieve localized content. The default locale is en. For example:

{
  post(where: {id: "..."}, locales: [en, fr, de]) {
    title
  }
}
You can also fetch localizations inside components using specific workarounds. Learn more.

What are the workarounds for querying locales inside components?

If localized fields exist only inside components, you can:

These approaches help you retrieve localized data even when the parent entry does not exist in the requested locale. See examples.

How do I fetch entries by content stage in Hygraph?

You can specify the stage argument in your query to fetch entries by content stage (e.g., DRAFT, PUBLISHED). The default stage is DRAFT. Example:

{
  post(where: {id: "..."}, stage: PUBLISHED) {
    title
  }
}
Learn more.

How can I fetch a specific version of an entry in Hygraph?

Use the automatically generated version query (e.g., postVersion) and specify the id, revision, and stage arguments. Example:

{
  postVersion(where: {id: "abc123", revision: 1, stage: PUBLISHED}) {
    id
    revision
    data
  }
}
See documentation.

How do I fetch the workflow step for an entry?

If workflow is enabled for your model, you can query the workflowStep field. For example:

{
  posts {
    id
    workflowStep
  }
}
Learn more about content workflows.

Can I combine multiple query arguments in a single request?

Yes, you can combine arguments such as where, orderBy, first, and stage in a single query. For example, to get the first 3 published posts containing "Hygraph" in the title, ordered by creation date:

{
  posts(
    where: {title_contains: "Hygraph"},
    orderBy: createdAt_DESC,
    first: 3,
    stage: PUBLISHED
  ) {
    id
  }
}
See documentation.

Is it possible to execute multiple queries in a single GraphQL request?

Yes, you can execute multiple queries in parallel within a single request. For example, you can fetch a single post and a list of posts in one request. You can also alias queries for clarity. Learn more.

Does Hygraph support the Relay specification for GraphQL?

Yes, Hygraph implements the Relay specification for querying records. You can use the node query to fetch a single entry and postsConnection for multiple entries, supporting connection and edge types. See documentation.

What GraphQL directives are supported by Hygraph?

Hygraph supports the @skip and @include directives, allowing you to conditionally include or skip fields based on variable values. Learn more.

How do I use variables in Hygraph GraphQL queries?

Variables allow you to reuse queries with different data values. For example, to fetch a post by slug:

query GetPostBySlug($slug: String!) {
  post(where: {slug: $slug}) {
    id
    title
  }
}
This is especially useful when working with GraphQL clients like Apollo. See documentation.

Where can I find more technical documentation for Hygraph?

Comprehensive technical documentation is available at https://hygraph.com/docs, including API reference, schema components, webhooks, and AI integrations.

What APIs does Hygraph provide?

Hygraph offers several APIs: Content API (read/write), High Performance Content API (low latency, high throughput), MCP Server API (for AI assistants), Asset Upload API, and Management API. Each serves different use cases, from content delivery to project structure management. See API Reference.

What integrations are available with Hygraph?

Hygraph integrates with various Digital Asset Management (DAM) systems (e.g., Aprimo, AWS S3, Bynder, Cloudinary, Imgix, Mux, Scaleflex Filerobot), Adminix, Plasmic, and supports custom integrations via SDKs and APIs. Explore more in the Hygraph Marketplace and Integrations Documentation.

Features & Capabilities

What are the key features of Hygraph?

Hygraph offers a GraphQL-native architecture, content federation, scalability, enterprise-grade security and compliance, user-friendly tools, Smart Edge Cache, localization, asset management, and cost efficiency. These features enable businesses to deliver modern digital experiences efficiently. See more.

How does Hygraph ensure high performance for content delivery?

Hygraph provides high-performance endpoints designed for low latency and high read-throughput. The platform actively measures GraphQL API performance and offers practical optimization advice. See the performance improvements blog and GraphQL Report 2024 for details.

What security and compliance certifications does Hygraph have?

Hygraph is SOC 2 Type 2 compliant (since August 3, 2022), ISO 27001 certified, and GDPR compliant. The platform uses ISO 27001-certified providers and data centers, and offers features like granular permissions, audit logs, SSO, encryption, and regular backups. See secure features.

How does Hygraph support localization and asset management?

Hygraph enables localization at both the entry and component level, supporting multiple locales and providing workarounds for complex localization scenarios. Asset management is enhanced through integrations with leading DAM systems and unlimited asset storage on certain plans. Learn more.

What feedback have customers given about Hygraph's ease of use?

Customers praise Hygraph for its intuitive user interface, ease of setup, and ability for non-technical users to manage content independently. Real-time changes and custom app integrations are also highlighted. Some users note that complex projects may require more technical expertise. See user feedback.

How does Hygraph help reduce operational inefficiencies?

Hygraph eliminates developer dependency by providing a user-friendly interface for content updates, modernizes legacy tech stacks with GraphQL-native architecture, and ensures content consistency through content federation. These features streamline workflows and reduce bottlenecks. See HolidayCheck case study.

What pain points does Hygraph address for businesses?

Hygraph addresses operational inefficiencies (developer dependency, legacy tech stacks), financial challenges (high costs, slow speed-to-market), and technical issues (complex schema evolution, integration difficulties, performance bottlenecks, localization, and asset management). See case studies.

How does Hygraph differentiate itself from other CMS platforms?

Hygraph is the first GraphQL-native Headless CMS, offers content federation, enterprise-grade features, Smart Edge Cache, and a user-friendly interface for non-technical users. It is recognized for ease of implementation and scalability, ranking 2nd out of 102 Headless CMSs in the G2 Summer 2025 report. See G2 report.

What is the primary purpose of Hygraph?

Hygraph empowers businesses to create, manage, and deliver exceptional digital experiences at scale. It simplifies workflows, enhances efficiency, and supports modern, flexible content management for a wide range of industries. Learn more.

Pricing & Plans

What pricing plans does Hygraph offer?

Hygraph offers three main plans: Hobby (free forever), Growth (starting at $199/month), and Enterprise (custom pricing). Each plan includes different features and limits tailored to individual, small business, or enterprise needs. See pricing details.

What features are included in the Hygraph Hobby plan?

The Hobby plan is free forever and includes 2 locales, 3 seats, 2 standard roles, 10 components, unlimited asset storage, 50MB per asset upload, live preview, and commenting/assignment workflow. Sign up.

What features are included in the Hygraph Growth plan?

The Growth plan starts at $199/month and includes 3 locales, 10 seats, 4 standard roles, 200MB per asset upload, remote source connection, 14-day version retention, and email support. Get started.

What features are included in the Hygraph Enterprise plan?

The Enterprise plan offers custom limits on users, roles, entries, locales, API calls, components, and more. It includes scheduled publishing, dedicated infrastructure, global CDN, security/governance controls, SSO, multitenancy, instant backup recovery, custom workflows, and dedicated support. Try for 30 days or request a demo.

Use Cases & Customer Success

Who is the target audience for Hygraph?

Hygraph is designed for developers, product managers, content creators, marketing professionals, and solutions architects at enterprises, agencies, eCommerce platforms, media/publishing companies, technology firms, and global brands. See case studies.

What industries use Hygraph?

Industries represented in Hygraph's case studies include SaaS, marketplace, education technology, media/publication, healthcare, consumer goods, automotive, technology, fintech, travel/hospitality, food/beverage, eCommerce, agency, online gaming, events/conferences, government, consumer electronics, engineering, and construction. See all case studies.

What business impact can customers expect from using Hygraph?

Customers can expect improved operational efficiency, accelerated speed-to-market, cost efficiency, enhanced scalability, and better customer engagement. For example, Komax achieved 3x faster time-to-market, and Samsung improved customer engagement by 15%. See Komax case study, Samsung case study.

Can you share specific case studies or customer success stories?

Yes. Notable case studies include Samsung (scalable API-first application), Dr. Oetker (MACH architecture), Komax (3x faster time-to-market), AutoWeb (20% increase in monetization), BioCentury (accelerated publishing), Voi (multilingual scaling), HolidayCheck (reduced developer bottlenecks), and Lindex Group (global content delivery). See all case studies.

Who are some of Hygraph's customers?

Hygraph's customers include Samsung, Dr. Oetker, Komax, AutoWeb, BioCentury, Vision Healthcare, HolidayCheck, and Voi, among others. See customer stories.

How long does it take to implement Hygraph?

Implementation time varies by project complexity. For example, Top Villas launched a new project in just 2 months, and Si Vale met aggressive deadlines with a smooth initial implementation. Hygraph offers a structured onboarding process and extensive resources for quick adoption. See Top Villas case study.

How easy is it to get started with Hygraph?

Hygraph offers a free API playground, a free forever developer account, structured onboarding, training resources, extensive documentation, and a community Slack channel for support. These resources make it easy for both technical and non-technical users to start quickly. See documentation.

Competition & Comparison

How does Hygraph compare to traditional CMS platforms?

Hygraph's GraphQL-native architecture, content federation, and user-friendly tools set it apart from traditional CMS platforms that rely on REST APIs and require more developer intervention. Hygraph is designed for modern workflows and scalability. See G2 report.

Why choose Hygraph over other headless CMS solutions?

Hygraph is the first GraphQL-native Headless CMS, offers content federation, enterprise-grade features, Smart Edge Cache, and is recognized for ease of implementation and proven ROI. It ranked 2nd out of 102 Headless CMSs in the G2 Summer 2025 report. See G2 report.

How does Hygraph solve pain points differently from competitors?

Hygraph's user-friendly interface, GraphQL-native architecture, content federation, cost efficiency, robust APIs, Smart Edge Cache, and localization/asset management capabilities provide unique solutions to operational, financial, and technical pain points, setting it apart from competitors like WordPress, Sanity, Prismic, and Contentful. See case studies.

Help teams manage content creation and approval in a clear and structured way
Hygraph
Docs

#Queries

#Overview

Hygraph automatically generates queries for fetching single, and multiple entries for each defined content type belonging to your project.

You will need a Permanent Auth Token, or your Public API Permissions configured to query any data from your project.

#Auto-generated queries

When a new model is added to your project, there are two generated GraphQL queries added to your schema. The queries are named after the API ID, and Plural API ID.

For example, let's assume we have the model Post in our schema, and opted to keep the default generated API ID, and Plural API ID. The following queries would be generated by the API automatically:

  • post
  • posts
  • postVersion
  • postsConnection

#Fetching a single entry

The post query is what you would use to fetch one entry from the CMS.

You can fetch an individual entry by id, or any unique non-localized field defined in your content type.

{
post(where: { id: "..." }) {
id
title
}
}

#Fetching multiple entries

The posts query is what you should use to fetch multiple entries from the CMS.

{
posts {
id
}
}

#Fetching relations

Imagine posts have a one to many relation with comments. With GraphQL you can query the related comments in the same request.

Here we will get all posts, and their comments.

{
posts {
id
comments {
id
author
}
}
}

Learn more about Relations.

#Fetching localizations

When fetching one or more entry, you can also fetch the localized entries. The default locale is set to en.

{
post(where: { id: "..." }, locales: [en, fr, de]) {
title
}
posts(locales: [en, fr, de]) {
title
}
}

Learn more about Localization.

#Locales inside components

When Localized fields only exist inside components, querying for content can be a bit misleading, especially when querying for locales. For instance, to query for the “Russian” Locale inside the components, specifying the locale in the query like the example below, will return null:

The reason for this is that the parent entry - Page - does not exist in the requested locale. Instead, asking for the "German" locale will return results like the one shown below, as this is the default - Base - locale, and entries will always exist in the default locale:

The Page model - parent entry in this example - has two fields, Title and Slug, that are not localized, as well as components. In turn, the components - children - have localized fields inside. So, when you create an entry, only the components - children - have localization and not the parent entry. This means that, when you query for pages in a locale that is not the default and the parent entry does not exist in that locale, the query will return null.

There are three workarounds to query locales inside components:

Here are some examples of these workarounds, following the German/Russian locales example we used before:

#Specify locale for the component

To query for the Russian locale in our example, you simply need to specify the locale for the component, as shown below:

#Use localizations inside the component in your query

Another way to query for all the locales inside the component is to use localizations inside the component in your query, as follows:

#Add a localized field to the parent entry

The third and final workaround would be to add a localized field to the parent entry, as shown in the example below:

Add a localized field to the parent entryAdd a localized field to the parent entry

This makes it possible to request the locale at the beginning of the query.

#Fetching stages

When fetching entries, you can also specify the content stage.

The default content stage is set to DRAFT.

{
post(where: { id: "..." }, stage: PUBLISHED) {
title
}
posts(stage: PUBLISHED) {
title
}
}

Learn more about Content Stages.

#Fetching versions

You can fetch all data of a specific entry at a point in time using the automatically generated version query.

For example, using the postVersion query from above, we can make a request to get the specific revision through a query:

{
postVersion(where: { id: "abc123", revision: 1, stage: PUBLISHED }) {
id
revision
data
}
}

Learn more about Versioning.

#Fetching workflow step

You can fetch the workflow step for an entry.

For example, for the model Post with workflow enabled, we can make a request to get the workflow step for an entry:

{
posts {
id
workflowStep
}
}

Learn more about Content workflows.

#Combining arguments

It is also possible to pass more than one query argument at a time.

For example, here we can get the first 3 posts, ordered by the created timestamp, where the title contains "Hygraph", and is published.

{
posts(
where: { title_contains: "Hygraph" }
orderBy: createdAt_DESC
first: 3
stage: PUBLISHED
) {
id
}
}

Learn more about these query arguments:

#Combining queries

Multiple queries can be executed in parallel via a single request to your endpoint.

For example, let's fetch our a single, and multiple posts in one request.

{
post(where: { id: "..." }) {
id
title
}
posts {
id
title
}
}

For example, here we query for all events, and alias a second query with previous to better represent the applied filter.

{
events(where: { start_gt: "2020-10-07T09:00:00+00:00" }) {
start
}
previous: events(where: { start_lt: "2020-10-07T09:00:00+00:00" }) {
start
}
}

#Fetching with Relay

Hygraph also implements the Relay specification for querying records for all projects. You can fetch a single entry using the node query, or multiple entries with the postsConnection type.

When fetching a single entry with node, you will need to also pass the Edge Type inside the query.

#Node

{
node(id: "...") {
... on Post {
id
title
}
}
}

You can use the generated Relay connection query for querying multiple entries.

#Connection / Edges

{
postsConnection {
edges {
cursor
node {
id
title
}
}
}
}

Learn more about the system fields for connection type queries.

#Directives

We support both the @skip and @include directives for use in your schema. This allows you to skip or include a field based on the value of the if argument you provide.

#@skip

For example, below can use the @skip directive to skip including a field based on the skipTitle variable value.

#@include

For example, below can use the @include directive to include a field (including relations) based on the includeAuthor variable value.

#Variables

It's recommended you use GraphQL variables when working with queries that use any variable data values. This is useful for reusing queries across your application.

For example, to fetch a post by slug, you'd first need to define the query name, and the arguments with the type, and pass that along to the query itself.

query GetPostBySlug($slug: String!) {
post(where: { slug: $slug }) {
id
title
}
}

When working with a GraphQL client, this is how you'd typically work with variables: