Distribution API (1.0.0)

Download OpenAPI specification:

An example of a multi-file OpenAPI definition.

distribution

getDistributions

Create Distribution of profile

Responses

createDistribution

Create Distribution for profile

Responses

accreditation

accreditationCreate

Initialize accreditation request in escrow account

query Parameters
user_id
required
any

user id

profile_id
required
any

profile id

Responses

accreditationUpdate

Start accreditation process

query Parameters
profile_id
required
any

profile id

Responses

accreditationUploadDocument

Send accreditation document for verification

query Parameters
user_id
required
any

user id

profile_id
required
any

profile id

Responses

accreditationManual

Manually update user accreditation status. Use only in case of emergency

query Parameters
user_id
required
any

user id

profile_id
required
any

profile id

Responses

accreditationSync

Synchronize accreditation status with accreditation partner

query Parameters
user_id
required
any

user id

profile_id
required
any

profile id

Responses

accreditationUpdateStatus

Handle accreditation provider status change webhook

query Parameters
api_key
required
any

request api key

Responses

escrow

escrowCreate

Create escrow account in escrow partner

query Parameters
user_id
required
any

user id

profile_id
required
any

profile id

Responses

offeringCreate

Create offer in escrow provider

query Parameters
user_id
required
any

user id

offer_id
required
any

profile id

Responses

issuer

issuerCreate

Create issuer in escrow provider

query Parameters
user_id
required
any

user id

profile_id
required
any

profile id

Responses

Esignature

documentCreate

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.

Responses

AuthCryptoWallet

getWalletInfo

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.

path Parameters
profile_id
required
integer <int64>

Profile ID that owns the wallet.

query Parameters
chain
required
string
Enum: "all" "ethereum" "ethereum-sepolia" "polygon" "base"
Example: chain=all

Chain selector. Use all for aggregate wallet view.

Responses

Response samples

Content type
No sample

getWalletTransactions

Return paginated wallet transaction history separately from wallet information. Use status=pending|confirmed|all to filter transaction buckets and cursor for pagination.

path Parameters
profile_id
required
integer <int64>

Profile ID that owns the wallet.

query Parameters
chain
required
string
Enum: "all" "ethereum" "ethereum-sepolia" "polygon" "base"
Example: chain=all

Chain selector. Use all for cross-chain history.

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.

Responses

Response samples

Content type
No sample

registerWallet

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.

path Parameters
profile_id
required
integer <int64>

Profile ID that owns the wallet.

Request Body schema: application/json
required

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.

Responses

Request samples

Content type
application/json
{
  • "provider_name": "alchemy",
  • "provider_user_id": "alchemy-user-id",
  • "wallet_address": 1.0392900530792776e+47
}

Response samples

Content type
No sample

notifyWalletMFA

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.

path Parameters
profile_id
required
integer <int64>

Profile ID that owns the wallet.

Request Body schema: application/json
required

MFA notification payload.

mfa_enabled
required
boolean
provider_name
required
string

Responses

Request samples

Content type
application/json
{
  • "mfa_enabled": true,
  • "provider_name": "alchemy"
}

Response samples

Content type
No sample

startWalletAuthorization

Create a short-lived withdrawal session request and return the owner signature request that must be signed to activate the session.

path Parameters
profile_id
required
integer <int64>

Profile ID that owns the wallet.

Request Body schema: application/json
required

Withdrawal-session start payload.

asset
required
string

Chain-scoped platform asset identifier resolved by the backend before calling wallet_createSession.

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.

Responses

Request samples

Content type
application/json
{
  • "asset": "USDC",
  • "chain": "polygon",
  • "max_amount": "10000",
  • "nonce": "550e8400-e29b-41d4-a716-446655440000"
}

Response samples

Content type
No sample

confirmWalletAuthorization

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.

path Parameters
profile_id
required
integer <int64>

Profile ID that owns the wallet.

Request Body schema: application/json
required

Withdrawal-session confirmation payload.

owner_signature
required
string
session_id
required
string

Responses

Request samples

Content type
application/json
{
  • "owner_signature": 11259375,
  • "session_id": "0xSESSION_ID"
}

Response samples

Content type
No sample

createWithdrawal

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.

path Parameters
profile_id
required
integer <int64>

Profile ID that owns the wallet being used.

Request Body schema: application/json
required

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.

Responses

Request samples

Content type
application/json
{
  • "amount": "25.500000",
  • "asset": "USDC",
  • "chain": "ethereum",
  • "destination_address": 6.1138228683162145e+47,
  • "idempotency_key": "wdr_20260330_0001"
}

Response samples

Content type
No sample

InternalCryptoWallet

deployContract

Deploy the offer token contract for the provided offer.

path Parameters
offer_id
required
integer <int64>

Offer ID whose token contract should be deployed.

Responses

transferTokens

Settle an investment and transfer the corresponding offer tokens.

path Parameters
investment_id
required
integer <int64>

Investment ID to settle.

Responses

createProfileWallet

Create the logical wallet record for a profile.

Request Body schema: application/json
required

Profile wallet creation payload.

profile_id
required
integer <int64>

Profile ID that owns the logical user wallet record.

Responses

Request samples

Content type
application/json
{
  • "profile_id": 42
}

Response samples

Content type
No sample

createOfferWallet

Create and provision a custodial wallet for an offer.

Request Body schema: application/json
required

Offer wallet creation payload.

offer_id
required
integer <int64>

