Dynamic SDK API

The SDK API from Dynamic — 124 operation(s) for sdk.

Operations 138

POST /environments/{environmentId}/users/{userId}/balances Get account balances for multiple addresses #
GET /exchangeRates #
GET /sdk/{environmentId}/waas/keyShares/backup/token Generate a short-lived JWT token for use with WAAS client backups. #
GET /sdk/{environmentId}/users/check Check user field uniqueness #
POST /sdk/{environmentId}/providers/{providerType}/initAuth Initialize oauth auth sequence #
GET /sdk/{environmentId}/session Check that session is valid #
POST /sdk/{environmentId}/scan/websiteUrl Scan a URL for potential malicious activity #
POST /sdk/{environmentId}/solana/simulateTransaction Simulate a Solana transaction #
POST /sdk/{environmentId}/solana/sponsorTransaction Sponsor a Solana transaction via Grid API #
POST /sdk/{environmentId}/evm/simulateTransaction Simulate an EVM transaction #
POST /sdk/{environmentId}/evm/simulateUserOp Simulate an EVM AA UserOp #
POST /sdk/{environmentId}/externalAuth/signin Endpoint to sign-in using a token issued by an external auth provider #
POST /sdk/{environmentId}/solana/optimizeTransaction Add fees to a Solana transaction #
POST /sdk/{environmentId}/externalAuth/verify [DEPRECATED] Please use /externalAuth/signin instead #
GET /sdk/{environmentId}/users/embeddedWallets/authToken Get auth token for given embedded wallet type #
GET /sdk/{environmentId}/users/embeddedWallets/passcode Return the passcode for the pregenerated embedded wallet of the authenticated user #
PUT /sdk/{environmentId}/users/wallets/selection Update wallet in a multi-wallet selection #
PUT /sdk/{environmentId}/users/embeddedWallets/passcode/claim Claim a pregenerated embedded wallet #
GET /sdk/{environmentId}/users/embeddedWallets/backup Return the backup key for the embedded wallet of the authenticated user #
POST /sdk/{environmentId}/users/embeddedWallets/upgradeToV2 Update V1 embedded wallet to V2 #
GET /sdk/{environmentId}/healthcheck #
POST /sdk/{environmentId}/refresh Endpoint to refresh the JWT auth token using the current valid JWT auth token in the authorization header #
GET /sdk/{environmentId}/emailProvider Get signin email provider #
GET /sdk/{environmentId}/providers/{providerType}/loginUrl Get redirect URL for Oauth provider login. This will return a string that the SDK can manipulate before redirecting the browser to. #
GET /sdk/{environmentId}/providers/{providerType}/login Get redirect URL for Oauth provider login #
GET /sdk/{environmentId}/providers/{providerType}/redirect Oauth provider redirect endpoint #
GET /sdk/{environmentId}/providers/cbOauthRedirectUrl Redirect URL for sign-in with coinbase #
POST /sdk/{environmentId}/providers/apple/redirect Oauth provider redirect endpoint for apple ID #
GET /sdk/{environmentId}/providers/{providerType}/authorizeHtml Oauth provider authorization endpoint #
POST /sdk/{environmentId}/providers/{providerType}/verify Oauth provider verify endpoint #
POST /sdk/{environmentId}/farcaster/signin Farcaster provider SignIn endpoint #
POST /sdk/{environmentId}/farcaster/verify Farcaster provider Verify endpoint #
POST /sdk/{environmentId}/providers/{providerType}/signIn Oauth provider SignIn endpoint #
POST /sdk/{environmentId}/providers/{providerType}/oauthResult Returns the authorization code or error retuned by oauth provider #
GET /sdk/{environmentId}/nonce Create nonce for authentication flow #
POST /sdk/{environmentId}/events Publish events for SDK #
GET /sdk/{environmentId}/settings Get the environment's settings #
POST /sdk/{environmentId}/sdkSettings Update SDK settings for a specific environment #
POST /sdk/{environmentId}/verify/merge Merge users with conflict resolutions #
POST /sdk/{environmentId}/verify/transfer Verify wallet transfer #
POST /sdk/{environmentId}/revoke Revoke a session #
POST /sdk/{environmentId}/prefetch prefetch information for wallet address #
POST /sdk/{environmentId}/connect Create a visit #
POST /sdk/{environmentId}/verify Verify payload and return JWT #
PUT /sdk/{environmentId}/users Update a user's fields #
GET /sdk/{environmentId}/users Fetch user profile for the current authenticated user #
DELETE /sdk/{environmentId}/users Hard delete a user #
PUT /sdk/{environmentId}/users/embeddedWallets/recoveryEmail Update a user's V2 recovery email #
GET /sdk/{environmentId}/users/passkeys Gets passkey data associated with a user #
PUT /sdk/{environmentId}/users/passkeys Update a passkey's info #
DELETE /sdk/{environmentId}/users/passkeys Delete a passkey #
GET /sdk/{environmentId}/users/passkeys/register Gets passkey data associated with a user #
POST /sdk/{environmentId}/users/passkeys/register Register a new passkey #
GET /sdk/{environmentId}/users/passkeys/authenticate Gets passkey authentication options #
POST /sdk/{environmentId}/users/passkeys/signin Authenticate a passkey #
GET /sdk/{environmentId}/users/passkeys/signin Gets passkey authentication options #
GET /sdk/{environmentId}/users/mfa Get the current user's MFA Devices #
GET /sdk/{environmentId}/users/mfa/methods Get the current user's MFA Methods #
GET /sdk/{environmentId}/users/mfa/{mfaDeviceId} Get the current user's MFA by device id #
PUT /sdk/{environmentId}/users/mfa/{mfaDeviceId} Update a device #
DELETE /sdk/{environmentId}/users/mfa/{mfaDeviceId} Delete a device (if not default device) #
GET /sdk/{environmentId}/users/mfa/register/totp Register a new TOTP MFA device and get Totp Secret #
POST /sdk/{environmentId}/users/mfa/register/totp Verify TOTP MFA device #
POST /sdk/{environmentId}/users/mfa/auth/totp Upgrade JWT scope with valid MFA session #
GET /sdk/{environmentId}/users/mfa/register/passkey Register a new Passkey MFA device #
POST /sdk/{environmentId}/users/mfa/register/passkey Verify Passkey MFA device #
POST /sdk/{environmentId}/users/mfa/auth/passkey Upgrade JWT scope with valid MFA session #
POST /sdk/{environmentId}/users/mfa/auth/email Upgrade JWT scope with valid MFA session #
POST /sdk/{environmentId}/users/mfa/auth/recovery Upgrade JWT scope with valid MFA session #
GET /sdk/{environmentId}/users/mfa/recovery Get recovery codes #
POST /sdk/{environmentId}/users/mfa/recovery Generate new recovery codes for user #
POST /sdk/{environmentId}/users/merge After successful verification allow to merge two owned accounts #
DELETE /sdk/{environmentId}/users/embeddedWallets/{walletId}/softDelete Soft delete an embedded wallet #
PUT /sdk/{environmentId}/users/embeddedWallets/{walletId}/restore Restore an embedded wallet #
POST /sdk/{environmentId}/users/embeddedWallets Create one or more new embedded wallets for a user #
DELETE /sdk/{environmentId}/users/embeddedWallets Deletes the embedded wallets for a user #
GET /sdk/{environmentId}/users/embeddedWallets/deleteRequest Generates the turnkey request body for a user's delete wallets request #
GET /sdk/{environmentId}/users/embeddedWallets/{walletId}/deleteRequest Generates the request body for a user's delete V2 wallets request #
POST /sdk/{environmentId}/users/embeddedWallets/walletAccounts Add a wallet account to a user's existing V2 wallet #
GET /sdk/{environmentId}/users/embeddedWallets/walletAccounts/createRequest Generates the request body for a user's create V2 wallet account request #
POST /sdk/{environmentId}/users/embeddedWallets/emailAuth Initialize the email authentication process for a user's embedded wallet #
POST /sdk/{environmentId}/users/embeddedWallets/passkeyRecovery Initialize the passkey recovery process for a user's passkey embedded wallet #
PUT /sdk/{environmentId}/users/embeddedWallets/passkeyRecovery Completes the passkey recovery process for a user's passkey embedded wallet #
POST /sdk/{environmentId}/users/embeddedWallets/sessionKey Registers a session key for an embedded wallet #
GET /sdk/{environmentId}/users/embeddedWallets/{walletId}/activities/{activityId}/export Requests an export of an embedded wallet #
GET /sdk/{environmentId}/networks Find the configuration for the enabled networks associated to an environment #
GET /sdk/{environmentId}/onramps Configuration for enabled onramps #
GET /sdk/{environmentId}/onramps/coinbase/networks Get Coinbase supported networks #
POST /sdk/{environmentId}/onramps/coinbase/orders Create a Coinbase onramp order #
POST /sdk/{environmentId}/onramps/coinbase/buy Generate a Coinbase onramp buy URL #
POST /sdk/{environmentId}/onramps/cryptoDotCom/payment Start Crypto.com payment #
POST /sdk/{environmentId}/emailVerifications/create Initialize email verification process #
POST /sdk/{environmentId}/smsVerifications/create Initialize sms verification process #
POST /sdk/{environmentId}/smsVerifications/retry Send new code for sms verification #
POST /sdk/{environmentId}/smsVerifications/verify Verify sms verification request #
POST /sdk/{environmentId}/smsVerifications/signin Verify an sms and sign in user #
POST /sdk/{environmentId}/emailVerifications/verify Verify email verification request #
POST /sdk/{environmentId}/emailVerifications/signin Verify an email and sign in user #
POST /sdk/{environmentId}/emailVerifications/retry Send new code for email verification #
GET /sdk/{environmentId}/.well-known/jwks Find jwks for public key #
GET /sdk/{environmentId}/.well-known/jwks.json Find jwks for public key (JSON format) #
GET /sdk/{environmentId}/exchangeRates #
GET /sdk/{environmentId}/chains/{chainName}/balances Get the token balances for an account #
POST /sdk/{environmentId}/balances Get account balances for multiple addresses #
GET /sdk/{environmentId}/telegram/auth Get HTML with rendered Telegram login widget #
POST /sdk/{environmentId}/telegram/auth Handle Telegram authentication #
POST /sdk/{environmentId}/telegram/signin Telegram provider SignIn endpoint #
POST /sdk/{environmentId}/checkTelegramAuth Telegram provider check auth #
POST /sdk/{environmentId}/telegram/verify Telegram provider Verify endpoint #
POST /sdk/{environmentId}/waas/create Create a new waas account #
POST /sdk/{environmentId}/waas/{walletId}/createRooms Create rooms for a waas mpc ceremony #
POST /sdk/{environmentId}/waas/createRooms Create rooms for a waas mpc ceremony without a walletId #
POST /sdk/{environmentId}/waas/{walletId}/refresh Refresh keyshares #
POST /sdk/{environmentId}/waas/privateKey/import Import an existing private key to create a waas account #
POST /sdk/{environmentId}/waas/{walletId}/privateKey/export Export private Key of a waas account #
POST /sdk/{environmentId}/waas/{walletId}/signMessage Sign a message with a waas account #
POST /sdk/{environmentId}/waas/{walletId}/keyShares/backup Backup multiple keyShares for a waaS wallet #
POST /sdk/{environmentId}/waas/{walletId}/keyShares/backup/googleDrive Backup multiple keyShares for a waaS wallet to Google Drive #
POST /sdk/{environmentId}/waas/{walletId}/keyShares/backup/location Create backup action and event for a specified location without performing actual backup #
POST /sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations Create backup action and event for multiple locations without performing actual backup #
POST /sdk/{environmentId}/waas/{walletId}/keyShares/recover Recover multiple keyShares #
POST /sdk/{environmentId}/waas/{walletId}/reshare Reshare secret shares and update the threshold #
POST /sdk/{environmentId}/waas/{walletId}/delegatedAccess/delivery Deliver encrypted delegated share #
PUT /sdk/{environmentId}/waas/{walletId}/settings Update the WAAS wallet settings for the wallet #
GET /sdk/{environmentId}/globalWallets/settings Get the global wallet settings for the environment #
POST /sdk/{environmentId}/globalWallets/connections Track a global wallet connection #
PUT /sdk/{environmentId}/globalWallets/connections/{globalWalletConnectionId}/disconnect Set a global wallet connection as disconnected #
GET /sdk/{environmentId}/oauthAccounts/{oauthAccountId}/accessToken Get the access token for a user OAuth account #
GET /sdk/{environmentId}/offramps Configuration for enabled offramps #
GET /sdk/{environmentId}/exchange/{exchangeKey}/accounts Get the exchange accounts for a given dynamic user #
GET /sdk/{environmentId}/exchange/{exchangeKey}/accounts/transactions Get the exchange account transactions for a given dynamic user #
POST /sdk/{environmentId}/exchange/{exchangeKey}/accounts/{accountId}/transfer Transfer funds from an exchange account to an external address or another Coinbase account #
GET /sdk/{environmentId}/exchange/{exchangeKey}/accounts/transfer/destinations Get the available exchange transfer destinations for account transactions for a given dynamic user #
GET /sdk/{environmentId}/waas/byWalletAddress/{walletAddress} Fetch a single WaaS wallet with verified credentials #
GET /sdk/{environmentId}/chains/{chainName}/transactions/{address} Get transactions for a wallet address #
POST /sdk/{environmentId}/ssoProvider Check SSO provider for email domain #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dynamic-xyz-sdk-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dynamic-xyz-sdk-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dashboard Allowlists SDK API
  description: Dashboard API documentation
  version: 1.0.0
