# Pagination in GraphQL

All list responses from queries return paginated results. We implement a Relay style cursor-based pagination model with `first`/`after` and `last`/`before` pagination arguments. For example, this is how to query the last 10 threads available to you:

## Example Query

```graphql
query Threads {
  threads(last: 10) {
    edges {
      node {
        id
        subject
      }
      cursor
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
```

To query the next 10, simply pass the value of `pageInfo.endCursor` as `after` parameter for the next request. You can do this as long as `pageInfo.hasNextPage` returns true and you'll paginate through all the values in the collection.

The first 50 results are returned by default without query arguments.

In general, results are ordered by the `createdAt` field. In some cases, you can return results in a different order by specifying `order`:

## Example Query with Order

```graphql
query Threads {
  threads(order: lastMessage) {
    edges {
      node {
        id
        subject
      }
      cursor
    }
  }
}
```
