Skip to main content
For any query that returns a list of results, you should use pagination. Without pagination, a large query is more likely to time out and return a 502 error. A 502 occurs when an API call doesn’t receive a response within 30 seconds. You fetch further results as you need them. The ION GraphQL API uses a cursor pagination pattern.

Fetch the first page

This example queries the first five parts with the first parameter and fetches the endCursor in the pageInfo object:
{
  parts(first: 5) {
    edges {
      node {
        id
      }
    }
    pageInfo {
      endCursor         # use this to fetch the next page
      hasNextPage       # are there more parts after this page?
      totalCount        #total number of parts
      count             #number of parts returned by this query
    }
  }
}
The response includes the requested edges and the pageInfo object:
{
  "data": {
    "parts": {
      "edges": [
        {
          "node": {
            "id": 20
          }
        },
        {
          "node": {
            "id": 22
          }
        },
        {
          "node": {
            "id": 24
          }
        },
        {
          "node": {
            "id": 26
          }
        },
        {
          "node": {
            "id": 28
          }
        }
      ],
      "pageInfo": {
        "endCursor": "YXJyYXljb25uZWN0aW9uOjE5",
        "hasNextPage": true,
        "totalCount": 1259,
        "count": 5
      }
    }
  }
}
In addition to first, ION queries have the pagination parameters last, before, and after.

Fetch the next page

To fetch the next page, pass the endCursor from the previous query to the after parameter:
{
  parts(first: 5, after: "YXJyYXljb25uZWN0aW9uOjE5") {
    edges {
      node {
        id
      }
    }
    pageInfo {
      endCursor         # use this to fetch the next page
      hasNextPage       # are there more parts after this page?
      totalCount        #total number of parts
      count             #number of parts returned by this query
    }
  }
}
This example returns the next five parts after the part identified by that cursor. To query every part in ION, repeat this pattern to fetch parts in batches of five. Use hasNextPage to determine whether more results remain after each query.