> ## Documentation Index
> Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a sent transaction by its idempotency key

> For a caller that never received the transaction id. Reads stored state only.



## OpenAPI

````yaml https://app.dynamic.xyz/api-docs/public-api.yaml get /environments/{environmentId}/waas/delegatedAccess/signAndBroadcast
openapi: 3.0.1
info:
  title: Dashboard 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
security: []
tags:
  - name: Analytics
    description: Query usage analytics and event counts for your environment.
  - name: SDK
    description: SDK-facing endpoints consumed by embedded Dynamic clients.
  - name: Server
    description: Server-side SDK endpoints authenticated by environment API tokens.
  - name: Organizations
    description: >-
      Manage organizations — the top-level container for all environments and
      projects.
  - name: Projects
    description: Manage projects that group related environments under an organization.
  - name: Environments
    description: >-
      Manage environments (live and sandbox) where your authentication
      configuration lives.
  - name: Users
    description: List, search, and manage authenticated users within an environment.
  - name: Invites
    description: >-
      Manage invitation links that grant specific external users access to your
      environment.
  - name: Tokens
    description: >-
      Create and manage API tokens used to authenticate requests to the Dynamic
      API.
  - name: Origins
    description: >-
      Configure allowed origins (CORS) for SDK and API access to your
      environment.
  - name: Allowlists
    description: >-
      Manage allowlists to control which wallet addresses or email addresses can
      access your environment.
  - name: Wallets
    description: View and manage wallets linked to users in your environment.
  - name: Members
    description: Manage team members and their roles within an organization.
  - name: Sessions
    description: View and revoke active user sessions within an environment.
  - name: Settings
    description: Read and update environment-level configuration settings.
  - name: Exchanges
    description: >-
      Configure exchange integrations (Coinbase, Binance, etc.) for fiat on-ramp
      within your environment.
  - name: Yield
    description: List yield vaults registered for your environment.
  - name: Providers
    description: >-
      List, enable, disable, and configure authentication providers (OAuth,
      email, wallet, SMS, etc.) for your environment.
  - name: Captcha
    description: >-
      Configure captcha verification (provider, site key, secret key) for your
      environment.
  - name: Gates
    description: >-
      Define access gates that restrict environment entry to users who meet
      specific criteria.
  - name: Chains
    description: >-
      Manage the blockchain networks available for wallet connection in your
      environment.
  - name: Exports
    description: Export user and wallet data from your environment as downloadable files.
  - name: Events
    description: Browse the event log of actions performed within your environment.
  - name: Webhooks
    description: >-
      Create and manage webhooks to receive real-time events (user.created,
      wallet.linked, etc.) at your endpoint.
  - name: Custom Fields
    description: >-
      Define and manage custom metadata fields collected from users at sign-up
      or login.
  - name: MfaSettings
    description: >-
      Configure multi-factor authentication (MFA) policies for your
      organization.
  - name: Mfa
    description: Manage MFA enrollment and verification for individual users.
  - name: CustomHostnames
    description: >-
      Configure custom hostnames for white-labeling the Dynamic authentication
      experience.
  - name: TestAccount
    description: >-
      Manage test accounts used for automated testing and QA within an
      environment.
  - name: NameServices
    description: >-
      Configure name service integrations (ENS, Unstoppable Domains, etc.) for
      human-readable wallet addresses.
  - name: GlobalWallets
    description: >-
      Manage global wallets shared across multiple environments in an
      organization.
  - name: GlobalWalletConnections
    description: Configure which environments can access and use global wallets.
  - name: GlobalWalletAccessControl
    description: Control which users and roles can access and operate global wallets.
  - name: UserApiTokens
    description: >-
      Create and manage user-scoped API tokens for programmatic access on behalf
      of a user.
  - name: Waas
    description: Wallet-as-a-Service endpoints for creating and managing embedded wallets.
  - name: WalletConnect
    description: Configure WalletConnect integration settings for your environment.
  - name: Checkout
    description: >-
      Accept crypto payments and deposits from any wallet. Settle in any token
      you choose.
  - name: Flow
    description: >-
      Accept crypto payments, deposits, and withdrawals. Amount and destination
      are fixed server-side at create; the post-create lifecycle is driven with
      a capability session token.
  - name: FlowAnalytics
    description: >-
      Query aggregated analytics and paginated transaction lists for the Flow
      product.
  - name: Gasless
    description: >-
      Query billing summaries and paginated transaction lists for sponsored
      (gasless) transactions.
  - name: Custom Networks
    description: >-
      Add and manage custom EVM-compatible networks beyond the built-in chain
      list.
  - name: Chainalysis
    description: >-
      Configure Chainalysis integration for blockchain address screening and
      risk assessment.
  - name: Visits
    description: Track and query user visit activity within your environment.
  - name: ExternalJwt
    description: >-
      Configure external JWT providers so existing auth tokens can be used with
      Dynamic.
  - name: SDK Views
    description: >-
      Manage SDK view configurations that customize the appearance of Dynamic
      modals and flows.
  - name: DeeplinkUrls
    description: Configure deep link URLs for mobile app integration with the Dynamic SDK.
  - name: OrganizationSettings
    description: >-
      Read and update organization-level settings such as approval workflow
      configuration.
  - name: AdminActions
    description: >-
      Manage admin action requests that require approval from another
      administrator.
  - name: ClientGrant
    description: |
      OAuth 2.0 Device Authorization Grant flow (RFC 8628) used by first-party
      Dynamic clients (CLI, MCP server, demo apps, IDE plugins) to obtain a
      revocable, 30-day client JWT without ever seeing the user's dashboard
      session token.
  - name: AuthorizedClients
    description: |
      Manage first-party clients (CLI / MCP / demo / IDE plugins) authorized
      to act as a dashboard user. Surfaced under Profile → Authorized Clients.
  - name: Kyb
    description: >-
      Verify a business's identity via AI Prise passthrough and check KYB tier
      status.
  - name: BusinessAccounts
    description: >-
      Administer the business accounts (multi-operator wallet containers) that
      end users create in an environment.
  - name: ScreeningPolicies
    description: |
      Author per-vendor address screening policies that map TRM and Chainalysis
      signals to block, alert, or allow, plus per-address exceptions. The
      sanctions floor sits underneath every policy and is not configurable.
