---
title: "Search"
method: POST
path: "/v1/m2m/clients/search"
tags: ["M2M"]
---

# Search

`POST /v1/m2m/clients/search`

## Request

- Base URL: `https://api.stytch.com`
- URL: `https://api.stytch.com/v1/m2m/clients/search`
- Auth: HTTP basic

Search for M2M Clients within your Stytch Project. Submit an empty `query` in the request to return all M2M Clients.

The following search filters are supported today:
- `client_id`: Pass in a list of client IDs to get many clients in a single request
- `client_name`: Search for clients by exact match on client name
- `scopes`: Search for clients assigned a specific scope

## Request body

- ApiM2mV1M2mClientsSearchRequest: 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: 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.
  - `query` ApiM2mV1M2MSearchQuery
    - `operator` 'OR' | 'AND', required
    - `operands` object[], required: An array of operand objects that contains all of the filters and values to apply to your search search query.

## Response `200`

Successful response

- ApiM2mV1M2mClientsSearchResponse
  - `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.
  - `m2m_clients` ApiM2mV1M2MClient[], required: An array of M2M Clients that match your search query.
    - `client_id` string, required: The ID of the client.
    - `client_name` string, required: A human-readable name for the client.
    - `client_description` string, required: A human-readable description for the client.
    - `status` string, required: The status of the client - either `active` or `inactive`.
    - `scopes` string[], required: An array of scopes assigned to the client.
    - `client_secret_last_four` string, required: The last four characters of the client secret.
    - `trusted_metadata` object: An arbitrary JSON object for storing application-specific data.
    - `next_client_secret_last_four` string: The last four characters of the `next_client_secret`. Null if no `next_client_secret` exists.
  - `results_metadata` ApiM2mV1ResultsMetadata, required
    - `total` integer, required: The total number of results returned by your search query. If totals have been disabled for your Stytch Workspace to improve search performance, the value will always be -1.
    - `next_cursor` string: The `next_cursor` string is returned when your search result contains more than one page of results. This value is passed into your next search call in the `cursor` field.
  - `status_code` integer, 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.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `429`: Too Many Requests
- `500`: Internal server error

## Changes

- **2026-03-07** `110f26a94e5b`: 1 info
  - endpoint added
- **2026-03-06** `9cab20b8eca7`: 1 breaking
  - api path removed without deprecation
- **2026-01-09** `7dfcc14e566c`: 2 breaking
  - the `query/operands/items/` request property type changed from `string` to `object`
  - the `m2m_clients/items/trusted_metadata` response's property type changed from `string` to `object` for status `200`
- **2025-09-17** `8270cf3a3d4c`: 3 info
  - added the media type `application/json` for the response with the status `401`
  - added the media type `application/json` for the response with the status `500`
  - added the non-success response with the status `429`
- **2025-09-17** `864b9f438ac0`: 3 breaking, 1 warning
  - the `limit` request property type changed from `string` to `integer`, and format from no format to `int32`
  - the `results_metadata/total` response's property type changed from `string` to `integer`, and format from no format to `int32` for status `200`
  - the `status_code` response's property type changed from `string` to `integer`, and format from no format to `int32` for status `200`
  - the `limit` request property's min was set to `0.00`

[Operation history](https://skmtc.dev/stytch/apis/stytch-api/changes/v1/m2m/clients/search/post.md)

---

[API](https://skmtc.dev/stytch/apis/stytch-api.md) - [All operations](https://skmtc.dev/stytch/apis/stytch-api/llms.txt) - [OpenAPI document](https://skmtc.dev/stytch/apis/stytch-api/revisions/6d1ff7474803?raw)
