Stytch Consumer Authentication API

Stytch's Consumer API for end-user authentication. Covers Magic Links, SMS / email / WhatsApp OTP, OAuth social login, Passwords, TOTP, WebAuthn / Passkeys, Crypto Wallets, Sessions, Users, plus the M2M (client credentials) surface, Connected Apps (OAuth provider for third-party tools, AI agents, and MCP servers), Fraud / Device Fingerprinting, Impersonation, IDP introspection, and Consumer RBAC.

OpenAPI Specification

stytch-consumer-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Stytch Consumer Authentication API
  version: 2.0.0
  description: Stytch's Consumer API for passwordless and password-based authentication. Supports Magic Links, SMS/email/WhatsApp
    OTP, OAuth social login, TOTP, WebAuthn/Passkeys, Crypto Wallets, Sessions, Users, M2M tokens, Fraud / Device Fingerprinting,
    Connected Apps (OAuth provider / MCP), Impersonation, IDP, and Consumer RBAC.
  contact:
    name: Stytch
    url: https://stytch.com/docs
  license:
    name: Proprietary
servers:
- url: https://api.stytch.com
  description: Production
- url: https://test.stytch.com
  description: Test
tags:
- name: Connected Apps
- name: Clients
- name: User
- name: Session
- name: Consumer RBAC
- name: Crypto Wallet
- name: Debug
- name: Fraud
- name: IDP
- name: Impersonation
- name: M2M
- name: Magic Links
- name: Password
- name: Passwords
- name: OAuth
- name: OTP
- name: Project
- name: TOTP
- name: Webauthn
paths:
  /v1/connected_apps/clients/{client_id}:
    get:
      summary: Get
      operationId: api_connectedapps_v1_connected_apps_clients_Get
      tags:
      - Connected Apps
      description: Retrieve details of a specific Connected App by `client_id`.
      parameters:
      - name: client_id
        in: path
        required: true
        schema:
          type: string
          description: The ID of the Connected App client.
        description: The ID of the Connected App client.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_connectedapps_v1_connected_apps_clients_GetResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us
                  know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
      - lang: csharp
        label: C#
        source: "// GET /v1/connected_apps/clients/{client_id}\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n\
          \  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  client_id: \"${exampleConnectedAppClientID}\"\
          ,\n};\n\nclient.ConnectedApp.Clients.Get(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err)\
          \ });"
      - lang: go
        label: Go
        source: "// GET /v1/connected_apps/clients/{client_id}\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"\
          github.com/stytchauth/stytch-go/v17/stytch/b2b/b2bstytchapi\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/connectedapps/clients\"\
          \n)\n\nfunc main() {\n\tclient, err := b2bstytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\
          \tif err != nil {\n\t\tlog.Fatalf(\"error instantiating client: %v\", err)\n\t}\n\n\tparams := &clients.GetParams{\n\
          \t\tClientID: \"${exampleConnectedAppClientID}\",\n\t}\n\n\tresp, err := client.ConnectedApp.Clients.Get(context.Background(),\
          \ params)\n\tif err != nil {\n\t\tlog.Fatalf(\"error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
      - lang: java
        label: Java
        source: "// GET /v1/connected_apps/clients/{client_id}\npackage com.example;\n\nimport com.stytch.java.b2b.StytchB2BClient;\n\
          import com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.connectedappsclients.GetRequest;\n\
          \npublic class Main {\n    public static void main(String[] args) {\n        StytchB2BClient.configure(\"${projectId}\"\
          , \"${secret}\");\n\n        GetRequest params = new GetRequest();\n        params.setClientId(\"${exampleConnectedAppClientID}\"\
          );\n\n        Object result = StytchB2BClient.getConnectedApp().getClients().get(params);\n        if (result instanceof\
          \ StytchResult.Success) {\n          System.out.println(((StytchResult.Success) result).getValue());\n        }\
          \ else {\n          System.out.println(((StytchResult.Error) result).getException());\n        }\n    }\n}"
      - lang: kotlin
        label: Kotlin
        source: "// GET /v1/connected_apps/clients/{client_id}\npackage com.example\n\nimport com.stytch.java.b2b.StytchB2BClient\n\
          import com.stytch.java.consumer.models.connectedappsclients.GetRequest\n\nfun main() {\n    StytchB2BClient.configure(\n\
          \        projectId = \"${projectId}\",\n        secret = \"${secret}\",\n    )\n\n    when (\n        val result\
          \ =\n            StytchB2BClient.connectedApp.clients.get(\n                GetRequest(\n                    clientId\
          \ = \"${exampleConnectedAppClientID}\",\n                ),\n            )\n    ) {\n        is StytchResult.Success\
          \ -> println(result.value)\n        is StytchResult.Error -> println(result.exception)\n    }\n}\n"
      - lang: javascript
        label: Node.js
        source: "// GET /v1/connected_apps/clients/{client_id}\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n\
          \  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  client_id: \"${exampleConnectedAppClientID}\"\
          ,\n};\n\nclient.connectedApp.clients.get(params)\n  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err)\
          \ });"
      - lang: php
        label: PHP
        source: "$response = $client->connected_app->clients->get([\n    'client_id' => '${exampleConnectedAppClientID}',\n\
          ]);"
      - lang: python
        label: Python
        source: "# GET /v1/connected_apps/clients/{client_id}\nfrom stytch import B2BClient\n\nclient = B2BClient(\n    project_id=\"\
          ${projectId}\",\n    secret=\"${secret}\",\n)\n\nresp = client.connected_app.clients.get(\n    client_id=\"${exampleConnectedAppClientID}\"\
          ,\n)\n\nprint(resp)\n"
      - lang: ruby
        label: Ruby
        source: "# GET /v1/connected_apps/clients/{client_id}\nrequire 'stytch'\n\nclient = StytchB2B::Client.new(\n  project_id:\
          \ \"${projectId}\",\n  secret: \"${secret}\"\n)\n\nresp = client.connected_app.clients.get(\n  client_id: \"${exampleConnectedAppClientID}\"\
          \n  \n)\n\nputs resp"
      - lang: rust
        label: Rust
        source: "// GET /v1/connected_apps/clients/{client_id}\nuse stytch::b2b::client::Client;\nuse stytch::consumer::connected_apps_clients::GetRequest;\n\
          \nfn main() {\n    let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n    let resp = client.connected_app.clients.get(\n\
          \        GetRequest{\n            client_id: \"${exampleConnectedAppClientID}\",\n            ..Default::default()\n\
          \        }\n    ).await;\n    println!(\"The response is {:?}\", resp);\n}"
      - lang: bash
        label: cURL
        source: "# GET /v1/connected_apps/clients/{client_id}\ncurl --request GET \\\n  --url https://test.stytch.com/v1/connected_apps/clients/${exampleConnectedAppClientID}\
          \ \\\n  -u '${projectId}:${secret}' \\\n  -H 'Content-Type: application/json'"
    put:
      summary: Update
      operationId: api_connectedapps_v1_connected_apps_clients_Update
      tags:
      - Connected Apps
      description: Updates mutable fields of a Connected App. Cannot update Client Type, Client ID, or Secrets.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api_connectedapps_v1_connected_apps_clients_UpdateRequest'
      parameters:
      - name: client_id
        in: path
        required: true
        schema:
          type: string
          description: The ID of the client.
        description: The ID of the client.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_connectedapps_v1_connected_apps_clients_UpdateResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us
                  know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
      - lang: csharp
        label: C#
        source: "// PUT /v1/connected_apps/clients/{client_id}\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n\
          \  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  client_id: \"${exampleM2MClientID}\"\
          ,\n  client_name: \"My Sample Client\",\n  client_description: \"My sample client for testing out Connected Apps\"\
          ,\n  redirect_urls: [\"https://example.com/callback\"],\n  full_access_allowed: false,\n};\n\nclient.ConnectedApp.Clients.Update(params)\n\
          \  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: go
        label: Go
        source: "// PUT /v1/connected_apps/clients/{client_id}\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"\
          github.com/stytchauth/stytch-go/v17/stytch/b2b/b2bstytchapi\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/connectedapps/clients\"\
          \n)\n\nfunc main() {\n\tclient, err := b2bstytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\
          \tif err != nil {\n\t\tlog.Fatalf(\"error instantiating client: %v\", err)\n\t}\n\n\tparams := &clients.UpdateParams{\n\
          \t\tClientID:          \"${exampleM2MClientID}\",\n\t\tClientName:        \"My Sample Client\",\n\t\tClientDescription:\
          \ \"My sample client for testing out Connected Apps\",\n\t\tRedirectURLs:      []string{\"https://example.com/callback\"\
          },\n\t\tFullAccessAllowed: false,\n\t}\n\n\tresp, err := client.ConnectedApp.Clients.Update(context.Background(),\
          \ params)\n\tif err != nil {\n\t\tlog.Fatalf(\"error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
      - lang: java
        label: Java
        source: "// PUT /v1/connected_apps/clients/{client_id}\npackage com.example;\n\nimport com.stytch.java.b2b.StytchB2BClient;\n\
          import com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.connectedappsclients.UpdateRequest;\n\
          \npublic class Main {\n    public static void main(String[] args) {\n        StytchB2BClient.configure(\"${projectId}\"\
          , \"${secret}\");\n\n        UpdateRequest params = new UpdateRequest();\n        params.setClientId(\"${exampleM2MClientID}\"\
          );\n        params.setClientName(\"My Sample Client\");\n        params.setClientDescription(\"My sample client\
          \ for testing out Connected Apps\");\n        params.setRedirectURLs(new String(\"https://example.com/callback\"\
          ));\n        params.setFullAccessAllowed(false);\n\n        Object result = StytchB2BClient.getConnectedApp().getClients().update(params);\n\
          \        if (result instanceof StytchResult.Success) {\n          System.out.println(((StytchResult.Success) result).getValue());\n\
          \        } else {\n          System.out.println(((StytchResult.Error) result).getException());\n        }\n    }\n\
          }"
      - lang: kotlin
        label: Kotlin
        source: "// PUT /v1/connected_apps/clients/{client_id}\npackage com.example\n\nimport com.stytch.java.b2b.StytchB2BClient\n\
          import com.stytch.java.consumer.models.connectedappsclients.UpdateRequest\n\nfun main() {\n    StytchB2BClient.configure(\n\
          \        projectId = \"${projectId}\",\n        secret = \"${secret}\",\n    )\n\n    when (\n        val result\
          \ =\n            StytchB2BClient.connectedApp.clients.update(\n                UpdateRequest(\n                \
          \    clientId = \"${exampleM2MClientID}\",\n                    clientName = \"My Sample Client\",\n           \
          \         clientDescription = \"My sample client for testing out Connected Apps\",\n                    redirectURLs\
          \ = arrayOf(\"https://example.com/callback\"),\n                    fullAccessAllowed = false,\n               \
          \ ),\n            )\n    ) {\n        is StytchResult.Success -> println(result.value)\n        is StytchResult.Error\
          \ -> println(result.exception)\n    }\n}\n"
      - lang: javascript
        label: Node.js
        source: "// PUT /v1/connected_apps/clients/{client_id}\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n\
          \  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  client_id: \"${exampleM2MClientID}\"\
          ,\n  client_name: \"My Sample Client\",\n  client_description: \"My sample client for testing out Connected Apps\"\
          ,\n  redirect_urls: [\"https://example.com/callback\"],\n  full_access_allowed: false,\n};\n\nclient.connectedApp.clients.update(params)\n\
          \  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: php
        label: PHP
        source: "$response = $client->connected_app->clients->update([\n    'client_id' => '${exampleM2MClientID}',\n    'client_name'\
          \ => 'My Sample Client',\n    'client_description' => 'My sample client for testing out Connected Apps',\n    'redirect_urls'\
          \ => ['https://example.com/callback'],\n    'full_access_allowed' => false,\n]);"
      - lang: python
        label: Python
        source: "# PUT /v1/connected_apps/clients/{client_id}\nfrom stytch import B2BClient\n\nclient = B2BClient(\n    project_id=\"\
          ${projectId}\",\n    secret=\"${secret}\",\n)\n\nresp = client.connected_app.clients.update(\n    client_id=\"${exampleM2MClientID}\"\
          ,\n    client_name=\"My Sample Client\",\n    client_description=\"My sample client for testing out Connected Apps\"\
          ,\n    redirect_urls=[\"https://example.com/callback\"],\n    full_access_allowed=False,\n)\n\nprint(resp)\n"
      - lang: ruby
        label: Ruby
        source: "# PUT /v1/connected_apps/clients/{client_id}\nrequire 'stytch'\n\nclient = StytchB2B::Client.new(\n  project_id:\
          \ \"${projectId}\",\n  secret: \"${secret}\"\n)\n\nresp = client.connected_app.clients.update(\n  client_id: \"\
          ${exampleM2MClientID}\",\n  client_name: \"My Sample Client\",\n  client_description: \"My sample client for testing\
          \ out Connected Apps\",\n  redirect_urls: ['https://example.com/callback'],\n  full_access_allowed: false\n  \n\
          )\n\nputs resp"
      - lang: rust
        label: Rust
        source: "// PUT /v1/connected_apps/clients/{client_id}\nuse stytch::b2b::client::Client;\nuse stytch::consumer::connected_apps_clients::UpdateRequest;\n\
          \nfn main() {\n    let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n    let resp = client.connected_app.clients.update(\n\
          \        UpdateRequest{\n            client_id: \"${exampleM2MClientID}\",\n            client_name: Some(String::from(\"\
          My Sample Client\")),\n            client_description: Some(String::from(\"My sample client for testing out Connected\
          \ Apps\")),\n            redirect_urls: vec![\"https://example.com/callback\"],\n            full_access_allowed:\
          \ false,\n            ..Default::default()\n        }\n    ).await;\n    println!(\"The response is {:?}\", resp);\n\
          }"
      - lang: bash
        label: cURL
        source: "# PUT /v1/connected_apps/clients/{client_id}\ncurl --request PUT \\\n  --url https://test.stytch.com/v1/connected_apps/clients/${exampleM2MClientID}\
          \ \\\n  -u '${projectId}:${secret}' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"client_name\":\
          \ \"My Sample Client\",\n    \"client_description\": \"My sample client for testing out Connected Apps\",\n    \"\
          redirect_urls\": [\"https://example.com/callback\"],\n    \"full_access_allowed\": false\n  }'"
    delete:
      summary: Delete
      operationId: api_connectedapps_v1_connected_apps_clients_Delete
      tags:
      - Connected Apps
      description: Deletes a Connected App.
      parameters:
      - name: client_id
        in: path
        required: true
        schema:
          type: string
          description: The ID of the client.
        description: The ID of the client.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_connectedapps_v1_connected_apps_clients_DeleteResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us
                  know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
      - lang: csharp
        label: C#
        source: "// DELETE /v1/connected_apps/clients/{client_id}\nconst stytch = require('stytch');\n\nconst client = new\
          \ stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  client_id:\
          \ \"${exampleM2MClientID}\",\n};\n\nclient.ConnectedApp.Clients.Delete(params)\n  .then(resp => { console.log(resp)\
          \ })\n  .catch(err => { console.log(err) });"
      - lang: go
        label: Go
        source: "// DELETE /v1/connected_apps/clients/{client_id}\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\
          \"github.com/stytchauth/stytch-go/v17/stytch/b2b/b2bstytchapi\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/connectedapps/clients\"\
          \n)\n\nfunc main() {\n\tclient, err := b2bstytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\
          \tif err != nil {\n\t\tlog.Fatalf(\"error instantiating client: %v\", err)\n\t}\n\n\tparams := &clients.DeleteParams{\n\
          \t\tClientID: \"${exampleM2MClientID}\",\n\t}\n\n\tresp, err := client.ConnectedApp.Clients.Delete(context.Background(),\
          \ params)\n\tif err != nil {\n\t\tlog.Fatalf(\"error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
      - lang: java
        label: Java
        source: "// DELETE /v1/connected_apps/clients/{client_id}\npackage com.example;\n\nimport com.stytch.java.b2b.StytchB2BClient;\n\
          import com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.connectedappsclients.DeleteRequest;\n\
          \npublic class Main {\n    public static void main(String[] args) {\n        StytchB2BClient.configure(\"${projectId}\"\
          , \"${secret}\");\n\n        DeleteRequest params = new DeleteRequest();\n        params.setClientId(\"${exampleM2MClientID}\"\
          );\n\n        Object result = StytchB2BClient.getConnectedApp().getClients().delete(params);\n        if (result\
          \ instanceof StytchResult.Success) {\n          System.out.println(((StytchResult.Success) result).getValue());\n\
          \        } else {\n          System.out.println(((StytchResult.Error) result).getException());\n        }\n    }\n\
          }"
      - lang: kotlin
        label: Kotlin
        source: "// DELETE /v1/connected_apps/clients/{client_id}\npackage com.example\n\nimport com.stytch.java.b2b.StytchB2BClient\n\
          import com.stytch.java.consumer.models.connectedappsclients.DeleteRequest\n\nfun main() {\n    StytchB2BClient.configure(\n\
          \        projectId = \"${projectId}\",\n        secret = \"${secret}\",\n    )\n\n    when (\n        val result\
          \ =\n            StytchB2BClient.connectedApp.clients.delete(\n                DeleteRequest(\n                \
          \    clientId = \"${exampleM2MClientID}\",\n                ),\n            )\n    ) {\n        is StytchResult.Success\
          \ -> println(result.value)\n        is StytchResult.Error -> println(result.exception)\n    }\n}\n"
      - lang: javascript
        label: Node.js
        source: "// DELETE /v1/connected_apps/clients/{client_id}\nconst stytch = require('stytch');\n\nconst client = new\
          \ stytch.B2BClient({\n  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  client_id:\
          \ \"${exampleM2MClientID}\",\n};\n\nclient.connectedApp.clients.delete(params)\n  .then(resp => { console.log(resp)\
          \ })\n  .catch(err => { console.log(err) });"
      - lang: php
        label: PHP
        source: "$response = $client->connected_app->clients->delete([\n    'client_id' => '${exampleM2MClientID}',\n]);"
      - lang: python
        label: Python
        source: "# DELETE /v1/connected_apps/clients/{client_id}\nfrom stytch import B2BClient\n\nclient = B2BClient(\n  \
          \  project_id=\"${projectId}\",\n    secret=\"${secret}\",\n)\n\nresp = client.connected_app.clients.delete(\n \
          \   client_id=\"${exampleM2MClientID}\",\n)\n\nprint(resp)\n"
      - lang: ruby
        label: Ruby
        source: "# DELETE /v1/connected_apps/clients/{client_id}\nrequire 'stytch'\n\nclient = StytchB2B::Client.new(\n  project_id:\
          \ \"${projectId}\",\n  secret: \"${secret}\"\n)\n\nresp = client.connected_app.clients.delete(\n  client_id: \"\
          ${exampleM2MClientID}\"\n  \n)\n\nputs resp"
      - lang: rust
        label: Rust
        source: "// DELETE /v1/connected_apps/clients/{client_id}\nuse stytch::b2b::client::Client;\nuse stytch::consumer::connected_apps_clients::DeleteRequest;\n\
          \nfn main() {\n    let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n    let resp = client.connected_app.clients.delete(\n\
          \        DeleteRequest{\n            client_id: \"${exampleM2MClientID}\",\n            ..Default::default()\n \
          \       }\n    ).await;\n    println!(\"The response is {:?}\", resp);\n}"
      - lang: bash
        label: cURL
        source: "# DELETE /v1/connected_apps/clients/{client_id}\ncurl --request DELETE \\\n  --url https://test.stytch.com/v1/connected_apps/clients/${exampleM2MClientID}\
          \ \\\n  -u '${projectId}:${secret}' \\\n  -H 'Content-Type: application/json'"
  /v1/connected_apps/clients/search:
    post:
      summary: Search
      operationId: api_connectedapps_v1_connected_apps_clients_Search
      tags:
      - Connected Apps
      description: Search for Connected Apps. Supports cursor-based pagination. Specific filters coming soon.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api_connectedapps_v1_connected_apps_clients_SearchRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_connectedapps_v1_connected_apps_clients_SearchResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us
                  know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
      - lang: csharp
        label: C#
        source: "// POST /v1/connected_apps/clients/search\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n\
          \  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  limit: 10,\n};\n\nclient.ConnectedApp.Clients.Search(params)\n\
          \  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: go
        label: Go
        source: "// POST /v1/connected_apps/clients/search\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/b2b/b2bstytchapi\"\
          \n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/connectedapps/clients\"\n)\n\nfunc main() {\n\tclient,\
          \ err := b2bstytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"\
          error instantiating client: %v\", err)\n\t}\n\n\tparams := &clients.SearchParams{\n\t\tLimit: 10,\n\t}\n\n\tresp,\
          \ err := client.ConnectedApp.Clients.Search(context.Background(), params)\n\tif err != nil {\n\t\tlog.Fatalf(\"\
          error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
      - lang: java
        label: Java
        source: "// POST /v1/connected_apps/clients/search\npackage com.example;\n\nimport com.stytch.java.b2b.StytchB2BClient;\n\
          import com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.connectedappsclients.SearchRequest;\n\
          \npublic class Main {\n    public static void main(String[] args) {\n        StytchB2BClient.configure(\"${projectId}\"\
          , \"${secret}\");\n\n        SearchRequest params = new SearchRequest();\n        params.setLimit(10);\n\n     \
          \   Object result = StytchB2BClient.getConnectedApp().getClients().search(params);\n        if (result instanceof\
          \ StytchResult.Success) {\n          System.out.println(((StytchResult.Success) result).getValue());\n        }\
          \ else {\n          System.out.println(((StytchResult.Error) result).getException());\n        }\n    }\n}"
      - lang: kotlin
        label: Kotlin
        source: "// POST /v1/connected_apps/clients/search\npackage com.example\n\nimport com.stytch.java.b2b.StytchB2BClient\n\
          import com.stytch.java.consumer.models.connectedappsclients.SearchRequest\n\nfun main() {\n    StytchB2BClient.configure(\n\
          \        projectId = \"${projectId}\",\n        secret = \"${secret}\",\n    )\n\n    when (\n        val result\
          \ =\n            StytchB2BClient.connectedApp.clients.search(\n                SearchRequest(\n                \
          \    limit = 10,\n                ),\n            )\n    ) {\n        is StytchResult.Success -> println(result.value)\n\
          \        is StytchResult.Error -> println(result.exception)\n    }\n}\n"
      - lang: javascript
        label: Node.js
        source: "// POST /v1/connected_apps/clients/search\nconst stytch = require('stytch');\n\nconst client = new stytch.B2BClient({\n\
          \  project_id: '${projectId}',\n  secret: '${secret}',\n});\n\nconst params = {\n  limit: 10,\n};\n\nclient.connectedApp.clients.search(params)\n\
          \  .then(resp => { console.log(resp) })\n  .catch(err => { console.log(err) });"
      - lang: php
        label: PHP
        source: "$response = $client->connected_app->clients->search([\n    'limit' => 10,\n]);"
      - lang: python
        label: Python
        source: "# POST /v1/connected_apps/clients/search\nfrom stytch import B2BClient\n\nclient = B2BClient(\n    project_id=\"\
          ${projectId}\",\n    secret=\"${secret}\",\n)\n\nresp = client.connected_app.clients.search(\n    limit=10,\n)\n\
          \nprint(resp)\n"
      - lang: ruby
        label: Ruby
        source: "# POST /v1/connected_apps/clients/search\nrequire 'stytch'\n\nclient = StytchB2B::Client.new(\n  project_id:\
          \ \"${projectId}\",\n  secret: \"${secret}\"\n)\n\nresp = client.connected_app.clients.search(\n  limit: 10\n  \n\
          )\n\nputs resp"
      - lang: rust
        label: Rust
        source: "// POST /v1/connected_apps/clients/search\nuse stytch::b2b::client::Client;\nuse stytch::consumer::connected_apps_clients::SearchRequest;\n\
          \nfn main() {\n    let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n    let resp = client.connected_app.clients.search(\n\
          \        SearchRequest{\n            limit: 10,\n            ..Default::default()\n        }\n    ).await;\n   \
          \ println!(\"The response is {:?}\", resp);\n}"
      - lang: bash
        

# --- truncated at 32 KB (985 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stytch/refs/heads/main/openapi/stytch-consumer-openapi.yml