How do I add a custom remote source and field in Hygraph?
To add a custom remote source in Hygraph, navigate to the Schema builder and click '+Add' next to Remote sources. Enter details such as Display name (e.g., 'Third Party APIs'), Prefix, Type (select 'REST'), and Base URL (e.g., 'https://www.federatethis.com/api'). You can then add custom type definitions (e.g., Product, Products, ProductMeta) to map the remote data structure. After saving, you can add remote fields to your models or queries, specifying the remote source, method (GET), return type, and path. Note: You must have access to the external API and understand its schema. Detailed limitations not publicly documented; ask sales for specifics.
What is the difference between a top-level remote field and a model-level remote field in Hygraph?
A top-level remote field is added to the Query model and allows you to fetch data from an external API independently of your Hygraph models. A model-level remote field is attached to a specific model (e.g., ProductPage) and enables you to enrich your content entries with data from a remote source, often using a field like API ID to associate records. Note: Top-level remote fields are best for global data, while model-level fields are for entry-specific enrichment. Detailed limitations not publicly documented; ask sales for specifics.
How do I configure a remote source for Commercetools in Hygraph?
To configure a Commercetools remote source, you need a Commercetools account and project. In Hygraph's schema builder, click '+Add' next to Remote Sources, select 'Commercetools' as the type, and provide the Authorization URL, Scopes, Client ID, Client Secret, Display name, Prefix, Type (GraphQL), and Base URL (constructed from your Commercetools API URL and project key). Save the remote source to complete setup. Note: You must have valid Commercetools credentials and project access. Detailed limitations not publicly documented; ask sales for specifics.
How do I configure a remote source for Commercelayer in Hygraph?
To set up a Commercelayer remote source, obtain your credentials from the Commercelayer dashboard. In Hygraph, add a new remote source, select 'Commercelayer' as the type, and enter the Authorization URL (your base endpoint plus '/oauth/token'), Client ID, Display name, Prefix, Type (REST), and Base URL. Save the remote source to finish. Note: You must have a Commercelayer account and credentials. Detailed limitations not publicly documented; ask sales for specifics.
How can I use custom input types for remote fields in Hygraph?
You can define custom input types (e.g., for the GitHub API) by adding an input type in SDL (e.g., 'input githubInput { userId: String! }') to your remote source. When configuring a remote field, add an input argument and select your custom input type. This allows you to pass dynamic parameters (like userId) to the remote API when querying. Note: The input type must match the expected API parameters, and required fields must be supplied in queries. Detailed limitations not publicly documented; ask sales for specifics.
Features & Capabilities
What integrations does Hygraph support for remote data sources?
Hygraph supports integrations with a variety of remote data sources, including REST and GraphQL APIs. Examples include Commercetools, Commercelayer, GitHub, BigCommerce, and any custom REST API. You can configure these as remote sources and add remote fields to your models or queries to fetch and display external data within Hygraph. Note: Each integration may require specific credentials and setup steps. Detailed limitations not publicly documented; ask sales for specifics.
Can I enrich Hygraph content entries with external API data?
Yes, you can enrich Hygraph content entries by adding remote fields to your models. For example, you can associate a ProductPage entry with external product data and reviews by configuring remote fields that fetch data from APIs like 'Federate This'. This allows you to combine Hygraph-managed content with dynamic external data. Note: The association typically relies on a shared identifier (e.g., API ID). Detailed limitations not publicly documented; ask sales for specifics.
How do I test remote fields and sources in Hygraph?
You can test remote fields and sources using the API Playground in Hygraph. After configuring your remote source and adding remote fields, run queries to fetch data from both Hygraph and the external API. For example, you can query for productPages and include fields like productData and productReviews to verify the integration. Note: The external API must be available and return data as expected. Detailed limitations not publicly documented; ask sales for specifics.
Technical Requirements & Limitations
What are the prerequisites for integrating Commercetools or Commercelayer as remote sources?
For Commercetools, you need an active account, a configured project, and API client credentials (Authorization URL, Scopes, Client ID, Client Secret, API URL, and project key). For Commercelayer, you need an account and credentials (Base endpoint, Client ID). These are required to authenticate and connect Hygraph to the external platforms. Note: Missing or incorrect credentials will prevent integration. Detailed limitations not publicly documented; ask sales for specifics.
Are there any limitations when using remote fields in Hygraph?
Remote fields depend on the availability and structure of the external API. If the API changes or is unavailable, remote fields may not return data as expected. Additionally, required input arguments must be supplied in queries, and the data structure must match the custom type definitions in Hygraph. Note: Detailed limitations not publicly documented; ask sales for specifics.
Documentation & Support
Where can I find more technical documentation on remote sources and fields in Hygraph?
Comprehensive technical documentation is available at Hygraph Remote Data Examples and Remote Sources Guide. These resources provide step-by-step instructions, code samples, and integration guides for various remote sources and field configurations. Note: For advanced scenarios or troubleshooting, consult the official documentation or contact support.
In this video, Bryan uses Federate this - our collection of mock APIs and information for federated data sources in GraphQL - to show you how to add data from a remote API to your Hygraph project step-by-step.
After configuring our remote source, go to Schema > Query and add a top-level remote field, which will allow us to connect our products list as data directly in our API.
To add your remote field, click on REST from the right sidebar and use the following information:
Field
Input
Display name
Products
API ID
products
Remote source
Third Party APIs is selected by default. Leave it as it is
Method
GET is selected by default. Leave it as it is
Return type
Use the dropdown to select ProductMeta
Path
/products
Click Add at the bottom of the screen to create your remote field.
Would you like to check if it works?
Go to the API Playground and try out the following query:
Query
Response
If you run the query, it should return information on three sample products.
If we wanted to bring specific information into a Product model, we'd have to add a Remote Field into that model.
If you do not have a Product model yet, you can go to your Schema and click + Add next to Models and use the following information to create it:
Field
Input
Display name
ProductPage
API ID
productPage
Plural API ID
productsPages
Let's also add some fields to this model. We won't be adding price or any other information that is otherwise in out API. We will only add fields that we want to add to our data and that Editors will be able to work with.
We'll start with a single line text field that we'll use as a title:
Field
Input
Display name
Title
API ID
title
Use as title field
Select this checkbox
We'll add a slug field:
Field
Input
Display name
Slug
API ID
slug
Lowercase
Leave this checkbox selected
We'll add a Rich Text field:
Field
Input
Display name
Body
API ID
body
We need to associate the data in this model with the data that's in our API, and for that we'll add another single line text field, using the following information:
Field
Input
Display name
API ID
API ID
apiId
At this point we're ready to add our remote field. We'll scroll down the right sidebar and add a REST field using the following information:
Field
Input
Display name
Product data
API ID
productData
Remote source
Third Party APIs is selected by default. Leave it as it is
Method
GET is selected by default. Leave it as it is
Return type
Use the dropdown to select ProductMeta
Path
/product/{{doc.apiId}}
Click Add to save your remote field.
Let's create an entry for our ProductPage model. Navigate to Content editor > ProductPage and click + Add entry.
We'll use the following information:
Field
Input
Title
Product 1 with extra data
Slug
product-1
Body
Use the dropdown tos elect Heading 2 and write "This is a headline".
API ID
This is where we will write the API ID of our product. IN this example we'll write "1".
We'll click Save & publish and go to the API Playground to test this.
Let's run the following query:
Query
Response
This query brings all the information we just added in to the content entry that we created, which comes from Hygraph's data, and also includes the productData data, which comes from the API and is associated through the API ID field we added earlier.
Now imagine you also want to add your product reviews here. Federate this has sample reviews that we can use to try this. We'll go back into the schema builder and edit our remote source by adding 3 new custom type definitions.
In our remote source, we'll click on + Add new custom type definition. We'll do this three times, to add the following types:
Review
Reviews
ReviewMeta
Don't forget to click Save at the top-right of your screen to update your remote source.
Next, we're going to add this to our ProductPage model as a REST remote field. To do this, navigate to Schema builder > ProductPage, select the REST field from the right sidebar, and use the following information:
Field
Input
Display name
Product Reviews
API ID
productReviews
Remote source
Third Party APIs is selected by default. Leave it as it is
Method
GET is selected by default. Leave it as it is
Return type
Use the dropdown to select ReviewtMeta
Path
/reviews/product/{{doc.apiId}}
Click Add to save your remote field.
The way we have set this up allows for the product details and the reviews from that product to pull from a single API ID, which we included in the API ID field that we added to our schema earlier and to which we assigned a value in the sample entry we created.
Now we can go back to the API Playground to test this using the following query:
Query
Response
The response now contains the 3 sample reviews that were included in Federate This.
Before we start, there is some data we will need from your commercetools account:
Go to Settings > Developer settings > API clients. Click + Create new API client to create one from scratch, give it a name and select the scopes you need for your project.
In our example we will select the Project scope under Manage. Click Create API client at the top-right of the screen.
The resulting screen contains the information you will need to configure your remote source. Save it for later, and let's continue with the process.
Navigate to the schema builder and click +Add next to Remote Sources. Use the following information to configure your remote source:
Field
Input
Remote source type
Select Commercetools
Authorization URL
This is the Auth URL in the API client details view of your commercetools account. Instead of copying it directly from there, copy the URL on the first line of the cURL below. Paste that in the Authorization URL field of your Hygraph Remote Source.
Scopes
This is the Scope in the API client details view of your commercetools account. Copy it and paste it in Hygraph, then click + Add scope to add.
Client ID
This is the client_id key in the API client details view of your commercetools account. Copy it and paste it in Hygraph. This is like a username.
Client Secret
This is the secret key in the API client details view of your commercetools account. Copy it and paste it in Hygraph. This is like a password.
Display name
This is the display name of your Remote Source, we will write "Commercetools" here.
Prefix
Completing the display name autocompletes the prefix, you can leave it as is.
Type
Select GraphQL
Base URL
To form the base URL, you will use the API URL and the project_key from the API client details view of your commercetools account, like this: https://<COMMERCETOOLS_API_URL>/<PROJECT_KEY>/graphql.
Click Add Remote Source at the bottom of the screen to save your Remote Source.
Navigate to the schema builder and click +Add next to Remote Sources. Use the following information to configure your remote source:
Field
Input
Remote source type
Select Commercelayer
Authorization URL
Copy the Base endpoint in your Commercelayer credentials screen, paste it in Hygraph, and add /oauth/token at the end, like this: https://<YOUR_BASE_ENDPOINT>/oauth/token.
Scopes
We won't add anything here for this example.
Client ID
Copy the Client ID in your Commercelayer credentials screen and paste it here.
Client Secret
We won't add anything here for this example.
Display name
This is the display name of your Remote Source, we will write "Commercelayer" here.
Prefix
Completing the display name autocompletes the prefix, you can leave it as is.
Type
Select REST
Base URL
Copy the Base endpoint in your Commercelayer credentials screen and paste it here.
Click Add Remote Source at the bottom of the screen to save your Remote Source.
In this example, we will see how we can define and use a custom input type on a Remote Field. We will be using the Github REST API, specifically the usersendpoint.
We'll first add the Github API as a Remote Source and configure the right custom (input) types.
Set up a new remote source. If you don't know how to do this, please check out our documentation, using [https://api.github.com](https://api.github.com) as the base URL, then add a custom type with the following SDL:
typeUser{
avatar_url:String
bio:String
blog:String
company:String
created_at:DateTime
email:String
events_url:String
followers:Int
followers_url:String
following:Int
following_url:String
gists_url:String
gravatar_id:String
hireable:Boolean
html_url:String
id:Int
location:String
login:String
name:String
node_id:String
organizations_url:String
public_gists:Int
public_repos:Int
received_events_url:String
repos_url:String
site_admin:Boolean
starred_url:String
subscriptions_url:String
twitter_username:String
type:String
updated_at:DateTime
url:String
}
Also add a custom input type with the following SDL:
In an appropriate model, set up a REST Remote Field. In this example, we will use a model called Author and set up the Remote Field with apiId githubUserDetails. In the Remote Field config, add an input argument and select the input type to be the previously created githubInput. In the example, we will use the auto-generated API ID githubInput for the input arguments. We'll also set the field to be required since we will make the path depend on the input value.
Example - Input argument
Now configure the Remote Field's path to use the input argument. You can use the autocomplete feature in the handlebars notation for this.
Make sure there is at least one entry for the selected model, and then head over to the API Playground. The input argument can now be used in a query in the following way:
Please note that since we've made the userId parameter required in the custom input type (by adding a ! at the end), there will be an error if we don't supply the value properly.
This example shows a product content entry that fetches the product catalog from a Remote Source.
Besides the data that lives in Hygraph inside a regular model called Product - Product name, product description, etc - you can fetch a product catalog from an external API through a remote source that you added to the Product model as a Remote Field.
Remote Field example
Requests will return information in Hygraph - Product model - as well as information in the Remote Source, called myCatalogue in our Product model for this example.
Query
Response
The frontend could then use this information received through the Hygraph Content API to display the product page enriched with the product catalog.
This example uses Top-level Remote Fields to show us a product information content entry that fetches the product catalogue from an external API, unrelated to Hygraph.
Besides the data that lives in Hygraph inside a regular model called Product information - Slug, Title, Description - you can fetch a product catalogue from an external API through a Remote Source that you add to the Query model as a Remote Field.
Top-level Remote Field example
Requests will return information in Hygraph - Product model- as well as information in the Remote Source, called fieldremoteproduct in our Query model for this example.
Query
Response
The frontend could then use this information received through the Hygraph Content API to display the product page along with a product catalogue sourced from an external API.
This video tutorial covers adding a remote source to Hygraph and creating Top-Level Remote Fields to pull in data from the external e-commerce platform, BigCommerce.
In this video, Bryan uses Federate this - our collection of mock APIs and information for federated data sources in GraphQL - to show you how to add data from a remote API to your Hygraph project step-by-step.
After configuring our remote source, go to Schema > Query and add a top-level remote field, which will allow us to connect our products list as data directly in our API.
To add your remote field, click on REST from the right sidebar and use the following information:
Field
Input
Display name
Products
API ID
products
Remote source
Third Party APIs is selected by default. Leave it as it is
Method
GET is selected by default. Leave it as it is
Return type
Use the dropdown to select ProductMeta
Path
/products
Click Add at the bottom of the screen to create your remote field.
Would you like to check if it works?
Go to the API Playground and try out the following query:
Query
Response
If you run the query, it should return information on three sample products.
If we wanted to bring specific information into a Product model, we'd have to add a Remote Field into that model.
If you do not have a Product model yet, you can go to your Schema and click + Add next to Models and use the following information to create it:
Field
Input
Display name
ProductPage
API ID
productPage
Plural API ID
productsPages
Let's also add some fields to this model. We won't be adding price or any other information that is otherwise in out API. We will only add fields that we want to add to our data and that Editors will be able to work with.
We'll start with a single line text field that we'll use as a title:
Field
Input
Display name
Title
API ID
title
Use as title field
Select this checkbox
We'll add a slug field:
Field
Input
Display name
Slug
API ID
slug
Lowercase
Leave this checkbox selected
We'll add a Rich Text field:
Field
Input
Display name
Body
API ID
body
We need to associate the data in this model with the data that's in our API, and for that we'll add another single line text field, using the following information:
Field
Input
Display name
API ID
API ID
apiId
At this point we're ready to add our remote field. We'll scroll down the right sidebar and add a REST field using the following information:
Field
Input
Display name
Product data
API ID
productData
Remote source
Third Party APIs is selected by default. Leave it as it is
Method
GET is selected by default. Leave it as it is
Return type
Use the dropdown to select ProductMeta
Path
/product/{{doc.apiId}}
Click Add to save your remote field.
Let's create an entry for our ProductPage model. Navigate to Content editor > ProductPage and click + Add entry.
We'll use the following information:
Field
Input
Title
Product 1 with extra data
Slug
product-1
Body
Use the dropdown tos elect Heading 2 and write "This is a headline".
API ID
This is where we will write the API ID of our product. IN this example we'll write "1".
We'll click Save & publish and go to the API Playground to test this.
Let's run the following query:
Query
Response
This query brings all the information we just added in to the content entry that we created, which comes from Hygraph's data, and also includes the productData data, which comes from the API and is associated through the API ID field we added earlier.
Now imagine you also want to add your product reviews here. Federate this has sample reviews that we can use to try this. We'll go back into the schema builder and edit our remote source by adding 3 new custom type definitions.
In our remote source, we'll click on + Add new custom type definition. We'll do this three times, to add the following types:
Review
Reviews
ReviewMeta
Don't forget to click Save at the top-right of your screen to update your remote source.
Next, we're going to add this to our ProductPage model as a REST remote field. To do this, navigate to Schema builder > ProductPage, select the REST field from the right sidebar, and use the following information:
Field
Input
Display name
Product Reviews
API ID
productReviews
Remote source
Third Party APIs is selected by default. Leave it as it is
Method
GET is selected by default. Leave it as it is
Return type
Use the dropdown to select ReviewtMeta
Path
/reviews/product/{{doc.apiId}}
Click Add to save your remote field.
The way we have set this up allows for the product details and the reviews from that product to pull from a single API ID, which we included in the API ID field that we added to our schema earlier and to which we assigned a value in the sample entry we created.
Now we can go back to the API Playground to test this using the following query:
Query
Response
The response now contains the 3 sample reviews that were included in Federate This.
Before we start, there is some data we will need from your commercetools account:
Go to Settings > Developer settings > API clients. Click + Create new API client to create one from scratch, give it a name and select the scopes you need for your project.
In our example we will select the Project scope under Manage. Click Create API client at the top-right of the screen.
The resulting screen contains the information you will need to configure your remote source. Save it for later, and let's continue with the process.
Navigate to the schema builder and click +Add next to Remote Sources. Use the following information to configure your remote source:
Field
Input
Remote source type
Select Commercetools
Authorization URL
This is the Auth URL in the API client details view of your commercetools account. Instead of copying it directly from there, copy the URL on the first line of the cURL below. Paste that in the Authorization URL field of your Hygraph Remote Source.
Scopes
This is the Scope in the API client details view of your commercetools account. Copy it and paste it in Hygraph, then click + Add scope to add.
Client ID
This is the client_id key in the API client details view of your commercetools account. Copy it and paste it in Hygraph. This is like a username.
Client Secret
This is the secret key in the API client details view of your commercetools account. Copy it and paste it in Hygraph. This is like a password.
Display name
This is the display name of your Remote Source, we will write "Commercetools" here.
Prefix
Completing the display name autocompletes the prefix, you can leave it as is.
Type
Select GraphQL
Base URL
To form the base URL, you will use the API URL and the project_key from the API client details view of your commercetools account, like this: https://<COMMERCETOOLS_API_URL>/<PROJECT_KEY>/graphql.
Click Add Remote Source at the bottom of the screen to save your Remote Source.
Navigate to the schema builder and click +Add next to Remote Sources. Use the following information to configure your remote source:
Field
Input
Remote source type
Select Commercelayer
Authorization URL
Copy the Base endpoint in your Commercelayer credentials screen, paste it in Hygraph, and add /oauth/token at the end, like this: https://<YOUR_BASE_ENDPOINT>/oauth/token.
Scopes
We won't add anything here for this example.
Client ID
Copy the Client ID in your Commercelayer credentials screen and paste it here.
Client Secret
We won't add anything here for this example.
Display name
This is the display name of your Remote Source, we will write "Commercelayer" here.
Prefix
Completing the display name autocompletes the prefix, you can leave it as is.
Type
Select REST
Base URL
Copy the Base endpoint in your Commercelayer credentials screen and paste it here.
Click Add Remote Source at the bottom of the screen to save your Remote Source.
In this example, we will see how we can define and use a custom input type on a Remote Field. We will be using the Github REST API, specifically the usersendpoint.
We'll first add the Github API as a Remote Source and configure the right custom (input) types.
Set up a new remote source. If you don't know how to do this, please check out our documentation, using [https://api.github.com](https://api.github.com) as the base URL, then add a custom type with the following SDL:
typeUser{
avatar_url:String
bio:String
blog:String
company:String
created_at:DateTime
email:String
events_url:String
followers:Int
followers_url:String
following:Int
following_url:String
gists_url:String
gravatar_id:String
hireable:Boolean
html_url:String
id:Int
location:String
login:String
name:String
node_id:String
organizations_url:String
public_gists:Int
public_repos:Int
received_events_url:String
repos_url:String
site_admin:Boolean
starred_url:String
subscriptions_url:String
twitter_username:String
type:String
updated_at:DateTime
url:String
}
Also add a custom input type with the following SDL:
In an appropriate model, set up a REST Remote Field. In this example, we will use a model called Author and set up the Remote Field with apiId githubUserDetails. In the Remote Field config, add an input argument and select the input type to be the previously created githubInput. In the example, we will use the auto-generated API ID githubInput for the input arguments. We'll also set the field to be required since we will make the path depend on the input value.
Example - Input argument
Now configure the Remote Field's path to use the input argument. You can use the autocomplete feature in the handlebars notation for this.
Make sure there is at least one entry for the selected model, and then head over to the API Playground. The input argument can now be used in a query in the following way:
Please note that since we've made the userId parameter required in the custom input type (by adding a ! at the end), there will be an error if we don't supply the value properly.
This example shows a product content entry that fetches the product catalog from a Remote Source.
Besides the data that lives in Hygraph inside a regular model called Product - Product name, product description, etc - you can fetch a product catalog from an external API through a remote source that you added to the Product model as a Remote Field.
Remote Field example
Requests will return information in Hygraph - Product model - as well as information in the Remote Source, called myCatalogue in our Product model for this example.
Query
Response
The frontend could then use this information received through the Hygraph Content API to display the product page enriched with the product catalog.
This example uses Top-level Remote Fields to show us a product information content entry that fetches the product catalogue from an external API, unrelated to Hygraph.
Besides the data that lives in Hygraph inside a regular model called Product information - Slug, Title, Description - you can fetch a product catalogue from an external API through a Remote Source that you add to the Query model as a Remote Field.
Top-level Remote Field example
Requests will return information in Hygraph - Product model- as well as information in the Remote Source, called fieldremoteproduct in our Query model for this example.
Query
Response
The frontend could then use this information received through the Hygraph Content API to display the product page along with a product catalogue sourced from an external API.
This video tutorial covers adding a remote source to Hygraph and creating Top-Level Remote Fields to pull in data from the external e-commerce platform, BigCommerce.