Download OpenAPI specification:
An example of a multi-file OpenAPI definition.
In order to display iframe signature form, use entity_id from response together with iframe and docuseal document path example: https://docuseal-web.webdevelop.pro/d/{{ entity_id }}. In our terms entity_id is a slug field in docuseal response, but we renamed it to entity_id in our API.
Return wallet information only, without transaction history.
Use chain=all for an aggregate view across supported chains,
or pass a single chain (ethereum, ethereum-sepolia, polygon, base) to scope the response.
| profile_id required | integer <int64> Profile ID that owns the wallet. |
| chain required | string Enum: "all" "ethereum" "ethereum-sepolia" "polygon" "base" Example: chain=all Chain selector. Use |
Return paginated wallet transaction history separately from wallet information.
Use status=pending|confirmed|all to filter transaction buckets and cursor for pagination.
| profile_id required | integer <int64> Profile ID that owns the wallet. |
| chain required | string Enum: "all" "ethereum" "ethereum-sepolia" "polygon" "base" Example: chain=all Chain selector. Use |
| status | string Default: "all" Enum: "pending" "confirmed" "all" Example: status=all Transaction status bucket. |
| limit | integer <int64> Example: limit=50 Optional bounded page size. |
| cursor | string Example: cursor=opaque-cursor-value Opaque cursor from the previous page. |
Register a frontend-created wallet in backend storage after Alchemy Signer authentication completes. The backend persists the canonical wallet address for the profile and creates per-chain pending rows.
| profile_id required | integer <int64> Profile ID that owns the wallet. |
Wallet registration payload.
| provider_name required | string Wallet/auth provider name. |
| provider_user_id | string Optional opaque provider user identifier stored for future usage, audit, or reconciliation. |
| wallet_address required | string Canonical EVM wallet address for the profile. |
{- "provider_name": "alchemy",
- "provider_user_id": "alchemy-user-id",
- "wallet_address": 1.0392900530792776e+47
}Accept a trusted frontend notification that MFA/TOTP setup completed successfully for the profile wallet. In the current Phase 1 model, the backend does not independently verify MFA enablement with the provider.
| profile_id required | integer <int64> Profile ID that owns the wallet. |
MFA notification payload.
| mfa_enabled required | boolean |
| provider_name required | string |
{- "mfa_enabled": true,
- "provider_name": "alchemy"
}Create a short-lived withdrawal session request and return the owner signature request that must be signed to activate the session.
| profile_id required | integer <int64> Profile ID that owns the wallet. |
Withdrawal-session start payload.
| asset required | string Chain-scoped platform asset identifier resolved by the backend before calling |
| chain required | string Enum: "ethereum" "ethereum-sepolia" "polygon" "base" Supported target chain. |
| max_amount required | string Cumulative session allowance for the full session lifetime. |
| nonce required | string Client-generated idempotency and replay-protection nonce. |
{- "asset": "USDC",
- "chain": "polygon",
- "max_amount": "10000",
- "nonce": "550e8400-e29b-41d4-a716-446655440000"
}Activate a pending withdrawal session after the owner signs the returned session authorization request.
Repeated submission of the same valid signature for the same session_id is treated as idempotent success.
| profile_id required | integer <int64> Profile ID that owns the wallet. |
Withdrawal-session confirmation payload.
| owner_signature required | string |
| session_id required | string |
{- "owner_signature": 11259375,
- "session_id": "0xSESSION_ID"
}Submit a Phase 1 user-wallet withdrawal request.
The backend resolves the wallet from profile_id, performs compliance and balance checks,
and submits the transaction through the smart-wallet path for the selected chain.
| profile_id required | integer <int64> Profile ID that owns the wallet being used. |
Withdrawal request payload.
| amount required | string Decimal string amount. Never send floating-point JSON numbers. |
| asset required | string Asset symbol enabled on the selected chain. |
| chain required | string Enum: "ethereum" "ethereum-sepolia" "polygon" "base" Chain to withdraw on. |
| destination_address required | string Destination EVM address on the selected chain. |
| idempotency_key required | string Client-generated unique key used to deduplicate retries. |
{- "amount": "25.500000",
- "asset": "USDC",
- "chain": "ethereum",
- "destination_address": 6.1138228683162145e+47,
- "idempotency_key": "wdr_20260330_0001"
}Create the logical wallet record for a profile.
Profile wallet creation payload.
| profile_id required | integer <int64> Profile ID that owns the logical user wallet record. |
{- "profile_id": 42
}Create and provision a custodial wallet for an offer.
Offer wallet creation payload.
| offer_id required | integer <int64> Offer ID that owns the custodial offer wallet. |
{- "offer_id": 7
}Exchange token between dwolla and plaid to get access_token
| ProfileID required | any Example: ProfileID=3 |
| Authorization required | any Example: f8a61466-8964-4ade-8ca5-fa452bceba3f |
| XRequestID required | any Example: 0191701c-da51-749a-a4fc-e96579ebc043 |
Generate public token from plaid to get a list of bank accounts
| ProfileID required | any Example: ProfileID=3 |
| Authorization required | any Example: f8a61466-8964-4ade-8ca5-fa452bceba3f |
| XRequestID required | any Example: 0191701c-da51-749a-a4fc-e96579ebc043 |
Create Pending Transaction
| type required | any Example: type=3 |
| amount required | any Example: amount=12.2 |
| funding_source_id required | any Example: funding_source_id=3 |
| WalletID required | any Example: WalletID=3 |
| Authorization required | any Example: f8a61466-8964-4ade-8ca5-fa452bceba3f |
| XRequestID required | any Example: 0191701c-da51-749a-a4fc-e96579ebc043 |