servers:
- url: https://app.dynamicauth.com/api/v0
- url: https://app.dynamic.xyz/api/v0
- url: http://localhost:3333/api/v0
tags:
- name: SDK
paths:
  /environments/{environmentId}/users/{userId}/balances:
    post:
      operationId: getUserAccountBalances
      tags:
      - SDK
      summary: Get account balances for multiple addresses
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/userId'
      requestBody:
        description: Array of account addresses with chains and network IDs
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultichainAccountBalancesRequest'
      responses:
        '200':
          description: Token balances organized by chain and network
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MultichainAccountBalanceResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /exchangeRates:
    get:
      operationId: getExchangeRates
      tags:
      - SDK
      description: Exchange rates for the given currency
      responses:
        '200':
          description: Exchange rates response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeRatesResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/waas/keyShares/backup/token:
    get:
      operationId: getBackupToken
      tags:
      - SDK
      summary: Generate a short-lived JWT token for use with WAAS client backups.
      description: This endpoint generates a short-lived JWT token for use with WAAS client backups. The token is valid for 1 minute and can only be used for storing and retrieving client keyshare backups. A Dynamic Auth user must be authenticated and have a Dynamic JWT to use this endpoint.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: Successfully generated a short-lived JWT token for use with WAAS client backups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneratedTokenResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/check:
    get:
      operationId: getUserFieldsCheck
      tags:
      - SDK
      summary: Check user field uniqueness
      description: Check if the unique field value is already taken. For example, an enabled unique username or unique email. This also works with enabled unique custom fields.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        name: filter
        required: false
        style: form
        schema:
          $ref: '#/components/schemas/UserFieldsCheckParams'
      responses:
        '200':
          description: successful check
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFieldsCheckResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
      security:
      - bearerAuth: []
  /sdk/{environmentId}/providers/{providerType}/initAuth:
    post:
      operationId: initAuth
      tags:
      - SDK
      summary: Initialize oauth auth sequence
      description: This endpoint initializes a secure oauth authentication sequence by providing the state and current url path to the API.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      requestBody:
        description: OAuth temporary auth code
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OauthInitAuthRequest'
        required: true
      responses:
        '204':
          description: Empty response
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/session:
    get:
      operationId: sessionCheck
      summary: Check that session is valid
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '204':
          description: Empty response
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/scan/websiteUrl:
    post:
      summary: Scan a URL for potential malicious activity
      operationId: scanUrl
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanWebsiteUrlRequest'
      responses:
        '200':
          description: Successful scan result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanWebsiteUrlResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/solana/simulateTransaction:
    post:
      operationId: simulateSVMTransaction
      tags:
      - SDK
      summary: Simulate a Solana transaction
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateSVMTransactionRequest'
        required: true
      responses:
        '200':
          description: Simulated transaction result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/solana/sponsorTransaction:
    post:
      operationId: sponsorSVMTransaction
      tags:
      - SDK
      summary: Sponsor a Solana transaction via Grid API
      description: 'Sponsors a Solana transaction using the Grid API by Squads.

        The Grid API replaces the fee payer with a sponsored account so users don''t need SOL for gas.

        Only available for environments with SVM gas sponsorship enabled.

        '
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SponsorSVMTransactionRequest'
        required: true
      responses:
        '200':
          description: Sponsored transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SponsorSVMTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/evm/simulateTransaction:
    post:
      operationId: simulateEVMTransaction
      tags:
      - SDK
      summary: Simulate an EVM transaction
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateEVMTransactionRequest'
        required: true
      responses:
        '200':
          description: Simulated transaction result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/evm/simulateUserOp:
    post:
      operationId: simulateUserOp
      tags:
      - SDK
      summary: Simulate an EVM AA UserOp
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateUserOpRequest'
        required: true
      responses:
        '200':
          description: Simulated transaction result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/externalAuth/signin:
    post:
      operationId: externalAuthSignin
      summary: Endpoint to sign-in using a token issued by an external auth provider
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalAuthSigninRequest'
        required: true
      responses:
        '200':
          description: Successful external auth signin response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/solana/optimizeTransaction:
    post:
      summary: Add fees to a Solana transaction
      operationId: optimizeTransaction
      tags:
      - SDK
      security:
      - BearerAuth: []
      parameters:
      - name: environmentId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SolanaTransactionOptimizationRequest'
      responses:
        '200':
          description: Successfully optimized transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SolanaTransactionOptimizationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/externalAuth/verify:
    post:
      operationId: externalAuthVerify
      deprecated: true
      summary: '[DEPRECATED] Please use /externalAuth/signin instead'
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalAuthSigninRequest'
        required: true
      responses:
        '410':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/authToken:
    get:
      operationId: getAuthToken
      summary: Get auth token for given embedded wallet type
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        name: type
        schema:
          $ref: '#/components/schemas/EmbeddedWalletAuthType'
      responses:
        '200':
          description: embedded wallet auth token response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAuthToken'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/passcode:
    get:
      operationId: getEmbeddedWalletPasscode
      summary: Return the passcode for the pregenerated embedded wallet of the authenticated user
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: embedded wallet passcode response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletSecret'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '404':
          description: Not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/wallets/selection:
    put:
      operationId: selectUserWallet
      summary: Update wallet in a multi-wallet selection
      description: When a user selects a wallet to be the primary wallet in a multi-wallet enabled environment, this endpoint is called to record this on the backend.
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserWalletSelectionRequest'
        required: true
      responses:
        '200':
          description: Updated standard, minified JWT and full user profile object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/passcode/claim:
    put:
      operationId: claimEmbeddedWallet
      summary: Claim a pregenerated embedded wallet
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmbeddedWalletPasscodeClaimRequest'
        required: true
      responses:
        '200':
          description: Claim embedded wallet response with updated jwt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/backup:
    get:
      operationId: getEmbeddedWalletBackups
      summary: Return the backup key for the embedded wallet of the authenticated user
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: embedded wallet passcode response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletSecret'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '404':
          description: Not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/upgradeToV2:
    post:
      operationId: upgradeEmbeddedWalletToV2
      tags:
      - SDK
      summary: Update V1 embedded wallet to V2
      requestBody:
        description: Session info required to upgrade embedded wallet to V2
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeEmbeddedWalletToV2Request'
        required: true
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '201':
          description: Successfully migrated to V2 embedded wallet and refreshed jwt token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/healthcheck:
    get:
      operationId: getHealthcheck
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      description: Health check endpoint to check for uptime of API.
      responses:
        '200':
          description: Healthcheck response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthcheckResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/refresh:
    post:
      operationId: refreshAuth
      summary: Endpoint to refresh the JWT auth token using the current valid JWT auth token in the authorization header
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: Successful refreshed jwt token and user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/emailProvider:
    get:
      operationId: getEmailProvider
      tags:
      - SDK
      summary: Get signin email provider
      description: Return the email provider to be used for signing in with a given email. If an external provider such as magicLink is disabled, this endpoint would return emailOnly. If an external provider such as magicLink is enabled, it will return emailOnly when the email already exists in Dynamic and it is associated with a wallet, otherwise it will return magicLink.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        required: true
        name: email
        allowReserved: true
        schema:
          type: string
          format: email
      responses:
        '200':
          description: Email provider response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailProviderResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/loginUrl:
    get:
      operationId: oauthLoginUrl
      tags:
      - SDK
      summary: Get redirect URL for Oauth provider login. This will return a string that the SDK can manipulate before redirecting the browser to.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OauthProviderLoginUrl'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/login:
    get:
      operationId: oauthLogin
      tags:
      - SDK
      summary: Get redirect URL for Oauth provider login
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      responses:
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/redirect:
    get:
      operationId: oauthRedirectCode
      tags:
      - SDK
      summary: Oauth provider redirect endpoint
      description: Endpoint where an oauth provider would redirect after a successful user authorizing the oauth application.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      - in: query
        name: code
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthCode'
      - in: query
        name: scope
        allowReserved: true
        schema:
          type: string
      - in: query
        name: state
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: authuser
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: prompt
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: error
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthError'
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/cbOauthRedirectUrl:
    get:
      operationId: cbOauthRedirect
      tags:
      - SDK
      summary: Redirect URL for sign-in with coinbase
      description: This endpoint proxies requests to `/sdk/{environmentId}/providers/coinbasesocial/redirect` because Coinbase does not allow the string `coinbase` on the redirect URL path
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        name: code
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthCode'
      - in: query
        name: scope
        allowReserved: true
        schema:
          type: string
      - in: query
        name: state
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: authuser
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: prompt
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: error
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthError'
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/apple/redirect:
    post:
      operationId: oauthRedirectApple
      tags:
      - SDK
      summary: Oauth provider redirect endpoint for apple ID
      description: Endpoint where an oauth provider would redirect after a successful user authorizing the oauth application.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Apple ID required stuff
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/OauthRedirectRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/authorizeHtml:
    get:
      operationId: oauthAuthorizeHtml
      tags:
      - SDK
      summary: Oauth provider authorization endpoint
      description: Endpoint where an oauth provider would return authorization HTML used for mobile-friendly login, such as Apple ID with Touch ID on enabled devices.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      - in: query
        name: scope
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: state
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: redirect_uri
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OauthRedirectUri'
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          description: provider not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/verify:
    post:
      operationId: oauthVerify
      tags:
      - SDK
      summary: Oauth provider verify endpoint
      description: Standard OAuth verify callback to exchange temproary code for oauth access
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      requestBody:
        description: OAuth temporary auth code
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OauthRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/farcaster/signin:
    post:
      operationId: farcasterSignIn
      tags:
      - SDK
      summary: Farcaster provider SignIn endpoint
      description: Farcaster SignIn endpoint to exchange SIWF data
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Sign In Response
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FarcasterSignInRequest'
      responses:
        '200':
          description: Sign In Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/farcaster/verify:
    post:
      operationId: farcasterVerify
      tags:
      - SDK
      summary: Farcaster provider Verify endpoint
      description: Farcaster Verify endpoint to exchange SIWF data
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Verify Response
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FarcasterSignInRequest'
      responses:
        '200':
          description: Verify Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /sdk/{environmentI

# --- truncated at 32 KB (296 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dynamic-labs/refs/heads/main/openapi/dynamic-xyz-sdk-api-openapi.yml