Skip to main content

DFNS

MPC wallets and keys across many blockchains: transfers, transactions, signatures, policies and approvals, permissions, users, service accounts, staking, swaps, payins, payouts, vaults and webhooks.

DFNS Logo

Authentication​

This connector uses Token-based authentication.

info

Set up your connection in the Abstra Console before using it in your workflows.

How to use​

Using the Smart Chat​

Execute the action "CHOOSE_ONE_ACTION_BELOW" from my connector "YOUR_CONNECTOR_NAME" using the params "PARAMS_HERE".

Using the Web Editor​

from abstra.connectors import run_connection_action

result = run_connection_action(
connection_name="your_connection_name",
action_name="your_action_name",
params={
"param1": "value1",
"param2": "value2"
})

Available Actions​

This connector provides 267 actions:

ActionPurposeParameters
post_address_watchesRegisters an on chain address to watch. An address watch is not controlled by Dfns: it holds no key, it cannot sign or move funds. The indexer matches on chain activity touching the address and sends the corresponding webhooks. The address must already exist on chain and is normalized to the form the indexer matches on lowercase for EVM networks. Only networks that support address watches are accepted. A given address can only be watched once per network within an organization while the watch idata: {
. network
. address (string)
. name (string)
. externalId (string)
} (object) required
get_address_watchesRetrieves the list of address watches in your organization. Pagination is supported via limit and paginationToken parameters.limit (integer)
paginationToken (string)
delete_address_watches_by_address_watch_idDeletes an address watch. Once deleted, the address is not watched anymore, no webhook is sent for it, and it won't count in your overall organisation wallet count. Watching the same address again on the same network re-activates this watch, with the same ID and the same history.addressWatchId (string) required
get_address_watches_by_address_watch_idRetrieves an address watch by its ID.addressWatchId (string) required
get_address_watches_by_address_watch_id_assetsRetrieves the list of assets held by the address watch, as tracked by the indexer. Balances are tracked from the moment the watch is created.addressWatchId (string) required
netWorth (string)
get_address_watches_by_address_watch_id_blockchain_eventsRetrieves a list of decoded blockchain events indexed for the specified address watch. Blockchain events are not value transfers: asset and token transfers are listed by Get Address Watch Historyhttps://docs.dfns.co/api-reference/address-watches/get-address-watch-history instead. Events from the same transaction share the same txHash across both lists. Items are sorted by descending block number; within one block the item order is not the on-chain order. index is the block scoped log index asaddressWatchId (string) required
limit (integer)
paginationToken (string)
name (string)
contract (string)
txHash (string)
get_address_watches_by_address_watch_id_historyRetrieves the list of indexed on chain activities for the specified address watch. The list reflects the indexed on chain activity from the moment the watch was created. Events from before the watch are not backfilled.addressWatchId (string) required
limit (integer)
paginationToken (string)
direction (string)
kind (string)
contract (string)
get_agreements_latest_unacceptedGet the latest unaccepted agreement for a specific agreement typeagreementType (string) required
post_agreements_by_agreement_id_acceptRecord the acceptance of a specific agreement by its IDagreementId (string) required
post_allocations_get_0fns_quoteGet a price quote for a 0fns deposit or withdrawal at the current market rate.data: {
. walletId (string)
. protocol (string)
. kind (string)
. sourceAsset (object)
. targetAsset (object)
} (object) required
post_allocationsCreate a new allocation. An allocation deposits assets from one of your wallets into a rewards-earning protocol. Two providers are available: | Provider | Description | Supported chains | |-----------|---------------------------------------------------------------------------------------------------------------------------------|----------------------------------data required
get_allocationsLists the allocations of your organization.limit (integer)
paginationToken (string)
post_allocations_by_allocation_id_actionsCreate a new action for an existing allocation.allocationId (string) required
data required
get_allocations_by_allocation_id_actionsRetrieve the list of actions for a specific allocation.allocationId (string) required
limit (integer)
paginationToken (string)
get_allocations_by_allocation_idRetrieve the details of a specific allocation.allocationId (string) required
get_allocations_infoRetrieve the current reward rate APY for each supported allocation protocol.No parameters
post_allocations_cancel_0fns_order_placementCraft and broadcast an on-chain cancelOrder to cancel a 0fns OrderBook order placement that was not filled, reclaiming its escrow. The escrowed input token is returned to the wallet that funded the order.data: {
. allocationActionId (string)
. externalId (string)
. feeSponsorId (string)
} (object) required
post_auth_actionCompletes the user action signing process and provides a signing token that can be used to verify the user intended to perform the action. This is the first step of the User Action Signing flowhttps://docs.dfns.co/api-reference/auth/signing-flows. The type of credentials used to sign the action is determined by the kind field in the nested objects firstFactor and secondFactor. Supported credential kinds are: Fido2: User action is signed by a user's signing device using WebAuthn. Key: User acdata: {
. challengeIdentifier (string)
. firstFactor
. secondFactor
} (object) required
post_auth_action_initStarts a user action signing session, returning a challenge that will be used to verify the user's intent to perform an action. This is the first step of the User Action Signing flowhttps://docs.dfns.co/api-reference/auth/signing-flows.data: {
. userActionServerKind (string)
. userActionHttpMethod (string)
. userActionHttpPath (string)
. userActionPayload (string)
} (object) required
get_auth_action_logsGets all signature events which have occurred in the over the timeframe. The time range is unbounded, but the export is capped at 100,000 rows. When the result is truncated, the X-Dfns-Result-Truncated: true response header is set and a trailing TRUNCATED ... line is appended to the CSV; narrow the time range to retrieve all data. StartTime and EndTime are URL-encoded UTC ISO timestamps: startTime=2025-08-29T02%3A46%3A40Z endTime=2025-09-01T02%3A46%3A40Z An additional optional querystartTime (string) required
endTime (string) required
userId (string)
get_auth_action_logs_by_idGets detailed information for a particular audit log. Specifically, the API returns the action performed, as well as the firstFactorCredential in which you will find the signature information required to validate it. Dfns maintains a script which can be used for audit log signature validation: WebAuthn Signature Verifierhttps://github.com/dfns/dfns-sdk-python/tree/main/examples/verify-webauthn-signature Because the response includes the full signed action request body and path, details are oid required
get_auth_appsWarning Applications are deprecated and will be removed in a future release. See details herehttps://docs.dfns.co/deprecation/applications-deprecation. /WarningNo parameters
get_auth_apps_by_app_idWarning Applications are deprecated and will be removed in a future release. See details herehttps://docs.dfns.co/deprecation/applications-deprecation. /WarningappId (string) required
post_auth_credentialsPart of the flow Create Credential Regular flowhttps://docs.dfns.co/api-reference/auth/credentials regular-flow. Adds a new credential to a user's account. See Credential Kindshttps://docs.dfns.co/api-reference/auth/credentials credential-kinds for all supported credential types.data required
get_auth_credentialsList all credentials for a user.No parameters
post_auth_credentials_initPart of the flow Create Credential Regular flowhttps://docs.dfns.co/api-reference/auth/credentials regular-flow. Starts a create user credential session, returning a challenge that will be used to verify the user's identity.data: {
. kind (string)
} (object) required
put_auth_credentials_activateActivates a credential that was previously deactivated. If the credential is already activated no action is taken.data: {
. credentialUuid (string)
} (object) required
delete_auth_credentials_by_credential_uuidDelete a specific credential.credentialUuid (string) required
put_auth_credentials_deactivateDeactivates a credential that was previously active. If the credential is already deactivated no action is taken.data: {
. credentialUuid (string)
} (object) required
post_auth_credentials_codePart of the Create Credential With Code flowhttps://docs.dfns.co/api-reference/auth/credentials create-credential-with-code-flow. Creates a one-time-code that can then be used to create a new credential from a place you don't have access to one of your existing credential.data: {
. expiration
} (object) required
post_auth_credentials_code_initPart of the flow Create Credential With Codehttps://docs.dfns.co/api-reference/auth/credentials create-credential-with-code-flow. Creates a credential challenge using a one time code-time-code. This challenge must then be signed by the new credential, before finalizing the flow.data: {
. credentialKind (string)
. code (string)
} (object) required
post_auth_credentials_code_verifyFinalizes the flow Create Credential With Codehttps://docs.dfns.co/api-reference/auth/credentials create-credential-with-code-flow. Adds a new credential to a user's account. This endpoint is similar to the Create Credentialhttps://docs.dfns.co/api-reference/auth/create-credential endpoint, except: it does not need the user to be authenticated it does not need user action signing it will only work with the challenge gotten from the Create Credential Challenge With Codehttps://docs.dfns.co/data required
post_auth_login_initStart a user login session, returning a challenge that will be used to verify the user's identity. If the user has a credential of kind PasswordProtectedKey a temporary one time code needs to be passed in the loginCode field. If the user has at least one discoverable WebAuthn credential, username is optional username-less flow.data: {
. username (string)
. orgId (string)
. tenantId (string)
. loginCode (string)
} (object) required
post_auth_login_delegatedWarning Only a Service Accounthttps://docs.dfns.co/api-reference/auth/service-accounts can use this endpoint. /Warning Logs a user into an organization without the user's credentials. If you want to use your own authentication system, while still using Delegated Signing, you can use this endpoint to authenticate a user without needing the user's credentials. The user authentication token can be used for read operations within the Dfns API, however, write operations will still require the udata: {
. username (string)
} (object) required
post_auth_loginCompletes the login process and provides the authenticated user with their authentication token. The type of credentials used to login is determined by the kind field in the nested objects firstFactor and secondFactor. Supported credential kinds are: Fido2: Login challenge is signed by a user's signing device using WebAuthn. Key: Login challenge is signed by a user's private key. PasswordProtectedKey: Login challenge is signed by the decrypted user's private key that was sent during the Creadata: {
. challengeIdentifier (string)
. firstFactor
. secondFactor
} (object) required
put_auth_logoutCompletes the user logout process.data: {
. allSessions (boolean)
} (object) required
post_auth_login_oidc_credentialsRegisters the first credential for an OIDC-authenticated user, bootstrapping from the credential challenge issued by OIDC Login/api-reference/auth/complete-oidc-login. Rejected if the user already has an active first-factor credential; use Create Credential/api-reference/auth/create-credential in that case.data required
post_auth_login_oidcCompletes the OIDC login process by exchanging the authorization code obtained from the identity provider. Returns the user's authentication token; when the verified user has no active first-factor credential yet, the response also includes a credential challenge so the client can register one before performing any user-action-signed operation.data: {
. code (string)
. state (string)
} (object) required
post_auth_login_oidc_initInitialize the OIDC login process by returning the identity provider authorization URL to redirect the user to.data: {
. orgId (string)
. tenantId (string)
. redirectUri (string)
. nonce (string)
} (object) required
post_auth_login_codeSends a temporary one time code to the user that can be used during login flow. If the user has a credential of kind PasswordProtectedKey a temporary one time code needs to be passed in the loginCode field. That's because the Create Login Challengehttps://docs.dfns.co/api-reference/auth/create-login-challenge is unauthenticated and returns the encrypted private key of the user. So we need a first step to verify the identity of the user to prevent anybody from fetching the encrypted private kdata: {
. username (string)
. orgId (string)
. tenantId (string)
} (object) required
post_auth_login_socialLogs a user in with a JWT id token issued by a social login provider and provides the authenticated user with their authentication token.data: {
. orgId (string)
. socialLoginProviderKind (string)
. idToken (string)
} (object) required
post_auth_login_ssoCompletes the SSO login process by exchanging the authorization code obtained from the identity provider for the user's authentication token.data: {
. code (string)
. state (string)
} (object) required
post_auth_login_sso_initInitialize the login process with SSO by returning the IdP URL to call.data: {
. orgId (string)
. tenantId (string)
. clientId (string)
. redirectUri (string)
} (object) required
post_auth_tokensOnly for TenantUsers - Exchanges the current user access token, for an org-bound or tenant-bound token. The user must have access to the target org / tenant. The new access token expiration won't exceed the current token's one.data: {
. target (string)
} (object) required
get_auth_patsRetrieve the list of your Personal Access Tokens.No parameters
post_auth_patsCreate a new Personal Access Token for the caller.data: {
. name (string)
. publicKey (string)
. permissionId (string)
. externalId (string)
. daysValid (integer)
. secondsValid (integer)
} (object) required
get_auth_pats_by_token_idRetrieve a specific Personal Access Token.tokenId (string) required
put_auth_pats_by_token_idUpdate a specific Personal Access Token.tokenId (string) required
data: {
. name (string)
. externalId (string)
} (object) required
delete_auth_pats_by_token_idDelete a specific Personal Access Token.tokenId (string) required
put_auth_pats_by_token_id_activateActivate a specific Personal Access Token.tokenId (string) required
put_auth_pats_by_token_id_deactivateDeactivates a personal access token that was previously active. If the token is already deactivated no action is taken.tokenId (string) required
post_auth_recover_user_delegatedWarning Only a Service Accounthttps://docs.dfns.co/api-reference/auth/service-accounts can use this endpoint. /Warning Starts a recovery session for an end user under your brand, without sending a Dfns recovery email. Call this after you have verified the user's identity with your own auth system. The response returns a recovery challenge. Pass it to your frontend so the user can decrypt their recovery credential and sign, then call Recover Userhttps://docs.dfns.co/api-reference/auth/recover-data: {
. username (string)
. credentialId (string)
} (object) required
post_auth_recover_userRecovers a user, using a recovery credential. After successfully recovering the user, all of the user's previous credentials and personal access tokens will be invalidated. This flow requires cryptographic validation of newly created credentials using a recovery credential. The recovery.credentialAssertion.clientData field's challenge must be the base64url-encoded representation of the newCredential object. The process is as follows: 1. Construct the newCredential object, using the challengdata: {
. recovery (object)
. newCredentials (object)
} (object) required
post_auth_recover_user_initStarts a user recovery session, returning a challenge that will be used to verify the user's identity.data: {
. username (string)
. verificationCode (string)
. orgId (string)
. tenantId (string)
. credentialId (string)
} (object) required
post_auth_recover_user_codeSend the user a recovery verification code. This code is used as a second factor to verify the user initiated the recovery request.data: {
. username (string)
. orgId (string)
. tenantId (string)
} (object) required
post_auth_registration_delegatedWarning Only a Service Accounthttps://docs.dfns.co/api-reference/auth/service-accounts can use this endpoint. /Warning Registers a new End User in your organization and returns a registration challenge, without sending a Dfns registration email. Use this when your application owns the authentication system and you want delegated signing under your brand. The response includes: 1. A new EndUser attached to your organization. 2. A registration challenge plus a temporaryAuthenticationToken to autdata: {
. email (string)
. kind (string)
. externalId (string)
} (object) required
post_auth_registration_initStarts a user registration session. It returns a challenge that will need to be signed by a passkey and used to perform the step Complete User Registration/api-reference/auth/complete-user-registrationdata: {
. orgId (string)
. tenantId (string)
. username (string)
. registrationCode (string)
} (object) required
post_auth_registration_socialStarts an end-user registration session by passing a JWT obtained by an IdP. It returns a challenge that will need to be signed by a passkey and used to perform Complete End User Registration with Wallets/api-reference/auth/complete-end-user-registration-with-wallets.data: {
. orgId (string)
. socialLoginProviderKind (string)
. idToken (string)
} (object) required
post_auth_registrationCompletes the user registration process and creates the user's initial credentials. All credentials submitted in this call firstFactorCredential, secondFactorCredential, recoveryCredential sign the same challenge returned by the registration init endpoint Create Registration Challengehttps://docs.dfns.co/api-reference/auth/create-registration-challenge, Create Delegated Registration Challengehttps://docs.dfns.co/api-reference/auth/create-delegated-registration-challenge, or Create Social Registdata: {
. firstFactorCredential
. secondFactorCredential
. recoveryCredential (object)
} (object) required
post_auth_registration_enduserCompletes the end user registration process and creates the user's initial credentials along with delegated wallets for the new end user. All credentials submitted in this call firstFactorCredential, secondFactorCredential, recoveryCredential sign the same challenge returned by the registration init endpoint Create Delegated Registration Challengehttps://docs.dfns.co/api-reference/auth/create-delegated-registration-challenge or Create Social Registration Challengehttps://docs.dfns.co/api-referedata: {
. firstFactorCredential
. secondFactorCredential
. recoveryCredential (object)
. wallets (array)
} (object) required
put_auth_registration_codeSends the user a new registration code. The previous registration code will be marked invalid. If the user has already completed their registration no action will be taken.data: {
. username (string)
. orgId (string)
. tenantId (string)
} (object) required
get_auth_service_accountsList all Service Accounts in your organization.No parameters
post_auth_service_accountsCreate a new Service Account for your organization.data: {
. name (string)
. publicKey (string)
. permissionId (string)
. externalId (string)
. daysValid (integer)
. federatedIdentity (object)
} (object) required
get_auth_service_accounts_by_service_account_idGet information about a specific Service Account.serviceAccountId (string) required
put_auth_service_accounts_by_service_account_idUpdate a specific Service Account.serviceAccountId (string) required
data: {
. name (string)
. externalId (string)
} (object) required
delete_auth_service_accounts_by_service_account_idDelete a specific Service Account.serviceAccountId (string) required
force (boolean,null)
put_auth_service_accounts_by_service_account_id_activateActivate a specific Service Account.serviceAccountId (string) required
put_auth_service_accounts_by_service_account_id_deactivateDeactivate a specific Service Account.serviceAccountId (string) required
data: {
. force (boolean)
} (object) required
post_auth_service_accounts_credentialsAdd a new Key credential to the OIDC service account authenticated by this request. The caller must be an OIDC service account — the IdP access token identifies the SA; the user-action is signed with an existing active credential to prove rotation authority.data: {
. publicKey (string)
. name (string)
} (object) required
delete_auth_service_accounts_credentials_by_credential_uuidDelete a credential of the OIDC service account authenticated by this request. The caller must be an OIDC service account. At least one active credential must remain after the delete.credentialUuid (string) required
put_auth_users_by_user_id_activateActivate a specific User.userId (string) required
put_auth_users_by_user_id_deactivateDeactivate a specific User.userId (string) required
delete_auth_users_by_user_idDelete a specific User.userId (string) required
get_auth_users_by_user_idRetrieve information about a specific User.userId (string) required
put_auth_users_by_user_idUpdate a specific User.userId (string) required
data: {
. isSSORequired (boolean)
} (object) required
post_auth_usersInvite a new user in the caller's org. This will create the user and send a registration email to the created User's email, with a registration code, and pointing him to complete his registration on Dfns Dashboard. The user is created without any permissions. NoteIf you want the created User to not know about about Dfns, and don't want him to receive the registration email from Dfns, you should rather use the Delegated Registration endpoint./Notedata: {
. email (string)
. kind (string)
. publicKey (string)
. externalId (string)
. isSSORequired (boolean)
} (object) required
get_auth_usersList all Users in your organization.limit (integer)
paginationToken (string)
kind
post_auth_users_inviteInvite an existing Tenant User in the caller's org. The invited Tenant User starts without any permissions within the org.data: {
. email (string)
. kind (string)
} (object) required
post_auth_user_groupsCreate a user group in the caller's org. A group holds permissions through the regular permission assignment endpoint, and its members hold those permissions in addition to their own.data: {
. name (string)
. description (string)
} (object) required
get_auth_user_groupsList the user groups in the caller's org.limit (integer)
paginationToken (string)
get_auth_user_groups_by_user_group_idGet a specific user group.userGroupId (string) required
put_auth_user_groups_by_user_group_idRename a user group or change its description. Fields left out keep their value. Its permissions and members are unaffected.userGroupId (string) required
data: {
. name (string)
. description (string,null)
} (object) required
delete_auth_user_groups_by_user_group_idDelete a user group. Its permission assignments are revoked and its members are removed. The name can be reused.userGroupId (string) required
get_auth_user_groups_by_user_group_id_membersList the members of a user group.userGroupId (string) required
limit (integer)
paginationToken (string)
post_auth_user_groups_by_user_group_id_membersAdd users to a user group. Each member gains every permission assigned to the group, in addition to their own.userGroupId (string) required
data: {
. userIds (array)
} (object) required
delete_auth_user_groups_by_user_group_id_membersRemove users from a user group. Each removed user immediately loses every permission they held only through this group.userGroupId (string) required
data: {
. userIds (array)
} (object) required
get_exchanges_by_exchange_idRetrieve the details of a specific exchange integration configuration.exchangeId (string) required
delete_exchanges_by_exchange_idDelete the exchange configuration from your organization.exchangeId (string) required
post_exchangesLink your organization with a cryptocurrency exchange.data: {
. name (string)
. kind (string)
. readConfiguration (object)
. writeConfiguration (object)
} (object) required
get_exchangesList all configured exchange integrations.limit (integer)
paginationToken (string)
get_exchanges_by_exchange_id_accountsGet a list of accounts for a specific exchange.exchangeId (string) required
limit (integer)
paginationToken (string)
get_exchanges_by_exchange_id_accounts_by_account_id_assetsRetrieve the list of assets for a specific account on a specific exchange.exchangeId (string) required
accountId (string) required
limit (integer)
paginationToken (string)
get_exchanges_by_exchange_id_accounts_by_account_id_assets_by_asset_withdrawal_networksLists the networks to which the given asset can be withdrawn from an exchange account.exchangeId (string) required
accountId (string) required
asset (string) required
post_exchanges_by_exchange_id_accounts_by_account_id_depositsCreates a new exchange deposit transaction.exchangeId (string) required
accountId (string) required
data required
post_exchanges_by_exchange_id_accounts_by_account_id_withdrawalsCreates a new exchange withdrawal transaction.exchangeId (string) required
accountId (string) required
data required
post_fee_sponsorsCreates a new FeeSponsor associated with a sponsor wallet. Returns a new fee sponsor entity with the id to be used when making a transfer.data: {
. name (string)
. walletId (string)
. allowEndUser (boolean)
} (object) required
get_fee_sponsorsRetrieves all Fee Sponsors configured in your organization.limit (integer)
paginationToken (string)
get_fee_sponsors_by_fee_sponsor_idRetrieve a Fee Sponsor information by ID.feeSponsorId (string) required
delete_fee_sponsors_by_fee_sponsor_idDelete a Fee Sponsor. This action is irreversible. The fee sponsor won't be able to be used anymore when making a transfer.feeSponsorId (string) required
put_fee_sponsors_by_fee_sponsor_id_deactivateDeactivate a Fee Sponsor: The fee sponsor won't be able to be used anymore when making a transfer.feeSponsorId (string) required
put_fee_sponsors_by_fee_sponsor_id_activateActivate a Fee Sponsor: The fee sponsor can be used when making a transfer.feeSponsorId (string) required
get_fee_sponsors_by_fee_sponsor_id_feesRetrieves all fees paid by the specific Fee Sponsor.feeSponsorId (string) required
limit (string)
paginationToken (string)
post_keysCreates a key for the given scheme and curve. Returns the new key entity.data: {
. scheme (string)
. curve (string)
. name (string)
. masterKey (boolean)
. deriveFrom (object)
. storeId (string)
. delegateTo (string)
. delayDelegation (boolean)
} (object) required
get_keysRetrieve all keys registered for your organization.limit (integer)
paginationToken (string)
owner (string)
post_keys_by_key_id_delegateWarning Only keys created with 'delayDelegation: true' can then be delegated to an end-user. It means you need to know ahead of time that you're creating a wallet meant to be delegated to an end-user later. This is a safety to prevent, for example, a treasury wallet from being unintentionally delegated to an end-user. /Warning Note When a key is delegated to an end user, all wallets using this key as the signing key are also automatically delegated to the same end user. Key and wallet ownershipkeyId (string) required
data: {
. delegateTo (string)
} (object) required
delete_keys_by_key_idDeletes the key and all wallets using this key. Once deleted, keys and wallets are not usable anymore, and won't count in your overall organisation wallet count.keyId (string) required
get_keys_by_key_idRetrieves a key information by its ID.keyId (string) required
put_keys_by_key_idUpdates the name of an existing key.keyId (string) required
data: {
. name (string,null)
} (object) required
post_keys_by_key_id_deriveDfns decentralized key management network supports threshold Diffie-Hellman protocol based on GLOW20 paperhttps://eprint.iacr.org/2020/096. You can use the DH protocol to derive output from a domain separation tag and a seed value. The derivation process is deterministic, i.e. the same Diffie-Hellman key and seed will lead to the same derived output. To ensure reproducibility, we use hash to curve RFC9380https://www.rfc-editor.org/rfc/rfc9380.html and standard ciphersuite secp256k1_XMD:SHA-256_SkeyId (string) required
data: {
. domain (string)
. seed (string)
} (object) required
post_keys_by_key_id_exportDfns secures private keys by generating them as MPC key shares in our decentralized key management network. Our goal is to eliminate all single points of failure SPOFs associated with blockchain private keys. In certain circumstances, however, customers require Dfns to export a private key. In this case, Dfns exposes the following endpoint which can be used in conjunction with our export SDKhttps://github.com/dfns/dfns-sdk-ts/tree/m/examples/sdk/export-wallet. Each signer returns its key sharekeyId (string) required
data: {
. encryptionKey (string)
. supportedSchemes (array)
} (object) required
post_keys_by_key_id_signaturesRequest to generate a signature with the key. This process does not broadcast anything on-chain, this is just an off-chain signature request. Dfns is compatible with any blockchain that uses a supported key formathttps://docs.dfns.co/networks/supported-key-formats. If Dfns doesn't officially integrate with a blockchain, you can use hash signing to generate the signatures to interact with the chain. Note If you were using the deprecated POST /wallets/walletId/signatures endpoint, then you shoulkeyId (string) required
data required
get_keys_by_key_id_signaturesList all signature requests for a key.keyId (string) required
limit (integer)
paginationToken (string)
get_keys_by_key_id_signatures_by_signature_idRetrieve a signature request details.keyId (string) required
signatureId (string) required
post_keys_importDfns secures private keys by generating them as MPC key shares in our decentralized key management network. This happens by default when you create a keyhttps://docs.dfns.co/api-reference/keys/create-key or wallethttps://docs.dfns.co/api-reference/wallets/create-wallet. In some circumstances, however, you may need to import an existing private key into Dfns infrastructure, instead of creating a brand new wallet with Dfns and transfer funds to it. As an example, you might want to keep an existidata: {
. name (string)
. curve (string)
. protocol
. minSigners (integer)
. encryptedKeyShares (array)
. masterKey (boolean)
} (object) required
get_networks_feesGets real-time fee details for a given network, allowing users to make decisions based on their preferences for transaction speed/priority. Three levels of priority will be displayed: slow, standard, fast. Legacy pre-London EVM networks such as Ethereum Classic do not support EIP-1559 fee estimation and are not listed here. When broadcasting on those networks, omit priority and a legacy gasPrice is filled automatically.network (string) required
post_networks_by_network_call_functionCall a read-only function on a smart contract. In Solidity, these are functions with the state mutability set to view. Note Currently only works on EVM compatible chains. /Notenetwork (string) required
data: {
. contract (string)
. abi (object)
. calldata (object)
} (object) required
get_networks_by_network_validators_by_validator_idReturn a configured Canton Validator in your organization.network (string) required
validatorId (string) required
put_networks_by_network_validators_by_validator_idUpdate an existing Canton Validator configuration. Read details about the process herehttps://docs.dfns.co/networks/canton.network (string) required
validatorId (string) required
data: {
. name (string)
. validator (object)
. ledger (object)
} (object) required
delete_networks_by_network_validators_by_validator_idDelete a specific Canton Validator configuration.network (string) required
validatorId (string) required
post_networks_by_network_validatorsLink a Canton Validator to your organization. This is required in order to create wallets or interact with the Canton network. The Shared option allows you to use a shared validator hosted by Dfns and get started in seconds, while the Custom option allows you to connect your own validator and ledger nodes using OAuth2 authentication. Read details about the process herehttps://docs.dfns.co/networks/canton.network (string) required
data required
get_networks_by_network_validatorsRetrieve the list of configured Canton Validators in your organization.network (string) required
limit (integer)
paginationToken (string)
post_networks_by_network_transactions_reindexRe-index a finalized transaction that is missing from your wallets' history. A transaction that is already indexed is not processed again. Note Limited to 10 requests per organization per 10 minutes. /Notenetwork (string) required
data: {
. txHash (string)
} (object) required
post_payinsDeliver stablecoin from the organisation's provider balance to a wallet on-chain.data required
get_payinsList payins with optional filtering and pagination.limit (integer)
paginationToken (string)
walletId (string)
status (array)
provider (array)
post_payins_quoteRequest a quote from a given provider for a payin. Returns the stablecoin amount to be delivered and the fees.data required
post_payins_recipientsRegister a wallet's address as an payin recipient with the provider. The registration then needs to be approved on the provider's side for Circle Mint: by an administrator in the Mint Console before payins to that wallet can be created.data required
get_payins_recipientsCheck whether a wallet's address is registered and approved as an payin recipient with the provider.provider (string) required
walletId (string) required
currency (string) required
get_payins_by_payin_idRetrieve the current status of an payin by its ID.payinId (string) required
get_payins_accountsList the provider accounts, with their registered wallet addresses per asset. An account is created on the provider platform e.g. the Borderless dashboard and its registered addresses serve both directions: a payin delivers to — and a payout is funded from — a wallet whose address is registered on the account.provider (string) required
get_payins_balancesThe organisation's available balance at the payin provider, one entry per currency — the funds payins can deliver on-chain.provider (string) required
get_payins_optionsList the currently available payin options — deliverable assets and fiat currency/payment-method/country combinations — as covered by the active provider institutions.provider (string) required
post_payins_accounts_assetsRegister a wallet's address for an asset on a provider account, a prerequisite for both payins the wallet receives the delivered asset and payouts the wallet funds the withdrawal. Returns the updated account.data required
post_payoutsCreate a new payout to convert crypto assets to fiat currency.data required
get_payoutsList payouts with optional filtering and pagination.limit (integer)
paginationToken (string)
walletId (string)
status (array)
provider (array)
post_payouts_quoteRequest a quote from a given provider for a payout. Returns estimated fiat amount and fees.data required
get_payouts_by_payout_idRetrieve the current status of a payout by its ID.payoutId (string) required
post_payouts_by_payout_id_actionPerform an action on a payout, such as confirming or canceling.payoutId (string) required
data required
put_permissions_by_permission_id_archive@deprecated in favor of 'deletePermission'. Deletes a permission aka 'Role'.permissionId (string) required
data: {
. isArchived (boolean)
} (object) required
delete_permissions_by_permission_idDeletes a permission aka 'Role'.permissionId (string) required
get_permissions_by_permission_idRetrieves a permission role by ID, including any pending change request.permissionId (string) required
put_permissions_by_permission_idUpdates the name or operations of an existing permission role.permissionId (string) required
data: {
. name (string)
. operations (array)
} (object) required
post_permissions_by_permission_id_assignmentsAssigns a permission role to an identity user, PAT, service account or user group, granting it access to the operations defined in the permission. Returns the assignment on success 200, or a pending change request if approval is required 202.permissionId (string) required
data: {
. identityId (string)
} (object) required
get_permissions_by_permission_id_assignmentsLists all permission role assignments for a given permission.permissionId (string) required
limit (integer)
paginationToken (string)
post_permissionsCreates a new permission also referred to as 'role' in the dashboard that grants access to the specified API operations.data: {
. name (string)
. operations (array)
} (object) required
get_permissionsLists all permissions roles in the organization.limit (integer)
paginationToken (string)
delete_permissions_by_permission_id_assignments_by_assignment_idRevokes a permission role assignment, removing the identity's access to the operations granted by the permission.permissionId (string) required
assignmentId (string) required
force (boolean,null)
delete_v2_policies_by_policy_idDelete an existing policy.policyId (string) required
get_v2_policies_by_policy_idRetrieve information about a specific policy.policyId (string) required
put_v2_policies_by_policy_idUpdate an existing policy. The policy status is not editable through this endpoint — the update body has no status field. To deactivate a policy, use the Archive Policy endpoint instead.policyId (string) required
data required
post_v2_policy_approvals_by_approval_id_decisionsApprove or Reject an Approval request.approvalId (string) required
data: {
. value (string)
. reason (string)
} (object) required
post_v2_policiesSetup a new Policy for your organization. Every policy requires a rule to be specified. Upon policy evaluation, the configuration specified in the rule will be used to determine whether the policy should trigger or not for a given activity. By exposing controls on permissions and policies, Dfns enables the specification of an admin quorum to approve sensitive actions which could change system governance. Note Dfns does not expose a separate 'admin quorum' concept like some of our comdata required
get_v2_policiesRetrieve the list of policies on your organization.limit (string)
paginationToken (string)
status (string)
get_v2_policies_travel_rule_sumsub_public_keyRetrieve the RSA public key JWK, RFC 7517 of the org's Sumsub Travel Rule integration. Use it to JWE-encrypt RSA-OAEP-256 / A256GCM, compact serialization the JWS-signed IVMS101 payload client-side before submitting a transfer screened by a Sumsub Travel Rule policy. Requires Travel Rule to be enabled for the tenant and an activated Sumsub integration on the org.No parameters
get_v2_policy_approvals_by_approval_idRetrieve information about a specific approval request.approvalId (string) required
get_v2_policy_approvalsRetrieve the list of pending approval requests.limit (string)
paginationToken (string)
status (string)
initiatorId (string)
approverId (string)
post_key_stores_by_store_id_fleet_operations_cancelCancel Fleet OperationstoreId (string) required
data: {
. groupId (string)
. reason (string)
} (object) required
post_key_stores_by_store_id_add_mac_user_inputCreates the input archive for an add-mac-user fleet operation, which registers a new Mac operator machine with an HSM in the key store's trust set.storeId (string) required
data: {
. kind (string)
. macTargetSerial (string)
. hsmTargetSerial (string)
} (object) required
post_key_stores_by_store_id_add_provisioner_inputCreates the input archive for an add-provisioner fleet operation, which registers a new provisioner YubiKey into the key store's governance set.storeId (string) required
data: {
. kind (string)
. yubikeySerial (string)
. hsmTargetSerial (string)
} (object) required
post_key_stores_by_store_id_clone_inputCreates the input archive for a clone fleet operation, which replicates a key store from a source HSM to a target HSM.storeId (string) required
data: {
. kind (string)
. hsmSourceSerial (string)
. hsmTargetSerial (string)
. macTargetSerial (string)
} (object) required
post_key_stores_by_store_id_genesis_inputCreates the input archive for a genesis fleet operation, which provisions a new offline signer fleet and generates the key store's initial signing keys.storeId (string) required
data: {
. kind (string)
. numProvisioners (integer)
. numOperational (integer)
. numSecp256k1 (integer)
. numEd25519 (integer)
. hsmGenesisSerial (string)
. macGenesisSerial (string)
. hsmGenesisFirmwareVersion (string)
. debugOptions (object)
} (object) required
post_key_stores_by_store_id_key_harvest_inputCreate Key Harvest InputstoreId (string) required
data: {
. kind (string)
. hsmTargetSerial (string)
. macTargetSerial (string)
. macTargetUsername (string)
. numSecp256k1 (integer)
. numEd25519 (integer)
} (object) required
post_key_stores_by_store_id_onchain_sign_inputCreates the input archive for an onchain-sign operation covering the key store's pending signature requests.storeId (string) required
data: {

} (object) required
post_key_stores_by_store_id_proof_of_control_inputCreates the input archive for a proof-of-control operation covering the keys of the specified wallets.storeId (string) required
data: {
. walletIds (array)
} (object) required
get_key_storesLists the key stores of your organization.No parameters
get_signersLists the signer clusters of your key store, including each signer's ID and encryption public key.No parameters
post_key_stores_by_store_id_add_mac_user_outputSubmits the output archive produced by the offline signer fleet for an add-mac-user operation.storeId (string) required
data: {
. data (object)
. file (object)
} (object) required
post_key_stores_by_store_id_add_provisioner_outputSubmits the output archive produced by the offline signer fleet for an add-provisioner operation.storeId (string) required
data: {
. data (object)
. file (object)
} (object) required
post_key_stores_by_store_id_clone_outputSubmits the output archive produced by the offline signer fleet for a clone operation.storeId (string) required
data: {
. data (object)
. file (object)
} (object) required
post_key_stores_by_store_id_genesis_outputSubmits the output archive produced by the offline signer fleet for a genesis operation.storeId (string) required
data: {
. data (object)
. file (object)
} (object) required
post_key_stores_by_store_id_key_harvest_outputSubmit Key Harvest OutputstoreId (string) required
data: {
. data (object)
. file (object)
} (object) required
post_key_stores_by_store_id_onchain_sign_outputSubmits the output archive produced by the offline signer fleet for an onchain-sign operation.storeId (string) required
data: {
. data (object)
. file (object)
} (object) required
post_key_stores_by_store_id_proof_of_control_outputSubmits the output archive produced by the offline signer fleet for a proof-of-control operation.storeId (string) required
data: {
. data (object)
. file (object)
} (object) required
post_staking_stakesCreate a new stake.data required
get_staking_stakesRetrieve the list of stakes.limit (integer)
paginationToken (string)
post_staking_stakes_by_stake_id_actionsCreate a new action for an existing stake.stakeId (string) required
data required
get_staking_stakes_by_stake_id_actionsRetrieve the list of actions for a specific stake.stakeId (string) required
limit (integer)
paginationToken (string)
get_staking_stakes_by_stake_idRetrieve the details of a specific stake.stakeId (string) required
limit (integer)
paginationToken (string)
get_staking_stakes_by_stake_id_rewardsRetrieves the rewards linked to a specific stake.stakeId (string) required
post_swapsCreate a new swap based on an existing quote. This is the second step of the Swap flowhttps://docs.dfns.co/api-reference/swaps flow-overview.data required
get_swapsList all swaps with paginationlimit (integer)
paginationToken (string)
post_swaps_quotesRequest a quote from a given provider for swapping assets. This is the first step of the Swap flowhttps://docs.dfns.co/api-reference/swaps flow-overview.data required
get_swaps_by_swap_idGet details of a specific swap by its IDswapId (string) required
get_swaps_quotes_by_quote_idGet details of a specific swap quote by its IDquoteId (string) required
post_tenant_permissions_by_permission_id_assignCreates a permission that allows certain specified operations to be executed. Response is either the permission object itself success or a reason why it was not possible to create the permission failure.permissionId (string) required
data: {
. identityId (string)
} (object) required
post_tenant_permissions_by_permission_id_revokeRevokes a permission assignment success or gives reason why it's not possible failure.permissionId (string) required
data: {
. identityId (string)
} (object) required
get_tenant_permissions_by_permission_idRetrieves a specific permission success or gives a reason why it's not possible failure.permissionId (string) required
get_tenant_permissionsRetrieves a list of permissions success or gives a reason why it's not possible failure.limit (integer)
paginationToken (string)
post_tenant_usersCreates a new Tenant User. This creates the user and sends him an email with a registration code. The user is created without any permissions.data: {
. email (string)
. externalId (string)
. isSSORequired (boolean)
} (object) required
get_tenant_usersList all Users in your Tenant.limit (integer)
paginationToken (string)
put_tenant_users_by_user_idUpdates a new Tenant User details.userId (string) required
data: {
. isSSORequired (boolean)
} (object) required
delete_tenant_users_by_user_idDelete a specific Tenant User.userId (string) required
get_tenant_users_by_user_idGet a Tenant User.userId (string) required
get_tenant_orgsList all Orgs in your Tenant. By default, returns non-archived Orgs, unless specific status are passedlimit (integer)
paginationToken (string)
status
post_tenant_orgsCreate a new Org in your Tenant. The creator of the org will be granted access to the Org as the first Org Admin.data: {
. name (string)
. keyStores (array)
} (object) required
post_tenant_user_groupsCreate a user group in the caller's tenant. A group holds tenant permissions through the tenant permission assignment endpoint, and its members hold those permissions in addition to their own.data: {
. name (string)
. description (string)
} (object) required
get_tenant_user_groupsList the user groups in the caller's tenant.limit (integer)
paginationToken (string)
get_tenant_user_groups_by_user_group_idGet a specific user group of the caller's tenant.userGroupId (string) required
put_tenant_user_groups_by_user_group_idRename a user group of the caller's tenant or change its description. Fields left out keep their value. Its permissions and members are unaffected.userGroupId (string) required
data: {
. name (string)
. description (string,null)
} (object) required
delete_tenant_user_groups_by_user_group_idDelete a user group of the caller's tenant. Its tenant permission assignments are revoked and its members are removed. The name can be reused.userGroupId (string) required
get_tenant_user_groups_by_user_group_id_membersList the members of a user group of the caller's tenant.userGroupId (string) required
limit (integer)
paginationToken (string)
post_tenant_user_groups_by_user_group_id_membersAdd tenant users to a user group. Each member gains every tenant permission assigned to the group, in addition to their own.userGroupId (string) required
data: {
. userIds (array)
} (object) required
delete_tenant_user_groups_by_user_group_id_membersRemove tenant users from a user group. Each removed user immediately loses every tenant permission they held only through this group.userGroupId (string) required
data: {
. userIds (array)
} (object) required
get_tenant_orgs_by_org_idGet details on a single Org within your Tenant.orgId (string) required
put_tenant_orgs_by_org_idUpdate the name of an Org within your Tenant.orgId (string) required
data: {
. name (string)
} (object) required
put_tenant_orgs_by_org_id_statusChange the status of an Org within your Tenant.orgId (string) required
data: {
. status (string)
} (object) required
post_vaultsCreates a new Vault.data: {
. name (string)
. tags (array)
. externalId (string)
} (object) required
get_vaultsRetrieves the list of Vaults in your organization.limit (integer)
paginationToken (string)
post_vaults_by_vault_id_addressesCreates a vault address managed wallet on a network that supports vaults — EVM networks, Bitcoin, and Solana native SOL and SPL/Token-2022 tokens. Add one network per call.vaultId (string) required
data: {
. network (string)
} (object) required
post_vaults_by_vault_id_locksRequests locking funds from the vault's available balance for off-chain settlement or escrow. Returns the created lock 200, or the pending lock request 202 when a policy requires approval.vaultId (string) required
data: {
. network (string)
. tid (string)
. amount (string)
. externalId (string)
. reason (string)
. beneficiary (string)
} (object) required
get_vaults_by_vault_id_locksLists a vault's locks, active and released.vaultId (string) required
limit (integer)
paginationToken (string)
network (string)
tid (string)
post_vaults_by_vault_id_transfersCreates a transfer out of a vault, reserving the amount and estimated fee from the vault's available balance.vaultId (string) required
data: {
. network (string)
. tid (string)
. to (string)
. amount (string)
. externalId (string)
} (object) required
get_vaults_by_vault_idRetrieves a Vault by its ID.vaultId (string) required
put_vaults_by_vault_idUpdates an existing Vault.vaultId (string) required
data: {
. name (string)
. externalId (string)
} (object) required
get_vaults_by_vault_id_locks_by_lock_idRetrieves a vault lock by its ID.vaultId (string) required
lockId (string) required
get_vaults_by_vault_id_quarantines_by_quarantine_idRetrieves a vault quarantine by its ID.vaultId (string) required
quarantineId (string) required
get_vaults_by_vault_id_assetsLists a vault's assets with balances available/quarantined/locked and USD valuation.vaultId (string) required
showUnverified (boolean,null)
network (string)
get_vaults_by_vault_id_balancesLists a vault's balance entries.vaultId (string) required
limit (integer)
paginationToken (string)
kind (string)
network (string)
tid (string)
get_vaults_by_vault_id_historyLists a vault's history, most recent first: one item per incoming or outgoing transfer, carrying its current status, and one per lock creation or deletion.vaultId (string) required
limit (integer)
paginationToken (string)
network
tid
kind
get_vaults_by_vault_id_quarantinesLists a vault's quarantines, active and released.vaultId (string) required
limit (integer)
paginationToken (string)
network (string)
post_vaults_by_vault_id_quarantines_by_quarantine_id_releaseReleases quarantined funds into the available balance.vaultId (string) required
quarantineId (string) required
data: {
. reason (string)
} (object) required
post_vaults_by_vault_id_locks_by_lock_id_releaseReleases a lock, returning the locked funds to the vault's available balance. Owner only.vaultId (string) required
lockId (string) required
put_vaults_by_vault_id_tagsAdd tags to a vault.vaultId (string) required
data: {
. tags (array)
} (object) required
delete_vaults_by_vault_id_tagsRemoves the specified tags from a vault.vaultId (string) required
data: {
. tags (array)
} (object) required
post_vaults_by_vault_id_locks_by_lock_id_transferSends part or all of the locked amount to the lock's beneficiary, paying the network fee from the vault's available balance. Owner only, not subject to policies. Returns the outgoing transfer. The funds stay locked while it is in flight; once confirmed the lock is deleted and any unsent remainder returns to the available balance. If the transfer fails the lock stays in place and can be transferred again.vaultId (string) required
lockId (string) required
data: {
. amount (string)
} (object) required
post_vaults_by_vault_id_locks_by_lock_id_replaceRequests replacing a lock with a new lock at a new total amount. Owner only. Executed immediately unless a policy requires approval. On execution the lock is released, a new lock is created at the new amount carrying over the owner, externalId and reason, and the new lock is returned. If a policy requires approval, responds 202 with the pending replace request instead.vaultId (string) required
lockId (string) required
data: {
. amount (string)
. reason (string)
} (object) required
put_wallets_by_wallet_id_transactions_by_transaction_id_abortAborts a transaction that is currently in 'Executing' status and has not yet been signed. Sets the transaction status to 'Failed' and removes it from the retry queue. This is useful when a transaction is stuck in the execution pipeline e.g., during construct or sign phase and you want to abort it without waiting for it to fail on its own. Unlike cancel, which creates a replacement on-chain transaction, abort simply marks the transaction as failed without any blockchain interaction.walletId (string) required
transactionId (string) required
put_wallets_by_wallet_id_transfers_by_transfer_id_abortAborts a transfer that is currently in 'Executing' status and has not yet been signed. Sets the transfer status to 'Failed' and removes it from the retry queue. This is useful when a transfer is stuck in the execution pipeline e.g., during construct or sign phase and you want to abort it without waiting for it to fail on its own. Unlike cancel, which creates a replacement on-chain transaction, abort simply marks the transfer as failed without any blockchain interaction.walletId (string) required
transferId (string) required
post_wallets_by_wallet_id_activateActivates a wallet by deploying the account contract on-chain, making it ready for transactions. This operation is required for wallets on networks where you need to explicitly activate your account on-chain before it can be used for transactions. - Starknet: Deploys the account contract using the wallet's public key to initialize the account on the blockchain. No additional parameters required. - Concordium: Deploys the account using credential deployment information and cryptwalletId (string) required
data required
post_wallets_bulk_createCreates a batch of custodial wallets asynchronously via HD key derivation. Returns a job handle immediately; poll the bulk-create job endpoints for progress.data: {
. network (string)
. count (integer)
. name (string)
. tags (array)
. keystoreId (string)
} (object) required
get_wallets_bulk_createList the org bulk wallet creation jobs, most recent first, with progress and status.limit (integer)
paginationToken (string)
status (string)
get_wallets_bulk_create_by_job_idRetrieve a single bulk wallet creation job by its ID, with progress and status.jobId (string) required
get_wallets_bulk_create_by_job_id_walletsList every wallet created by a bulk wallet creation job, ordered by wallet ID and paginated. Only available once the job has completed.jobId (string) required
limit (integer)
paginationToken (string)
post_wallets_by_wallet_id_transactionsSign and Broadcast transaction enables communication with any arbitrary smart contract of the target blockchain. You can construct a transaction that performs a complex task and this endpoint will sign the transaction, add the signature and broadcast it to chain. It can be used to call smart contract functions like mint tokens and even deploy new smart contracts. | Status | DefinitionwalletId (string) required
data required
get_wallets_by_wallet_id_transactionsRetrieves a list of transactions requests for the specified wallet.walletId (string) required
limit (integer)
paginationToken (string)
post_wallets_by_wallet_id_transactions_by_transaction_id_cancelCancels an EVM transaction by creating a replacement transaction with the same nonce. The new transaction sends 0 value to the same address, effectively nullifying the original transaction. This endpoint works for: - EVM-compatible networks Ethereum, Polygon, BSC, etc. - Transactions that are in 'Broadcasted' status pending inclusion in a block - Transactions that are in 'Failed' status, but failed off-chain before being broadcasted to the network The cancellation works by: 1.walletId (string) required
transactionId (string) required
post_wallets_by_wallet_id_transfers_by_transfer_id_cancelCancels an EVM transfer by creating a replacement transaction with the same nonce. The new transaction sends 0 value to the same address, effectively nullifying the original transfer. This endpoint works for: - EVM-compatible networks Ethereum, Polygon, BSC, etc. - Transfers that are in 'Broadcasted' status pending inclusion in a block - Transfers that are in 'Failed' status, but failed off-chain before being broadcasted to the network The cancellation works by: 1. Extracting twalletId (string) required
transferId (string) required
post_wallets_by_wallet_id_canton_ledger_apiProxies a request to the Canton Ledger API associated with this wallet, using the validator's OAuth2 credentials. Restricted to a curated allow-list of read-style resources. Used to satisfy the Canton WalletConnect canton_ledgerApi method.walletId (string) required
data: {
. requestMethod (string)
. resource (string)
. body
} (object) required
post_wallets_by_wallet_id_transactions_by_transaction_id_speed_upSpeeds up a transaction by creating a replacement transaction with the same parameters but higher gas fees. This endpoint only works for: - EVM-compatible networks Ethereum, Polygon, BSC, etc. - Transactions that are in 'Broadcasted' status already submitted to blockchain, but not confirmed yet The speed-up works by: 1. Extracting the parameters from the original broadcasted transaction 2. Creating a new transaction with the same nonce, recipient, value, and data 3. Using higwalletId (string) required
transactionId (string) required
post_wallets_by_wallet_id_transfers_by_transfer_id_speed_upSpeeds up a transfer by creating a replacement transaction with the same parameters but higher gas fees. This endpoint only works for: - EVM-compatible networks Ethereum, Polygon, BSC, etc. - Transfers that are in 'Broadcasted' status already submitted to blockchain, but not confirmed yet The speed-up works by: 1. Extracting the parameters from the original broadcasted transfer 2. Creating a new transaction with the same nonce, recipient, value, and data 3. Using higher gas fwalletId (string) required
transferId (string) required
post_walletsCreates a new Wallet associated with the given chain such as Bitcoin or Ethereum . Returns a new wallet entity.data: {
. network (string)
. name (string)
. signingKey (object)
. delegateTo (string)
. delayDelegation (boolean)
. externalId (string)
. tags (array)
} (object) required
get_walletsRetrieves the list of Wallets in your organization. You can filter the results by owner either by owner id or owner username. The list cannot be filtered by tags or externalId — those are set at wallet creation only; to segment wallets by tag or externalId, list them and filter client-side, or maintain the mapping in your own system. Pagination is supported via limit and paginationToken parameters.limit (integer)
paginationToken (string)
owner (string)
ownerId (string)
ownerUsername (string)
get_wallets_by_wallet_id_transactions_by_transaction_idRetrieve information about a specific transaction.walletId (string) required
transactionId (string) required
get_wallets_by_wallet_id_transfers_by_transfer_idRetrieves a Wallet Transfer Request by its ID.walletId (string) required
transferId (string) required
get_wallets_by_wallet_idRetrieves a Wallet information by its ID.walletId (string) required
put_wallets_by_wallet_idUpdates the name of an existing wallet.walletId (string) required
data: {
. name (string,null)
. externalId (string,null)
} (object) required
get_wallets_by_wallet_id_assetsRetrieves a list of assets owned by the specified wallet. Return values vary by chain as shown below. Each asset includes its current USD market price quotes; pass netWorth=true to also return the wallet's total USD value net worth.walletId (string) required
netWorth (string)
get_wallets_by_wallet_id_historyRetrieves a list of historical on chain activities for the specified wallet. The list reflects the indexed on-chain activity: it includes confirmed transactions only. If you need to list your on-going or failed transactions please use the related endpoints List Transfershttps://docs.dfns.co/api-reference/wallets/list-transfers or List Transactionshttps://docs.dfns.co/api-reference/wallets/list-transactions depending on the API you are using.walletId (string) required
limit (integer)
paginationToken (string)
direction (string)
kind (string)
contract (string)
get_wallets_by_wallet_id_nftsRetrieves a list of NFTs owned by the specified Wallet.walletId (string) required
post_wallets_importWarning This endpoint is not enabled by default. Contact Dfnshttps://support.dfns.co to have it activated. /Warning Dfns secures private keys by generating them as MPC key shares in our decentralized key management network. This happens by default when you create a wallethttps://docs.dfns.co/api-reference/wallets/create-wallet. In some circumstances, however, you may need to import an existing wallet an existing private key into Dfns infrastructure, instead of creating a brand new wallet withdata: {
. name (string)
. curve (string)
. protocol
. minSigners (integer)
. encryptedKeyShares (array)
. network (string)
. externalId (string)
} (object) required
get_wallets_by_wallet_id_transfersRetrieves a list of transfer requests for the specified wallet.walletId (string) required
limit (integer)
paginationToken (string)
post_wallets_by_wallet_id_transfersTransfer an asset out of the specified wallet to a destination address. For all fungible token transfers, the transfer amount must be specified in the minimum denomination of that token. For example, use the amount in Satoshi for a Bitcoin transfer, or the amount in Wei for an Ethereum transfer etc. See the different options in the Body description below. You can also select your kind of transfers in the payload examples in the different languages. Tip Binance chains users can use ERC transfewalletId (string) required
data required
put_wallets_by_wallet_id_tagsAdd a Taghttps://docs.dfns.co/api-reference/wallets/tags to a wallet.walletId (string) required
data: {
. tags (array)
} (object) required
delete_wallets_by_wallet_id_tagsRemoves the specified tags from a wallet.walletId (string) required
data: {
. tags (array)
} (object) required
get_wallets_by_wallet_id_offers_by_offer_idRetrieve information about a specific offer received on your wallet.walletId (string) required
offerId (string) required
get_wallets_by_wallet_id_offersList all offers received on a specific wallet.walletId (string) required
limit (integer)
paginationToken (string)
put_wallets_by_wallet_id_offers_by_offer_id_acceptAccept an offer received on your wallet.walletId (string) required
offerId (string) required
put_wallets_by_wallet_id_offers_by_offer_id_rejectReject an offer received on your wallet.walletId (string) required
offerId (string) required
get_wallets_all_historyRetrieve the transaction history across all wallets within a specified timeframe. The time range is unbounded, but the CSV export is capped at 100,000 rows.limit (integer)
paginationToken (string)
startTime (string) required
endTime (string) required
post_webhooksRegister a new webhook.data: {
. url (string)
. status (string)
. description (string)
. events (array)
} (object) required
get_webhooksList all webhooks for the authenticated user's organization. The results are paginated.limit (integer)
paginationToken (string)
delete_webhooks_by_webhook_idDeletes an existing webhook registration.webhookId (string) required
get_webhooks_by_webhook_idRetrieve information about a specific webhook.webhookId (string) required
put_webhooks_by_webhook_idUpdate the definition of an existing webhook.webhookId (string) required
data: {
. url (string)
. description (string)
. events (array)
. status (string)
} (object) required
post_webhooks_by_webhook_id_pingThis endpoint is meant for webhook setup and troubleshooting. Calling the endpoint will trigger a fake test event that will be pushed to the webhook URL. The fake event will not be saved and not appear in further requests to Webhook Events.webhookId (string) required
get_webhooks_by_webhook_id_events_by_webhook_event_idRetrieve a specific webhook event details by its ID. Warning We only keep a trace of those Webhook Events in our system for a retention period of 31 days. Past that, they are discarded, so you cannot see them using List Webhook Eventshttps://docs.dfns.co/api-reference/webhooks/list-webhook-events or Get Webhook Eventhttps://docs.dfns.co/api-reference/webhooks/get-webhook-event endpoints. /WarningwebhookId (string) required
webhookEventId (string) required
get_webhooks_by_webhook_id_eventsLists all events for a given webhook. Warning We only keep a trace of those Webhook Events in our system for a retention period of 31 days. Past that, they are discarded, so you cannot see them using List Webhook Eventshttps://docs.dfns.co/api-reference/webhooks/list-webhook-events or Get Webhook Eventhttps://docs.dfns.co/api-reference/webhooks/get-webhook-event endpoints. /WarningwebhookId (string) required
kind (string)
deliveryFailed (string)
limit (integer)
paginationToken (string)
customCall any endpoint of the connected service while reusing the connection auth. Pass the full URL as _url. Other reserved keys: _method, _query, _body, _headers. Remaining params flow naturally — empty → GET, non-empty → POST JSON body._url (string) required
_method (string)
_query (object)
_body
_headers (object)

