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.
Use the query object to filter by different fields. See the query.operands.filter_value documentation below for a list of available filters.
test
string
required
test

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.