Offer ID that owns the custodial offer wallet.

Responses

Request samples

Content type
application/json
{
  • "offer_id": 7
}

Response samples

Content type
No sample

auth

delete file by ID

delete file by ID

path Parameters
id
required
any

File ID

header Parameters
Authorization
required
any

IdentityID

Responses

get file by ID

get file by ID

path Parameters
id
required
any

File ID

query Parameters
size
any

Size

header Parameters
Authorization
required
any

IdentityID

Responses

returns url for file downloading

returns url for file downloading

path Parameters
id
required
any

File ID

header Parameters
Authorization
required
any

IdentityID

Responses

returns url for file uploading

returns url for file uploading

header Parameters
Authorization
required
any

IdentityID

Responses

returns metadata by object ID and object Name

returns metadata by object ID and object Name

path Parameters
object_path
required
any

Object Name

header Parameters
Authorization
required
any

IdentityID

Responses

returns user's files

returns user's files

header Parameters
Authorization
required
any

IdentityID

Responses

internal

delete file by ID

delete file by ID

path Parameters
id
required
any

File ID

Responses

get file by ID

get file by ID

path Parameters
id
required
any

File ID

query Parameters
size
any

Size

Responses

returns url for file downloading

returns url for file downloading

path Parameters
id
required
any

File ID

query Parameters
size
any

Size

Responses

returns url for file uploading

returns url for file uploading

Responses

returns metadata by object ID and object Name

returns metadata by object ID and object Name

path Parameters
object_path
required
any

Object Name

Responses

public

get file by ID

get file by ID

path Parameters
id
required
any

File ID

query Parameters
size
any

Size

Responses

returns metadata by object ID and object Name

returns metadata by object ID and object Name

path Parameters
object_path
required
any

Object Name

Responses

kyc

Create a link for the KYC verification process

Create a link for the KYC verification process

Responses

Manually update KYC

Manually update KYC

Responses

Sync KYC status with kyc-provider

Sync KYC status with kyc-provider

Responses

other

Get all notifications

Responses

mark notification as read

Responses

mark all notification as read

Responses

funding

LinkInvestment

Link investment with escrow provider

query Parameters
investment_id
required
any

investment id

Responses

FundingTransfer

Transfer funding from linked bank account to escrow account

query Parameters
investment_id
required
any

investment id

Responses

FundingUpdate

Update funding transfer status

query Parameters
investment_id
required
any

investment id

Responses

account

AccountSync

Check if account created in escrow but not in our system

query Parameters
user_id
required
any

user id

profile_id
required
any

profile id

Responses

queue

Process an event and send it to the queue

Process an event and send it to the queue

path Parameters
service
required
any

Service Name

topic
required
any

Topic Name

Responses

bankAccount

bankAccountDelete

Delete connected bank account

query Parameters
ProfileID
required
any
Example: ProfileID=3
header Parameters
Authorization
required
any
Example: f8a61466-8964-4ade-8ca5-fa452bceba3f
XRequestID
required
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

Responses

bankAccountExchangeToken

Exchange token between dwolla and plaid to get access_token

query Parameters
ProfileID
required
any
Example: ProfileID=3
header Parameters
Authorization
required
any
Example: f8a61466-8964-4ade-8ca5-fa452bceba3f
XRequestID
required
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

Responses

bankAccountProcessToken

Connect bank account using access token

query Parameters
ProfileID
required
any
Example: ProfileID=3
header Parameters
Authorization
required
any
Example: f8a61466-8964-4ade-8ca5-fa452bceba3f
XRequestID
required
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

Responses

wallet

getWalletDetail

Get Wallet Info

query Parameters
ProfileID
required
any
Example: ProfileID=3
header Parameters
Authorization
required
any
Example: f8a61466-8964-4ade-8ca5-fa452bceba3f
XRequestID
required
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

Responses

getTransactionList

Get Transaction list

query Parameters
WalletID
any
Example: WalletID=3
header Parameters
Authorization
required
any
Example: f8a61466-8964-4ade-8ca5-fa452bceba3f
XRequestID
required
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

Responses

createPendingTransaction

Create Pending Transaction

query Parameters
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
header Parameters
Authorization
required
any
Example: f8a61466-8964-4ade-8ca5-fa452bceba3f
XRequestID
required
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

Responses

adminWallet

internalSyncTransaction

Sync transaction status with dwolla

query Parameters
TransID
required
any
Example: TransID=1

Responses

internalReCreateWallet

Create wallet in dwolla if it does not exist

query Parameters
WalletID
required
any
Example: WalletID=3

Responses

internalWalletSync

Sync wallet status with dwolla

query Parameters
WalletID
required
any
Example: WalletID=3

Responses

webhook

Sync transaction status with dwolla

webhookSetTransactionErrorStatus

Update Transaction Failed Status

webhookProcessTransaction

Update Transaction Status

query Parameters
amount
required
any
Example: amount=12.2
funding_source_id
required
any
Example: funding_source_id=3
header Parameters
XRequestID
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

webhookUpdateWalletStatus

Update Wallet Status

transfer

webhookSetTransactionErrorStatus

Update Transaction Failed Status

webhookProcessTransaction

Update Transaction Status

query Parameters
amount
required
any
Example: amount=12.2
funding_source_id
required
any
Example: funding_source_id=3
header Parameters
XRequestID
any
Example: 0191701c-da51-749a-a4fc-e96579ebc043

webhookUpdateWalletStatus

Update Wallet Status