Dfns Python SDK
Auto-generated Python SDK for the Dfns API.
Installation
pip install dfns_sdk
Or install from source:
pip install -e .
Quick Start
from dfns_sdk import DfnsClient, DfnsClientConfig
# Configure the client
config = DfnsClientConfig(
auth_token="your-auth-token",
base_url="https://api.dfns.io", # Optional, this is the default
)
# Create the client
client = DfnsClient(config)
# Use the client
wallets = client.wallets.list_wallets()
print(wallets)
# Clean up
client.close()
Using as a Context Manager
from dfns_sdk import DfnsClient, DfnsClientConfig
config = DfnsClientConfig(
auth_token="your-auth-token",
)
with DfnsClient(config) as client:
wallets = client.wallets.list_wallets()
print(wallets)
User Action Signing
Some operations (like creating wallets or signing transactions) require user action signing. Configure a signer to enable these operations:
from dfns_sdk import DfnsClient, DfnsClientConfig, KeySigner
# Load your private key
with open("private_key.pem") as f:
private_key = f.read()
# Create a signer
signer = KeySigner(
credential_id="cr-xxx-xxx", # Your credential ID
private_key=private_key,
app_origin="https://app.dfns.io",
)
# Configure the client with the signer
config = DfnsClientConfig(
auth_token="your-auth-token",
signer=signer,
)
with DfnsClient(config) as client:
# Operations requiring signatures will automatically sign
wallet = client.wallets.create_wallet({
"network": "EthereumSepolia",
})
print(wallet)
Delegated Client (External Signing)
For service accounts that orchestrate signing externally (e.g., using a separate signing service),
use the DfnsDelegatedClient. This client separates user action signing into *_init() and
*_complete() method pairs:
from dfns_sdk import DfnsDelegatedClient, DfnsDelegatedClientConfig
# Configure the delegated client (no signer needed)
config = DfnsDelegatedClientConfig(
auth_token="service-account-token",
)
with DfnsDelegatedClient(config) as client:
# Step 1: Initialize the action (returns challenge)
challenge = client.wallets.create_wallet_init(
body={"network": "EthereumSepolia"}
)
# Step 2: Sign challenge externally (your signing system)
# The challenge contains everything needed to sign:
# - challenge["challenge"]: The challenge string to sign
# - challenge["challengeIdentifier"]: Unique ID for this challenge
signed_assertion = your_external_signer.sign(challenge)
# Step 3: Complete the action with signed challenge
wallet = client.wallets.create_wallet_complete(
body={"network": "EthereumSepolia"},
signed_challenge={
"challengeIdentifier": challenge["challengeIdentifier"],
"firstFactor": signed_assertion,
},
)
print(wallet)
When to Use Delegated vs Regular Client
| Use Case | Client Type |
|---|---|
| Single application with embedded signing | DfnsClient |
| Mobile app with local key storage | DfnsClient |
| Backend service with external HSM | DfnsDelegatedClient |
| Multi-step approval workflows | DfnsDelegatedClient |
| Service account orchestrating user actions | DfnsDelegatedClient |
Available Domains
The client provides access to the following API domains:
client.auth- Authentication and user managementclient.wallets- Wallet operationsclient.policies- Policy managementclient.permissions- Permission managementclient.webhooks- Webhook subscriptions- And more...
Each domain provides typed methods for all available API endpoints.
Error Handling
from dfns_sdk import DfnsClient, DfnsClientConfig, DfnsError
config = DfnsClientConfig(auth_token="your-auth-token")
client = DfnsClient(config)
try:
wallet = client.wallets.get_wallet(wallet_id="invalid-id")
except DfnsError as e:
print(f"Error: {e.message}")
print(f"Status: {e.status_code}")
print(f"Code: {e.error_code}")
License
MIT License - See LICENSE file for details.
Metadata
Release files for dfns-sdk 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| dfns_sdk-1.0.3.tar.gz | 94.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dfns_sdk-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 219.3 kB
Release files / dfns_sdk-1.0.3.tar.gz
| Download URL | dfns_sdk-1.0.3.tar.gz |
|---|---|
| Size | 94.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
72439f9b5fd2068ec025a5352cce245e4f448a89ff3d553390106bc3bb8efcdb
|
|
BLAKE2b-256 checksum How to use checksums |
1374bec33b72c9b4aa599a198a21a0c58bff75ff274cf0f9fb3d35b195bc4f7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logRelease files / dfns_sdk-1.0.3-py3-none-any.whl
| Download URL | dfns_sdk-1.0.3-py3-none-any.whl |
|---|---|
| Size | 125.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a13b921bee354c70eba3b0cba72c13677d069c483487ef187cf673b1ec0c230
|
|
BLAKE2b-256 checksum How to use checksums |
1d4d3faf9014266827b0a62fe257e1b9d06902b8a75d2ad5aa44cdd5dcfbdf7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logSecurity for dfns-sdk 1.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for dfns_sdk-1.0.3.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.