---
descriptions:
  limit: >
    Upper limit on the number of objects to return, between `1` and `100`. The
    default value is `10`.
  order:
    lowercase: >
      Order the results by the creation time. Supported values are `"asc"` and
      `"desc"` for showing older and newer records first respectively. Default
      order is descending.
    titlecase: >
      Order the results by the creation time. Supported values are `Asc` and
      `Desc` for showing older and newer records first respectively. Default
      order is descending.
  before: >
    An object ID that defines your place in the list. When the ID is not
    present, you are at the end of the list.

    For example, if you make a list request and receive 100 objects, ending with
    `"obj_123"`, your subsequent call can include `before="obj_123"` to fetch a
    new batch of objects before `"obj_123"`.
  after: >
    An object ID that defines your place in the list. When the ID is not
    present, you are at the end of the list.

    For example, if you make a list request and receive 100 objects, ending with
    `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a
    new batch of objects after `"obj_123"`.
reference:
  curl:
    - key: list_metadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (before)
        - (after)
        - (limit)
        - (order)
    - key: limit
      optional: true
      type: number
      description: (limit)
    - key: order
      optional: true
      type: '"asc" | "desc"'
      description: (order.lowercase)
    - key: before
      optional: true
      type: string
      description: (before)
    - key: after
      optional: true
      type: string
      description: (after)
  js:
    - key: ListMetadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (before)
        - (after)
        - (limit)
        - (order)
    - key: limit
      optional: true
      type: number
      description: (limit)
    - key: order
      optional: true
      type: '"asc" | "desc"'
      description: (order.lowercase)
    - key: before
      optional: true
      type: string
      description: (before)
    - key: after
      optional: true
      type: string
      description: (after)
  go:
    - key: ListMetadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (Before)
        - (After)
        - (Limit)
        - (Order)
    - key: Limit
      optional: true
      type: int
      description: (limit)
    - key: Order
      optional: true
      type: common.Order
      description: (order.titlecase)
    - key: Before
      optional: true
      type: string
      description: (before)
    - key: After
      optional: true
      type: string
      description: (after)
  java:
    - key: listMetadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (before)
        - (after)
        - (limit)
        - (order)
    - key: limit
      optional: true
      type: Int
      description: (limit)
    - key: order
      optional: true
      type: Order
      description: (order.titlecase)
    - key: before
      optional: true
      type: String
      description: (before)
    - key: after
      optional: true
      type: String
      description: (after)
  ruby:
    - key: list_metadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (before)
        - (after)
        - (limit)
        - (order)
    - key: limit
      optional: true
      type: Integer
      description: (limit)
    - key: order
      optional: true
      type: '"asc" | "desc"'
      description: (order.lowercase)
    - key: before
      optional: true
      type: String
      description: (before)
    - key: after
      optional: true
      type: String
      description: (after)
  python:
    - key: list_metadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (before)
        - (after)
        - (limit)
        - (order)
    - key: limit
      optional: true
      type: int
      description: (limit)
    - key: order
      optional: true
      type: '"asc" | "desc"'
      description: (order.lowercase)
    - key: before
      optional: true
      type: str
      description: (before)
    - key: after
      optional: true
      type: str
      description: (after)
  php:
    - key: ListMetadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (before)
        - (after)
        - (limit)
        - (order)
    - key: limit
      optional: true
      type: int
      description: (limit)
    - key: order
      optional: true
      type: '"asc"|"desc"'
      description: (order.lowercase)
    - key: before
      optional: true
      type: string
      description: (before)
    - key: after
      optional: true
      type: string
      description: (after)
  dotnet:
    - key: ListMetadata
      id: list_metadata
      url: /reference/pagination
      parameters:
        - (Before)
        - (After)
        - (Limit)
        - (Order)
    - key: Limit
      optional: true
      type: int
      description: (limit)
    - key: Order
      optional: true
      type: PaginationOrder
      description: (order.titlecase)
    - key: Before
      optional: true
      type: string
      description: (before)
    - key: After
      optional: true
      type: string
      description: (after)
originalPath: .tmp-workos-clone/packages/docs/content/reference/pagination/index.mdx
---

# Pagination

Many top-level resources have support for bulk fetches via list API methods. For instance, you can [list connections](/reference/sso/connection/list), [list directory users](/reference/directory-sync/directory-user/list), and [list directory groups](/reference/directory-sync/directory-group/list). These list API methods share a common structure, taking at least these four parameters: `limit`, `order`, `after`, and `before`.

WorkOS utilizes pagination via the `after` and `before` parameters. Both parameters take an existing object ID value and return objects in either descending or ascending order by creation time.

<CodeBlock referenceId="list_metadata">
  <CodeBlockTab title="Request" file="list-metadata-request" />
  <CodeBlockTab title="Response" file="list-metadata-response" />
</CodeBlock>
