---
title: "Query users"
method: POST
path: "/users/search"
tags: ["Users"]
---

# Query users

`POST /users/search`

Use when listing or searching service accounts in an admin UI, or when auditing who has API access and which roles they have.

## Request body

- TypesUserFilter
  - `end_time` string, date-time
  - `expand` string
  - `filters` TypesFilterCondition[] — filters allows complex filtering based on multiple fields
    - `data_type` 'string' | 'number' | 'date' | 'array'
    - `field` string
    - `operator` 'eq' | 'contains' | 'not_contains' | 'gt' | 'lt' | 'gte' | 'in' | 'not_in' | 'before' | 'after'
    - `value` TypesValue
      - `array` string[]
      - `boolean` boolean
      - `date` string
      - `number` number
      - `string` string
  - `limit` integer
  - `offset` integer
  - `order` 'asc' | 'desc'
  - `roles` string[]
  - `sort` TypesSortCondition[]
    - `direction` 'asc' | 'desc'
    - `field` string
  - `start_time` string, date-time
  - `status` 'published' | 'deleted' | 'archived'
  - `type` 'user' | 'service_account'
  - `user_ids` string[] — Specific filters for users

## Response `200`

OK

- ListUsersResponse
  - `items` UserResponse[]
    - `email` string — Empty for service accounts
    - `id` string
    - `metadata` object
    - `name` string
    - `roles` string[]
    - `tenant` TenantResponse
      - `billing_details` TenantBillingDetails
        - `address` Address
          - `address_city` string
          - `address_country` string
          - `address_line1` string
          - `address_line2` string
          - `address_postal_code` string
          - `address_state` string
        - `email` string
        - `help_email` string
        - `phone` string
      - `created_at` string, date-time
      - `id` string
      - `metadata` TypesMetadata
      - `name` string
      - `status` string
      - `updated_at` string, date-time
    - `type` 'user' | 'service_account'
  - `pagination` TypesPaginationResponse
    - `limit` integer
    - `offset` integer
    - `total` integer

## Other responses

- `400` — Invalid request
- `500` — Server error

## Changes

- **2026-07-15** `f8ecf435d25d` — 2 warning, 1 info
  - added the new `not_implemented` enum value to the `code` response property for the response status `400`
  - added the new `not_implemented` enum value to the `code` response property for the response status `500`
  - added the new `gte` enum value to the request property `filters/items/operator`
- **2026-07-09** `646d6658479b` — 2 breaking
  - the `end_time` request property format changed from no format to `date-time`
  - the `start_time` request property format changed from no format to `date-time`
- **2026-07-09** `7d57386313c7` — 4 breaking, 2 warning, 15 info
  - the request's body type changed from no type to `object`
  - the `items/items/tenant/metadata` response's property type changed from no type to `object` for status `200`
  - the `items/items/type` response's property type changed from no type to `string` for status `200`
  - the `pagination` response's property type changed from no type to `object` for status `200`
  - …17 more
- …earlier changes not shown

[Full history](https://skmtc.dev/flexprice/apis/flexprice-api/changes/users/search/post.md)

---

[API](https://skmtc.dev/flexprice/apis/flexprice-api.md) · [All operations](https://skmtc.dev/flexprice/apis/flexprice-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/flexprice/flexprice-api/revisions/e1d4e27b5677/schema)
