Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Stytch Consumer Authentication Crypto Wallet 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: Crypto Wallet
paths:
/v1/crypto_wallets/authenticate/start:
post:
summary: Authenticatestart
operationId: api_crypto_wallet_v1_AuthenticateStart
tags:
- Crypto Wallet
description: 'Initiate the authentication of a crypto wallet. After calling this endpoint, the user will need to sign a message containing the returned `challenge` field.
For Ethereum crypto wallets, you can optionally use the Sign In With Ethereum (SIWE) protocol for the message by passing in the `siwe_params`. The only required fields are `domain` and `uri`.
If the crypto wallet detects that the domain in the message does not match the website''s domain, it will display a warning to the user.
If not using the SIWE protocol, the message will simply consist of the project name and a random string.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateStartRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateStartResponse'
'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/crypto_wallets/authenticate/start\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n};\n\nclient.CryptoWallets.AuthenticateStart(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: go
label: Go
source: "// POST /v1/crypto_wallets/authenticate/start\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/cryptowallets\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/stytchapi\"\n)\n\nfunc main() {\n\tclient, err := stytchapi.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 := &cryptowallets.AuthenticateStartParams{\n\t\tCryptoWalletType: \"ethereum\",\n\t\tCryptoWalletAddress: \"${exampleEthereumAddress}\",\n\t}\n\n\tresp, err := client.CryptoWallets.AuthenticateStart(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/crypto_wallets/authenticate/start\npackage com.example;\n\nimport com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateStartRequest;\nimport com.stytch.java.consumer.StytchClient;\n\npublic class Main {\n public static void main(String[] args) {\n StytchClient.configure(\"${projectId}\", \"${secret}\");\n\n AuthenticateStartRequest params = new AuthenticateStartRequest();\n params.setCryptoWalletType(\"ethereum\");\n params.setCryptoWalletAddress(\"${exampleEthereumAddress}\");\n\n Object result = StytchClient.getCryptoWallets().authenticateStart(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/crypto_wallets/authenticate/start\npackage com.example\n\nimport com.stytch.java.consumer.StytchClient\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateStartRequest\n\nfun main() {\n StytchClient.configure(\n projectId = \"${projectId}\",\n secret = \"${secret}\",\n )\n\n when (\n val result =\n StytchClient.cryptoWallets.authenticateStart(\n AuthenticateStartRequest(\n cryptoWalletType = \"ethereum\",\n cryptoWalletAddress = \"${exampleEthereumAddress}\",\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/crypto_wallets/authenticate/start\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n};\n\nclient.cryptoWallets.authenticateStart(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: php
label: PHP
source: "$response = $client->crypto_wallets->authenticate_start([\n 'crypto_wallet_type' => 'ethereum',\n 'crypto_wallet_address' => '${exampleEthereumAddress}',\n]);"
- lang: python
label: Python
source: "# POST /v1/crypto_wallets/authenticate/start\nfrom stytch import Client\n\nclient = Client(\n project_id=\"${projectId}\",\n secret=\"${secret}\",\n)\n\nresp = client.crypto_wallets.authenticate_start(\n crypto_wallet_type=\"ethereum\",\n crypto_wallet_address=\"${exampleEthereumAddress}\",\n)\n\nprint(resp)\n"
- lang: ruby
label: Ruby
source: "# POST /v1/crypto_wallets/authenticate/start\nrequire 'stytch'\n\nclient = Stytch::Client.new(\n project_id: \"${projectId}\",\n secret: \"${secret}\"\n)\n\nresp = client.crypto_wallets.authenticate_start(\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\"\n \n)\n\nputs resp"
- lang: rust
label: Rust
source: "// POST /v1/crypto_wallets/authenticate/start\nuse stytch::consumer::client::Client;\nuse stytch::consumer::crypto_wallets::AuthenticateStartRequest;\n\nfn main() {\n let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n let resp = client.crypto_wallets.authenticate_start(\n AuthenticateStartRequest{\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n ..Default::default()\n }\n ).await;\n println!(\"The response is {:?}\", resp);\n}"
- lang: bash
label: cURL
source: "# POST /v1/crypto_wallets/authenticate/start\ncurl --request POST \\\n --url https://test.stytch.com/v1/crypto_wallets/authenticate/start \\\n -u '${projectId}:${secret}' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"crypto_wallet_type\": \"ethereum\",\n \"crypto_wallet_address\": \"${exampleEthereumAddress}\"\n }'"
/v1/crypto_wallets/authenticate:
post:
summary: Authenticate
operationId: api_crypto_wallet_v1_Authenticate
tags:
- Crypto Wallet
description: Complete the authentication of a crypto wallet by passing the signature.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateResponse'
'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/crypto_wallets/authenticate\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60,\n};\n\nclient.CryptoWallets.Authenticate(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: go
label: Go
source: "// POST /v1/crypto_wallets/authenticate\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/cryptowallets\"\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/stytchapi\"\n)\n\nfunc main() {\n\tclient, err := stytchapi.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 := &cryptowallets.AuthenticateParams{\n\t\tCryptoWalletType: \"ethereum\",\n\t\tCryptoWalletAddress: \"${exampleEthereumAddress}\",\n\t\tSignature: \"${exampleEthereumSignature}\",\n\t\tSessionDurationMinutes: 60,\n\t}\n\n\tresp, err := client.CryptoWallets.Authenticate(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/crypto_wallets/authenticate\npackage com.example;\n\nimport com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateRequest;\nimport com.stytch.java.consumer.StytchClient;\n\npublic class Main {\n public static void main(String[] args) {\n StytchClient.configure(\"${projectId}\", \"${secret}\");\n\n AuthenticateRequest params = new AuthenticateRequest();\n params.setCryptoWalletType(\"ethereum\");\n params.setCryptoWalletAddress(\"${exampleEthereumAddress}\");\n params.setSignature(\"${exampleEthereumSignature}\");\n params.setSessionDurationMinutes(60);\n\n Object result = StytchClient.getCryptoWallets().authenticate(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/crypto_wallets/authenticate\npackage com.example\n\nimport com.stytch.java.consumer.StytchClient\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateRequest\n\nfun main() {\n StytchClient.configure(\n projectId = \"${projectId}\",\n secret = \"${secret}\",\n )\n\n when (\n val result =\n StytchClient.cryptoWallets.authenticate(\n AuthenticateRequest(\n cryptoWalletType = \"ethereum\",\n cryptoWalletAddress = \"${exampleEthereumAddress}\",\n signature = \"${exampleEthereumSignature}\",\n sessionDurationMinutes = 60,\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/crypto_wallets/authenticate\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60,\n};\n\nclient.cryptoWallets.authenticate(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: php
label: PHP
source: "$response = $client->crypto_wallets->authenticate([\n 'crypto_wallet_type' => 'ethereum',\n 'crypto_wallet_address' => '${exampleEthereumAddress}',\n 'signature' => '${exampleEthereumSignature}',\n 'session_duration_minutes' => 60,\n]);"
- lang: python
label: Python
source: "# POST /v1/crypto_wallets/authenticate\nfrom stytch import Client\n\nclient = Client(\n project_id=\"${projectId}\",\n secret=\"${secret}\",\n)\n\nresp = client.crypto_wallets.authenticate(\n crypto_wallet_type=\"ethereum\",\n crypto_wallet_address=\"${exampleEthereumAddress}\",\n signature=\"${exampleEthereumSignature}\",\n session_duration_minutes=60,\n)\n\nprint(resp)\n"
- lang: ruby
label: Ruby
source: "# POST /v1/crypto_wallets/authenticate\nrequire 'stytch'\n\nclient = Stytch::Client.new(\n project_id: \"${projectId}\",\n secret: \"${secret}\"\n)\n\nresp = client.crypto_wallets.authenticate(\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60\n \n)\n\nputs resp"
- lang: rust
label: Rust
source: "// POST /v1/crypto_wallets/authenticate\nuse stytch::consumer::client::Client;\nuse stytch::consumer::crypto_wallets::AuthenticateRequest;\n\nfn main() {\n let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n let resp = client.crypto_wallets.authenticate(\n AuthenticateRequest{\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60,\n ..Default::default()\n }\n ).await;\n println!(\"The response is {:?}\", resp);\n}"
- lang: bash
label: cURL
source: "# POST /v1/crypto_wallets/authenticate\ncurl --request POST \\\n --url https://test.stytch.com/v1/crypto_wallets/authenticate \\\n -u '${projectId}:${secret}' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"crypto_wallet_type\": \"ethereum\",\n \"crypto_wallet_address\": \"${exampleEthereumAddress}\",\n \"signature\": \"${exampleEthereumSignature}\",\n \"session_duration_minutes\": 60\n }'"
components:
schemas:
api_session_v1_AuthenticationFactorDeliveryMethod:
type: string
enum:
- email
- sms
- whatsapp
- embedded
- oauth_google
- oauth_microsoft
- oauth_apple
- webauthn_registration
- authenticator_app
- oauth_github
- recovery_code
- oauth_facebook
- crypto_wallet
- oauth_amazon
- oauth_bitbucket
- oauth_coinbase
- oauth_discord
- oauth_figma
- oauth_gitlab
- oauth_instagram
- oauth_linkedin
- oauth_shopify
- oauth_slack
- oauth_snapchat
- oauth_spotify
- oauth_steam
- oauth_tiktok
- oauth_twitch
- oauth_twitter
- knowledge
- biometric
- sso_saml
- sso_oidc
- oauth_salesforce
- oauth_yahoo
- oauth_hubspot
- imported_auth0
- oauth_exchange_slack
- oauth_exchange_hubspot
- oauth_exchange_github
- oauth_exchange_google
- impersonation
- oauth_access_token_exchange
- trusted_token_exchange
api_session_v1_OAuthAccessTokenExchangeFactor:
type: object
properties:
client_id:
type: string
description: The ID of the Connected App client.
required:
- client_id
api_user_v1_BiometricRegistration:
type: object
properties:
biometric_registration_id:
type: string
description: The unique ID for a biometric registration.
verified:
type: boolean
description: The verified boolean denotes whether or not this send method, e.g. phone number, email address, etc., has been successfully authenticated by the User.
required:
- biometric_registration_id
- verified
api_session_v1_InstagramOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_SteamOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_GitLabOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_crypto_wallet_v1_AuthenticateStartRequest:
type: object
properties:
crypto_wallet_type:
type: string
description: The type of wallet to authenticate. Currently `ethereum` and `solana` are supported. Wallets for any EVM-compatible chains (such as Polygon or BSC) are also supported and are grouped under the `ethereum` type.
crypto_wallet_address:
type: string
description: The crypto wallet address to authenticate.
user_id:
type: string
description: The unique ID of a specific User. You may use an `external_id` here if one is set for the user.
session_token:
type: string
description: The `session_token` associated with a User's existing Session.
session_jwt:
type: string
description: The `session_jwt` associated with a User's existing Session.
siwe_params:
$ref: '#/components/schemas/api_crypto_wallet_v1_SIWEParams'
description: The parameters for a Sign In With Ethereum (SIWE) message. May only be passed if the `crypto_wallet_type` is `ethereum`.
description: Request type
required:
- crypto_wallet_type
- crypto_wallet_address
api_session_v1_SAMLSSOFactor:
type: object
properties:
id:
type: string
description: The unique ID of an SSO Registration.
provider_id:
type: string
description: Globally unique UUID that identifies a specific SAML Connection.
external_id:
type: string
description: The ID of the member given by the identity provider.
required:
- id
- provider_id
- external_id
api_session_v1_LinkedInOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_BitbucketOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_ImpersonatedFactor:
type: object
properties:
impersonator_id:
type: string
description: For impersonated sessions initiated via the Stytch Dashboard, the `impersonator_id` will be the impersonator's Stytch Dashboard `member_id`.
impersonator_email_address:
type: string
description: The email address of the impersonator.
required:
- impersonator_id
- impersonator_email_address
api_crypto_wallet_v1_SIWEParams:
type: object
properties:
domain:
type: string
description: Only required if `siwe_params` is passed. The domain that is requesting the crypto wallet signature. Must be an RFC 3986 authority.
uri:
type: string
description: Only required if `siwe_params` is passed. An RFC 3986 URI referring to the resource that is the subject of the signing.
resources:
type: array
items:
type: string
description: ' A list of information or references to information the user wishes to have resolved as part of authentication. Every resource must be an RFC 3986 URI.'
chain_id:
type: string
description: The EIP-155 Chain ID to which the session is bound. Defaults to 1. Must be the string representation of an integer between 1 and 9,223,372,036,854,775,771, inclusive.
statement:
type: string
description: A human-readable ASCII assertion that the user will sign. The statement may only include reserved, unreserved, or space characters according to RFC 3986 definitions, and must not contain other forms of whitespace such as newlines, tabs, and carriage returns.
issued_at:
type: string
description: The time when the message was generated. Defaults to the current time. All timestamps in our API conform to the RFC 3339 standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
not_before:
type: string
description: The time when the signed authentication message will become valid. Defaults to the current time. All timestamps in our API conform to the RFC 3339 standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
message_request_id:
type: string
description: A system-specific identifier that may be used to uniquely refer to the sign-in request. The `message_request_id` must be a valid pchar according to RFC 3986 definitions.
required:
- domain
- uri
- resources
api_session_v1_AppleOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_GoogleOAuthExchangeFactor:
type: object
properties:
email_id:
type: string
description: The globally unique UUID of the Member's email.
required:
- email_id
api_session_v1_FigmaOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_MicrosoftOAuthFactor:
type: object
properties:
id:
type: string
description: The unique ID of an OAuth registration.
provider_subject:
type: string
description: The unique identifier for the User within a given OAuth provider. Also commonly called the `sub` or "Subject field" in OAuth protocols.
email_id:
type: string
description: The globally unique UUID of the Member's email.
required:
- id
- provider_subject
api_user_v1_OAuthProvider:
type: object
properties:
provider_type:
type: string
description: Denotes the OAuth identity provider that the user has authenticated with, e.g. Google, Facebook, GitHub etc.
provider_subject:
type: string
description: The unique identifier for the User within a given OAuth provider. Also commonly called the "sub" or "Subject field" in OAuth protocols.
profile_picture_url:
type: string
description: If available, the `profile_picture_url` is a url of the User's profile picture set in OAuth identity the provider that the User has authenticated with, e.g. Facebook profile picture.
locale:
type: string
description: If available, the `locale` is the User's locale set in the OAuth identity provider that the user has authenticated with.
oauth_user_registration_id:
type: string
description: The unique ID for an OAuth registration.
required:
- provider_type
- provider_subject
- profile_picture_url
- locale
- oauth_user_registration_id
api_crypto_wallet_v1_AuthenticateRequest:
type: object
properties:
crypto_wallet_type:
type: string
description: The type of wallet to authenticate. Currently `ethereum` and `solana` are supported. Wallets for any EVM-compatible chains (such as Polygon or BSC) are also supported and are grouped under the `ethereum` type.
crypto_wallet_address:
type: string
description: The crypto wallet address to authenticate.
signature:
type: string
description: The signature from the message challenge.
session_token:
type: string
description: The `session_token` associated with a User's existing Session.
session_duration_minutes:
type: integer
format: int32
description: "Set the session lifetime to be this many minutes from now. This will start a new session if one doesn't already exist,\n returning both an opaque `session_token` and `session_jwt` for this session. Remember that the `session_jwt` will have a fixed lifetime of\n five minutes regardless of the underlying session duration, and will need to be refreshed over time.\n\n This value must be a minimum of 5 and a maximum of 527040 minutes (366 days).\n\n If a `session_token` or `session_jwt` is provided then a successful authentication will continue to extend the session this many minutes.\n\n If the `session_duration_minutes` parameter is not specified, a Stytch session will not be created."
session_jwt:
type: string
description: The `session_jwt` associated with a User's existing Session.
session_custom_claims:
type: object
additionalProperties: true
description: "Add a custom claims map to the Session being authenticated. Claims are only created if a Session is initialized by providing a value in `session_duration_minutes`. Claims will be included on the Session object and in the JWT. To update a key in an existing Session, supply a new value. To delete a key, supply a null value.\n\n Custom claims made with reserved claims (\"iss\", \"sub\", \"aud\", \"exp\", \"nbf\", \"iat\", \"jti\") will be ignored. Total custom claims size cannot exceed four kilobytes."
telemetry_id:
type: string
description: If the `telemetry_id` is passed, as part of this request, Stytch will call the [Fingerprint Lookup API](https://stytch.com/docs/fraud/api/fingerprint-lookup) and store the associated fingerprints and IPGEO information for the User. Your workspace must be enabled for Device Fingerprinting to use this feature.
description: Request type
required:
- crypto_wallet_type
- crypto_wallet_address
- signature
api_session_v1_TwitchOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_Session:
type: object
properties:
session_id:
type: string
description: A unique identifier for a specific Session.
user_id:
type: string
description: The unique ID of the affected User.
authentication_factors:
type: array
items:
$ref: '#/components/schemas/api_session_v1_AuthenticationFactor'
description: An array of different authentication factors that comprise a Session.
roles:
type: array
items:
type: string
started_at:
type: string
description: The timestamp when the Session was created. Values conform to the RFC 3339 standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
last_accessed_at:
type: string
description: The timestamp when the Session was last accessed. Values conform to the RFC 3339 standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
expires_at:
type: string
description: The timestamp when the Session expires. Values conform to the RFC 3339 standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
attributes:
$ref: '#/components/schemas/api_attribute_v1_Attributes'
description: Provided attributes help with fraud detection.
custom_claims:
type: object
additionalProperties: true
description: The custom claims map for a Session. Claims can be added to a session during a Sessions authenticate call.
required:
- session_id
- user_id
- authentication_factors
- roles
api_user_v1_User:
type: object
properties:
user_id:
type: string
description: The unique ID of the affected User.
emails:
type: array
items:
$ref: '#/components/schemas/api_user_v1_Email'
description: An array of email objects for the User.
status:
type: string
description: The status of the User. The possible values are `pending` and `active`.
phone_numbers:
type: array
items:
$ref: '#/components/schemas/api_user_v1_PhoneNumber'
description: An array of phone number objects linked to the User.
webauthn_registrations:
type: array
items:
$ref: '#/components/schemas/api_user_v1_WebAuthnRegistration'
description: An array that contains a li
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stytch/refs/heads/main/openapi/stytch-crypto-wallet-api-openapi.yml