Webhook Events​

This connector emits 40 events back to your workflow. To receive one, create a hook whose path is <connection-name>/<event> — the connection name you configured plus the event from the table below.

EventDescription
policy-triggeredA policy got triggered upon some activity the policy rule got evaluated, and it triggered.
policy-approval-pendingA new approval process has been created and is pending.
policy-approval-resolvedAn approval process is finalized: its status resolves to Approved or Denied.
key-createdA key has been created.
key-deletedA key has been deleted.
key-delegatedA key has been delegated.
key-exportedA key has been exported.
wallet-blockchainevent-detectedA wallet event has been detected on chain eg. a deposit. Only available for Tier-1 chains.
wallet-blockchain-event-transfer-includedAn incoming transfer has been detected in a block that is not yet finalized pre-confirmation.
wallet-blockchain-event-misc-confirmedA wallet on-chain event that is not a transfer has been confirmed.
wallet-createdA wallet has been created.
wallet-activatedA wallet has been activated for example, a Canton wallet.
wallet-delegatedA wallet has been delegated.
wallet-exportedA wallet has been exported deprecated.
wallet-signature-requestedA generate signature request has been created.
wallet-signature-failedA generate signature request has failed to process.
wallet-signature-rejectedA generate signature request with a policy approval has been rejected.
wallet-signature-signedA generate signature request has completed.
wallet-transaction-requestedA broadcast transaction request has been created.
wallet-transaction-failedA broadcast transaction request has failed to process.
wallet-transaction-rejectedA broadcast transaction request with a policy approval has been rejected.
wallet-transaction-broadcastedA broadcast transaction request has been submitted to the mempool.
wallet-transaction-confirmedA broadcast transaction request has been confirmed on chain. Only available for Tier-1 chains.
wallet-transfer-requestedA wallet transfer request has been created.
wallet-transfer-failedA wallet transfer request has failed to process.
wallet-transfer-rejectedA wallet transfer request with a policy approval has been rejected.
wallet-transfer-broadcastedA wallet transfer request has been submitted to the mempool.
wallet-transfer-confirmedA wallet transfer request has been confirmed on chain. Only available for Tier-1 chains.
wallet-offer-receivedA new transfer offer has been made to a wallet.
wallet-offer-acceptedA transfer offer has been accepted and settlement confirmed on chain.
wallet-offer-rejectedA transfer offer has been rejected and settlement confirmed on chain.
wallet-offer-withdrawnA transfer offer has been withdrawn by the sender.
wallet-tags-modifiedA wallet's tags have been modified.
vault-createdA vault has been created.
vault-updatedA vault has been updated.
vault-tags-modifiedTags have been added to or removed from a vault.
vault-event-createdAn entry has been appended to a vault's balance ledger.
address-watch-blockchain-event-transfer-confirmedA transfer touching one of your watched addresses has been confirmed on chain.
address-watch-blockchain-event-misc-confirmedAn on-chain event that is not a transfer has been confirmed on one of your watched addresses.
payout-action-requiredA payout requires an action for example, an approval.