> Agent-readable docs index: /llms.txt. Download /docs.zip to grep all markdown files locally.

---
title: "Root errors"
description: "A list of possible errors that can be returned at the root level of the GraphQL API. These error codes are not scoped to a particular entity in the response, so they can be returned for any request."
---

import { HttpStatus } from "/snippets/HttpStatus.mdx";

This page lists all possible root-level errors that can be returned by our GraphQL API. These error codes are sent under a top-level `errors` field in the response body, and when present there will be no `data` field available. Check out the official [GraphQL docs](https://graphql.org/learn/response/) for more information.

GraphQL APIs tend to draw a distinction between transport-level success (the request was received and processed) and application-level errors (issues with the specific query or mutation). It is conventional for GraphQL APIs to return a 200 OK status code even when there are errors in the response. Rye *mostly* follows this convention, but there are some exceptions noted below.

As some HTTP clients handle 2xx status codes differently from 4xx and 5xx status codes, your integration should be capable of handling both correctly.

***

`CANONICAL_DOMAIN_RESOLUTION_ERROR`

We were unable to resolve the [canonical domain](/sync-api/shopify-merchant-onboarding/shopify-store-domains) for the store. This generally means that the store is not supported by Rye.

***

`CART_EXPIRED_ERROR`

Carts are considered expired in Rye after 10 days. If a cart is expired, it can no longer be used to create an order.

***

`CART_NOT_FOUND_ERROR`

Unable to find a cart by a given ID.

***

`GRAPHQL_PARSE_ERROR` <HttpStatus>400</HttpStatus>

The request sent to Rye was not a valid GraphQL operation. There was either a syntax error in your operation, or you didn't send a valid GraphQL AST.

***

`INTERNAL_SERVER_ERROR` <HttpStatus>500</HttpStatus>

An internal error occurred. This error is usually transient and can be retried.

***

`INVALID_PRODUCT_ID_ERROR`

The product ID provided to [`productByID`](/api-reference/productbyid) is not valid.

***

`INVALID_PRODUCT_URL_ERROR`

The product URL provided to [`requestProductByURL`](/api-reference/requestproductbyurl) is not valid.

***

`JSON_PARSE_ERROR` <HttpStatus>400</HttpStatus>

The request sent to Rye failed to parse as JSON. You should check for syntax errors (e.g. trailing commas or extraneous whitespace) and resubmit.

***

`DOMAIN_VALIDATION_ERROR`

The domain provided in the request is not valid.

***

`NO_SUCH_SHOPIFY_STORE_ERROR`

There is no Shopify store hosted at the domain provided in the request.

***

`PERCENT_VALIDATION_ERROR`

Rye expected an integer value between 0 and 100.

***

`PRODUCT_NOT_FOUND_ERROR`

This error can be returned after calling [`requestProductByURL`](/api-reference/requestproductbyurl). If the provided URL is valid, then the underlying Shopify store may not be supported. See [Product data not found](/api-reference/requestproductbyurl#product-data-not-found) section for more details.

***

`PRODUCT_NOT_SUPPORTED_ERROR`

The requested product cannot be supported by Rye due to technical limitations.

***

`PRODUCT_REQUESTS_LIMIT_REACHED_ERROR`

[`requestProductByURL`](/api-reference/requestproductbyurl) limit reached. See [Limits](/sell-anything-api-overview#limits) section for more details.

***

`QUERY_TOO_COMPLEX_ERROR` <HttpStatus>400</HttpStatus>

The GraphQL operation you sent is too complicated, and has been rejected. Try resubmitting the operation with fewer field selections.

***

`SHOPIFY_SERVICE_TEMPORARILY_UNAVAILABLE`

A downstream Shopify service is temporarily unavailable. This error is usually transient and should be retried.

***

`STORE_REQUESTS_FAILED_ERROR`
`STORE_REQUESTS_SAVED_ERROR`

The [`requestStoreByURL`](/api-reference/requeststorebyurl) mutation failed. You should try the request again.

***

`STORE_REQUESTS_LIMIT_REACHED_ERROR`

[`requestStoreByURL`](/api-reference/requeststorebyurl) limit reached. See [Limits](/sell-anything-api-overview#limits) section for more details.

***

`TOO_MANY_REQUESTS` <HttpStatus>429</HttpStatus>

Your request was rejected because you've hit a rate limit. See our guide on [rate limits](/api-reference/ratelimits) for advice on handling this error.

***

`UNAUTHORIZED` <HttpStatus>403</HttpStatus><br />
`UNAUTHENTICATED` <HttpStatus>401</HttpStatus>

Authorization or authentication failed for the request. See our guide on [authorization](/authorization-headers) to understand how Rye authorizes API calls.


---

*Powered by [holocron.so](https://holocron.so)*
