Skip to main content

Errors and limits

Handling GraphQL errors​

Inspect errors[].extensions to handle failures. Do not parse human-readable message text; wording is not a machine-readable contract.

{
"data": null,
"errors": [
{
"message": "first must be between 1 and 500.",
"extensions": {
"code": "BAD_USER_INPUT",
"reason": "PAGINATION_CONSTRAINT",
"field": "first",
"constraint": "range"
}
}
]
}

Limits​

InputContract
Key^[\\w-]+(:[\\w-]+)*$
itemIdSame pattern; maximum 256 characters
JSON valueMaximum 10,240 bytes
first1–500; omitted or null defaults to 20
ids plus itemIdsMaximum 100 raw selectors
Service-generated ID selectorExactly 24 hexadecimal characters
Replacement itemsNon-empty
Replacement identitiesUnique within the request

The selector limit applies before deduplication. null selector lists are treated as empty.

Error reference​

Reason or codeApplies toUseful extensions
IDENTIFIER_CONSTRAINTKey or itemIdidentifierType, constraint
EMPTY_SELECTORLookup and delete—
SELECTOR_LIMIT_EXCEEDEDLookup and delete—
INVALID_DOCUMENT_IDLookup and deletefield, value
PAGINATION_CONSTRAINTList and lookupfield: first, constraint: range
CURSOR_CONSTRAINTList and lookupfield: after, cursor constraint
DATETIME_CONSTRAINTsortDateDatetime constraint
EMPTY_ARRAYWhole-array replacement—
DUPLICATE_ITEM_IDreplaceArrayItemsitemId
CONCURRENT_WRITE_CONFLICTArray mutationsCode
JSON validation errorJSON inputsDo not rely on message text

Cursor constraints are malformed, unsupportedVersion, and queryMismatch.

Datetime constraints are type, format, finite, integer, and range.

A concurrent-write conflict means the transaction could not be completed. Stored data remains unchanged.

A missing getArrayItem produces a GraphQL error, but there is currently no stable operation-specific extensions.reason. Do not treat its current message text as a contract.

Datetime input format​

String inputs​

Accepted forms include:

  • YYYY-MM-DD
  • YYYY-MM-DDTHH:mm:ss
  • The same date-time with a one- to three-digit fraction
  • An uppercase Z, +HH:mm, or -HH:mm offset

Examples:

2026-09-18
2026-09-18T10:30:00
2026-09-18T10:30:00.123Z
2026-09-18T12:30:00+02:00

Date-only and zone-less date-time values use UTC. Invalid calendar dates and invalid offsets are rejected.

Numeric inputs​

Numeric values must be integral Unix epoch milliseconds, finite, and within the JavaScript Date range. Fractional values are rejected.

Output format​

Datetime outputs are canonical ISO strings, for example:

2026-09-18T10:30:00.000Z

Validation order​

The first applicable validation failure is returned.

listArrayItems​

  1. first
  2. Cursor syntax and version
  3. Cursor query binding

lookupArrayItems​

  1. Identifier coercion
  2. Empty selectors
  3. Raw selector limit
  4. Service-generated ID validation
  5. Page size
  6. Cursor validation

deleteArrayItems​

  1. Identifier coercion
  2. Empty selectors
  3. Raw selector limit
  4. Service-generated ID validation

replaceArrayItems​

  1. Identifier coercion
  2. Empty items
  3. Duplicate itemId values

Was this page helpful?