paths:
  /environments/{environmentId}/waas/delegatedAccess/signAndBroadcast:
    get:
      tags:
        - Waas
      summary: Get a sent transaction by its idempotency key
      description: >-
        For a caller that never received the transaction id. Reads stored state
        only.
      operationId: getDelegatedWaasTransactionSendByIdempotencyKey
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/sendIdempotencyKey'
      responses:
        '200':
          description: The transaction's current state
          headers:
            Retry-After:
              description: >-
                Seconds to wait before asking again. Absent once the status is
                terminal.
              schema:
                type: integer
            Cache-Control:
              description: Private caching for a terminal answer. Never shared.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasTransactionSend'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    environmentId:
      in: path
      name: environmentId
      required: true
      description: ID of the environment
      schema:
        $ref: '#/components/schemas/uuid'
    sendIdempotencyKey:
      in: header
      name: x-idempotency-key
      required: true
      description: >-
        Your repeat-protection key for one transaction, unique per environment.
        Repeating it with the same transaction returns the original; with a
        different transaction, 409.
      schema:
        type: string
        minLength: 1
        maxLength: 255
        pattern: ^[-A-Za-z0-9._~!$&'()*+,;=:@/]{1,255}$
  schemas:
    WaasTransactionSend:
      type: object
      required:
        - transactionId
        - status
        - chainType
        - chainId
        - walletAddress
        - idempotencyKey
        - requestedAt
      properties:
        transactionId:
          allOf:
            - $ref: '#/components/schemas/uuid'
          description: Dynamic's id for this transaction, the same on every event.
        status:
          $ref: '#/components/schemas/WaasTransactionSendStatus'
        reason:
          $ref: '#/components/schemas/WaasTransactionSendReason'
        errorMessage:
          type: string
          maxLength: 512
          description: >-
            Human-readable detail on a `reverted` or `failed` transaction,
            written by Dynamic and never a raw provider or node error. For a log
            or a support ticket; branch on `reason` instead.
        revertReason:
          type: string
          maxLength: 512
          description: >-
            The contract's own error, when the transaction landed and reverted.
            Public chain output, passed through untouched and capped in length.
        chainType:
          type: string
          enum:
            - evm
            - svm
        chainId:
          type: string
          description: >-
            An EVM chain id, or a Solana network id (101 mainnet, 103 devnet,
            201 Eclipse).
        walletAddress:
          type: string
        idempotencyKey:
          type: string
          description: The key the transaction was requested with.
        externalReference:
          type: string
          description: Your own label, as sent.
        transactionHash:
          type: string
          description: The live attempt's hash, once it is signed.
        blockExplorerUrls:
          $ref: '#/components/schemas/WaasBlockExplorerUrls'
        attempts:
          type: array
          description: Every signed version of the transaction, cheapest first.
          items:
            $ref: '#/components/schemas/WaasTransactionSendAttempt'
        nonce:
          allOf:
            - $ref: '#/components/schemas/WaasHexQuantity'
          description: >-
            EVM only. The transaction's nonce, the only safe one to reuse when
            replacing it.
        replacementFee:
          allOf:
            - $ref: '#/components/schemas/WaasSendEvmFee'
          description: >-
            EVM only, while the transaction is not final. The lowest fee a
            replacement at the same nonce would need to displace the live
            attempt.
        rooms:
          type: array
          description: >-
            The signing rooms, one per attempt, while status is
            pending_signature.
          items:
            $ref: '#/components/schemas/OpenRoomResponse'
        progress:
          $ref: '#/components/schemas/WaasTransactionSendProgress'
        requestedAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
          description: Present when the status is terminal.
    uuid:
      type: string
      pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
      minLength: 36
      maxLength: 36
      example: 95b11417-f18f-457f-8804-68e361f9164f
    WaasTransactionSendStatus:
      type: string
      description: >-
        Where the transaction has got to. `stalled` means nobody is pushing it
        any more and it can return to `confirming`. Tolerate values you do not
        recognise.
      enum:
        - pending_signature
        - signed
        - broadcasting
        - confirming
        - stalled
        - completed
        - reverted
        - failed
    WaasTransactionSendReason:
      type: string
      description: >-
        Why a transaction failed or stalled. Tolerate values you do not
        recognise.
      enum:
        - never_sent
        - rejected
        - expired
        - replaced
        - nonce_gap
        - ceremony_failed
        - assembly_failed
        - insufficient_funds
        - broadcaster_stopped
        - broadcaster_failed
    WaasBlockExplorerUrls:
      type: array
      items:
        type: string
        format: uri
        maxLength: 2048
    WaasTransactionSendAttempt:
      type: object
      description: One signed version of the transaction, at one fee.
      required:
        - live
      properties:
        transactionHash:
          type: string
          description: Present once this attempt is signed.
        fee:
          $ref: '#/components/schemas/WaasSendEvmFee'
        blockExplorerUrls:
          $ref: '#/components/schemas/WaasBlockExplorerUrls'
        live:
          type: boolean
          description: Whether this is the attempt currently sent. At most one is.
    WaasHexQuantity:
      type: string
      description: Unsigned integer as 0x-prefixed hex, without leading zeros.
      pattern: ^0x(0|[1-9a-fA-F][0-9a-fA-F]{0,63})$
    WaasSendEvmFee:
      type: object
      description: >-
        One fee. Either `gasPrice`, or `maxFeePerGas` with
        `maxPriorityFeePerGas`; both styles together are rejected with
        `ambiguous_fee_style`.
      additionalProperties: false
      properties:
        gasPrice:
          $ref: '#/components/schemas/WaasHexQuantity'
        maxFeePerGas:
          $ref: '#/components/schemas/WaasHexQuantity'
        maxPriorityFeePerGas:
          $ref: '#/components/schemas/WaasHexQuantity'
    OpenRoomResponse:
      type: object
      required:
        - roomId
      properties:
        roomId:
          description: Unique identifier of the opened MPC room
          type: string
        serverKeygenIds:
          description: List of existing server-side key generation identifiers
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyBase58StringWith100MaxLength'
        newServerKeygenIds:
          description: List of newly generated server-side key generation identifiers
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyBase58StringWith100MaxLength'
        walletId:
          $ref: '#/components/schemas/uuid'
    WaasTransactionSendProgress:
      type: object
      required:
        - reached
        - required
        - elapsedSeconds
      properties:
        reached:
          type: integer
          minimum: 0
          description: How far towards the requested certainty the transaction has got.
        required:
          type: integer
          minimum: 1
          description: Where it counts as confirmed, on the same scale as `reached`.
        elapsedSeconds:
          type: integer
          minimum: 0
          description: Seconds since the transaction was requested.
        detail:
          $ref: '#/components/schemas/WaasTransactionSendProgressDetail'
    BadRequest:
      type: object
      properties:
        error:
          description: Human-readable error message
          type: string
    Unauthorized:
      type: object
      properties:
        error:
          description: Human-readable error message describing the authentication failure
          type: string
          example: No jwt provided!
    NotFound:
      type: object
      required:
        - error
        - code
      properties:
        error:
          description: Human-readable error message
          type: string
          example: Not Found
        code:
          description: Machine-readable error code
          type: string
          example: not_found
    TooManyRequests:
      type: object
      properties:
        error:
          description: Human-readable error message indicating rate limit exceeded
          type: string
          example: Too Many Requests
    InternalServerError:
      type: object
      properties:
        error:
          description: Human-readable error message
          type: string
          example: Internal Server Error
    NonEmptyBase58StringWith100MaxLength:
      type: string
      pattern: ^[1-9A-HJ-NP-Za-km-z]+$
      maxLength: 100
      description: A base58 string with a max length of 100 characters
    WaasTransactionSendProgressDetail:
      type: object
      description: The same progress in the chain's own units.
      minProperties: 1
      maxProperties: 1
      properties:
        evm:
          $ref: '#/components/schemas/WaasTransactionSendEvmProgress'
        svm:
          $ref: '#/components/schemas/WaasTransactionSendSvmProgress'
    WaasTransactionSendEvmProgress:
      type: object
      required:
        - confirmations
      properties:
        confirmations:
          type: integer
          minimum: 0
          description: >-
            Blocks on top of the one holding the transaction, counting that
            block.
        requiredConfirmations:
          type: integer
          minimum: 1
          description: >-
            Confirmations needed. Absent when waiting for the chain's finalized
            block.
    WaasTransactionSendSvmProgress:
      type: object
      required:
        - commitment
        - requiredCommitment
      properties:
        commitment:
          $ref: '#/components/schemas/WaasSvmCommitment'
        requiredCommitment:
          $ref: '#/components/schemas/WaasSvmCommitment'
    WaasSvmCommitment:
      type: string
      description: A Solana commitment level.
      enum:
        - processed
        - confirmed
        - finalized
  responses:
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequest'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFound'
    TooManyRequests:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequests'
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'

````