Skip to main content
POST
/
v1
/
users
/
search
Search
curl --request POST \
  --url https://api.stytch.com/v1/users/search \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "cursor": "<string>",
  "limit": 1,
  "query": {
    "operator": "OR",
    "operands": [
      {}
    ]
  }
}
'
{
  "request_id": "<string>",
  "results": [
    {
      "user_id": "<string>",
      "emails": [
        {
          "email_id": "<string>",
          "email": "<string>",
          "verified": true
        }
      ],
      "status": "<string>",
      "phone_numbers": [
        {
          "phone_id": "<string>",
          "phone_number": "<string>",
          "verified": true
        }
      ],
      "webauthn_registrations": [
        {
          "webauthn_registration_id": "<string>",
          "domain": "<string>",
          "user_agent": "<string>",
          "verified": true,
          "authenticator_type": "<string>",
          "name": "<string>"
        }
      ],
      "providers": [
        {
          "provider_type": "<string>",
          "provider_subject": "<string>",
          "profile_picture_url": "<string>",
          "locale": "<string>",
          "oauth_user_registration_id": "<string>"
        }
      ],
      "totps": [
        {
          "totp_id": "<string>",
          "verified": true
        }
      ],
      "crypto_wallets": [
        {
          "crypto_wallet_id": "<string>",
          "crypto_wallet_address": "<string>",
          "crypto_wallet_type": "<string>",
          "verified": true
        }
      ],
      "biometric_registrations": [
        {
          "biometric_registration_id": "<string>",
          "verified": true
        }
      ],
      "is_locked": true,
      "roles": [
        "<string>"
      ],
      "name": {
        "first_name": "<string>",
        "middle_name": "<string>",
        "last_name": "<string>"
      },
      "created_at": "<string>",
      "password": {
        "password_id": "<string>",
        "requires_reset": true
      },
      "trusted_metadata": {},
      "untrusted_metadata": {},
      "external_id": "<string>",
      "lock_created_at": "<string>",
      "lock_expires_at": "<string>"
    }
  ],
  "results_metadata": {
    "total": 123,
    "next_cursor": "<string>"
  },
  "status_code": 123
}
This endpoint is not recommended for use in login flows. Scaling issues may occur, as search performance may vary from ~150 milliseconds to 9 seconds depending on query complexity and rate limits are set to 150 requests/minute.
Search for within your Stytch Project. Submitting an empty query returns all Users for your Project.

Filter Reference

Each query operand requires a filter_name and filter_value. The table below shows all available filters, their value types, and descriptions.
Filter NameValue TypeDescriptionExample
created_at_betweenobjectFilter users created between two timestamps. Object must contain greater_than and less_than timestamp strings in RFC 3339 format (UTC).{"greater_than": "2021-12-29T12:33:09Z", "less_than": "2022-01-15T12:33:09Z"}
created_at_greater_thanstringFilter users created after the specified timestamp in RFC 3339 format (UTC)."2021-12-29T12:33:09Z"
created_at_less_thanstringFilter users created before the specified timestamp in RFC 3339 format (UTC)."2022-01-15T12:33:09Z"
user_idarray[string]Filter by one or more exact user IDs.["user-test-16d9ba61-97a1-4ba4-9720-b03761dc50c6"]
full_name_fuzzystringFuzzy search for full or prefixed name match. Matches prefix of first or last name (e.g., “Ada” matches “Ada Lovelace” or “Abigail Adams”)."Ada"
statusstringFilter users by status: active or pending. See create_user_as_pending for more context."active"
phone_numberarray[string]Filter by one or more exact phone numbers in E.164 format (e.g., +1XXXXXXXXXX).["+12025550162"]
phone_number_fuzzystringFuzzy search for partial phone number match (e.g., returns all users with “415” in their phone number)."415"
phone_idarray[string]Filter by one or more exact phone IDs.["phone-number-test-d5a3b680-e8a3-40c0-b815-ab79986666d0"]
phone_verifiedbooleanFilter users by whether they have a verified phone number (i.e., phone number used to successfully authenticate).true
email_addressarray[string]Filter by one or more exact email addresses.["ghopper@stytch.com"]
email_address_fuzzystringFuzzy search for partial email address match. Matches prefixes of address or domain (e.g., “ada” matches ada.lovelace@stytch.com and grace@ada.com, but not sarah.adamson@stytch.com). Use domain prefix to filter by domain (e.g., “gmail” returns all gmail.com users)."ada"
email_idarray[string]Filter by one or more exact email IDs.["email-test-81bf03a8-86e1-4d95-bd44-bb3495224953"]
email_verifiedbooleanFilter users by whether they have a verified email address (i.e., email used to successfully authenticate).true
oauth_providerarray[string]Filter users by OAuth provider(s) they’ve authenticated with.["Google", "Apple"]
webauthn_registration_idarray[string]Filter by one or more exact WebAuthn registration IDs.["webauthn-registration-test-5c44cc6a-8af7-48d6-8da7-ea821342f5a6"]
webauthn_registration_verifiedbooleanFilter users by whether they have successfully registered a Passkey or WebAuthn device.true
biometric_registration_idarray[string]Filter by one or more exact biometric registration IDs.["biometric-registration-test-6966a6fc-5264-46ee-9ba4-98c6322a5134"]
biometric_registration_verifiedbooleanFilter users by whether they have successfully registered their biometrics.true
totp_idarray[string]Filter by one or more exact TOTP IDs.["totp-test-81bf03a8-86e1-4d95-bd44-bb3495224953"]
totp_verifiedbooleanFilter users by whether they have a verified TOTP (i.e., TOTP used to successfully authenticate).true
crypto_wallet_idarray[string]Filter by one or more exact crypto wallet IDs.["crypto-wallet-test-81bf03a8-86e1-4d95-bd44-bb3495224953"]
crypto_wallet_addressarray[string]Filter by one or more exact crypto wallet addresses.["0x6df2dB4Fb3DA35d241901Bd53367770BF03123f1"]
crypto_wallet_verifiedbooleanFilter users by whether they have a verified crypto wallet (i.e., wallet used to successfully authenticate).true
password_existsbooleanFilter users by whether they have a password set.true

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Body

application/json

Request type

cursor
string

The cursor field allows you to paginate through your results. Each result array is limited to 1000 results. If your query returns more than 1000 results, you will need to paginate the responses using the cursor. If you receive a response that includes a non-null next_cursor in the results_metadata object, repeat the search call with the next_cursor value set to the cursor field to retrieve the next page of results. Continue to make search calls until the next_cursor in the response is null.

limit
integer<int32>

The number of search results to return per page. The default limit is 100. A maximum of 1000 results can be returned by a single search request. If the total size of your result set is greater than one page size, you must paginate the response. See the cursor field.

Required range: x >= 0
query
object

The optional query object contains the operator, i.e. AND or OR, and the operands that will filter your results. Only an operator is required. If you include no operands, no filtering will be applied. If you include no query object, it will return all results with no filtering applied.

Response

Successful response

request_id
string
required

Globally unique UUID that is returned with every API call. This value is important to log for debugging purposes; we may ask for this value to help identify a specific API call when helping you debug an issue.

results
object[]
required

An array of results that match your search query.

results_metadata
object
required

The search results_metadata object contains metadata relevant to your specific query like total and next_cursor.

status_code
integer<int32>
required

The HTTP status code of the response. Stytch follows standard HTTP response status code patterns, e.g. 2XX values equate to success, 3XX values are redirects, 4XX are client errors, and 5XX are server errors.