Skip to main content
POST
Send a transaction from a wallet

Authorizations

x-api-key
string
header
required

Headers

x-idempotency-key
string<uuid>
required

Unique key (UUID) to ensure request idempotency on POST, PUT and PATCH requests.

A key is scoped to your client, the HTTP method and the path, and is remembered for 24 hours after a successful (below 400) response. Repeating the same request (same JSON body, whatever the key order or whitespace) with the same key within that window returns the original response with X-Idempotent-Replayed: true instead of executing the request again. Using the same key on the same endpoint with a different body returns 422 with problem type idempotency-key-reused; the request is not executed. Error responses (4xx and 5xx) are not remembered, so a request refused for a fixable reason can be corrected and retried under the same key. Request bodies that are not JSON (for example file uploads) are not compared.

Path Parameters

wallet_id
string
required

Wallet ID KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.

Required string length: 27
Pattern: ^[0-9A-Za-z]{27}$
Example:

"1NFHrqBHb3cTfLVkFSGmHZqdDPi"

Body

application/json
signatures
string[]
required

List of signatures over the intent

Cryptographic signature over the intent, base64-encoded. For an ES256 signer this is the ASN.1 DER ECDSA signature over the SHA-256 of the canonical intent. For a WEBAUTHN signer this is the base64 of the WebAuthn assertion JSON (id, rawId, type, and response.authenticatorData / clientDataJSON / signature). See the WebAuthn & Passkey Signing guide.

intent
object
required

The intent being endorsed

Response

Transaction accepted. A new send is returned at waiting_for_signature and reaches broadcasted and its outcome through wallet.transaction.updated webhooks. Repeating a send with an intent idempotency_key this wallet already used returns the existing transaction in its current status.

Transaction details representing a transfer of funds from a crypto wallet.

id
string
required

KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.

Required string length: 27
Pattern: ^[0-9A-Za-z]{27}$
Example:

"1NFHrqBHb3cTfLVkFSGmHZqdDPi"

resource_type
enum<string>
required

Discriminator field. Always "wallet" for wallet transactions.

Available options:
one_off,
wallet,
auto_account
Example:

"wallet"

wallet_id
string
required

KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.

Required string length: 27
Pattern: ^[0-9A-Za-z]{27}$
Example:

"1NFHrqBHb3cTfLVkFSGmHZqdDPi"

status
enum<string>
required

Current status of a transaction.

Auto-account transactions (GET /auto-transactions and the transaction.auto.* events) return the snake_case values.

Wallet transactions, the wallet.transaction.* events and the auto-account transactions listed by GET /transactions (the WalletTransaction, Transaction, NestedTransaction, FXPageKnownTransaction and FXTransaction objects) return a display label such as Waiting For Signature or Success, meant for showing to people. Branch on their status_code instead.

canceled is a legacy spelling and is never returned.

Available options:
timed_out,
not_started,
in_progress,
awaiting_confirmation,
pending,
processing,
completed,
invalid,
failed,
cancelled,
canceled,
reversed,
rejected,
broadcasted,
pending_return,
returned,
pending_reversal,
paused_credits,
Timed Out,
Not Started,
In Progress,
Awaiting Confirmation,
Success,
Invalid,
Failed,
Cancelled,
Reversed,
Rejected,
Needs Manual Input,
Waiting For Signature,
Broadcasted,
Pending Return,
Returned,
Pending Reversal,
Unknown
status_code
enum<string>
required

Machine-readable status. Branch on this value; status is its display label.

Available options:
not_started,
in_progress,
waiting_for_signature,
broadcasted,
awaiting_confirmation,
needs_manual_input,
timed_out,
pending_return,
pending_reversal,
completed,
failed,
invalid,
cancelled,
reversed,
rejected,
returned,
unknown
Example:

"completed"

network_id
enum<string>

Identifier for a blockchain network

Available options:
ethereum-mainnet,
ethereum-sepolia,
ethereum-goerli,
ethereum-holesky,
solana-mainnet,
solana-devnet,
solana-testnet,
base-mainnet,
base-sepolia,
arbitrum-mainnet,
arbitrum-sepolia,
optimism-mainnet,
optimism-sepolia,
polygon-mainnet,
polygon-amoy
Required string length: 1 - 30
Example:

"ethereum-mainnet"

from
string

The source address

to
string

The destination address

transaction_hash
string

The transaction hash. It may be absent until the transaction is broadcast.

Example:

"0x165cd37b4c644c2921454429e7f9358d18a45e14"

transaction_type
enum<string>

Type of transaction

Available options:
transfer,
evm_contract_call
amount
string

The transaction amount

Example:

"100.56"

asset
string

ISO 4217 symbol representing a fiat asset.

Required string length: 3
Pattern: ^[A-Z]{3}$
Example:

"USD"

created_at
integer<int64>

Unix time the transaction was created.

Example:

1781181600

confirmed_at
integer<int64>

Unix time the transaction was confirmed on chain; absent until confirmed.

Example:

1781181660