curl --request POST \
--url https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"signatures": [
"LS0tLS1CRUdJ...0tLS0tCg=="
],
"intent": {
"wallet_id": "string",
"caip2": "string",
"operation": {
"kind": "string",
"from": "string",
"to": "string",
"amount": "100.50",
"asset_id": "USDC",
"method": "string",
"args": [
"string"
],
"data": "string"
},
"idempotency_key": "string"
}
}
'const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
signatures: ['LS0tLS1CRUdJ...0tLS0tCg=='],
intent: {
wallet_id: 'string',
caip2: 'string',
operation: {
kind: 'string',
from: 'string',
to: 'string',
amount: '100.50',
asset_id: 'USDC',
method: 'string',
args: ['string'],
data: 'string'
},
idempotency_key: 'string'
}
})
};
fetch('https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions"
payload = {
"signatures": ["LS0tLS1CRUdJ...0tLS0tCg=="],
"intent": {
"wallet_id": "string",
"caip2": "string",
"operation": {
"kind": "string",
"from": "string",
"to": "string",
"amount": "100.50",
"asset_id": "USDC",
"method": "string",
"args": ["string"],
"data": "string"
},
"idempotency_key": "string"
}
}
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions"
payload := strings.NewReader("{\n \"signatures\": [\n \"LS0tLS1CRUdJ...0tLS0tCg==\"\n ],\n \"intent\": {\n \"wallet_id\": \"string\",\n \"caip2\": \"string\",\n \"operation\": {\n \"kind\": \"string\",\n \"from\": \"string\",\n \"to\": \"string\",\n \"amount\": \"100.50\",\n \"asset_id\": \"USDC\",\n \"method\": \"string\",\n \"args\": [\n \"string\"\n ],\n \"data\": \"string\"\n },\n \"idempotency_key\": \"string\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"resource_type": "wallet",
"wallet_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"network_id": "ethereum-mainnet",
"from": "0x1234567890abcdef1234567890abcdef12345678",
"to": "0xabcdef1234567890abcdef1234567890abcdef12",
"transaction_hash": "0x165cd37b4c644c2921454429e7f9358d18a45e14",
"transaction_type": "transfer",
"amount": "100.56",
"asset": "USD",
"status": "completed"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Bad request - invalid input data",
"status": 400,
"detail": "Bad request - invalid input data",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#authentication-error",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Forbidden",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Not Found",
"status": 404,
"detail": "Not Found",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#conflict",
"title": "Conflict - duplicate request detected",
"status": 409,
"detail": "Conflict - duplicate request detected",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#internal-error",
"title": "Internal server error",
"status": 500,
"detail": "Internal server error",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#internal-error",
"title": "Service unavailable",
"status": 503,
"detail": "Service unavailable",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#internal-error",
"title": "Unexpected error",
"status": 500,
"detail": "Unexpected error",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}Send a transaction from a wallet
Creates a new outbound transaction from the specified wallet. Policy and signer checks may affect the resulting transaction state.
curl --request POST \
--url https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"signatures": [
"LS0tLS1CRUdJ...0tLS0tCg=="
],
"intent": {
"wallet_id": "string",
"caip2": "string",
"operation": {
"kind": "string",
"from": "string",
"to": "string",
"amount": "100.50",
"asset_id": "USDC",
"method": "string",
"args": [
"string"
],
"data": "string"
},
"idempotency_key": "string"
}
}
'const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
signatures: ['LS0tLS1CRUdJ...0tLS0tCg=='],
intent: {
wallet_id: 'string',
caip2: 'string',
operation: {
kind: 'string',
from: 'string',
to: 'string',
amount: '100.50',
asset_id: 'USDC',
method: 'string',
args: ['string'],
data: 'string'
},
idempotency_key: 'string'
}
})
};
fetch('https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions"
payload = {
"signatures": ["LS0tLS1CRUdJ...0tLS0tCg=="],
"intent": {
"wallet_id": "string",
"caip2": "string",
"operation": {
"kind": "string",
"from": "string",
"to": "string",
"amount": "100.50",
"asset_id": "USDC",
"method": "string",
"args": ["string"],
"data": "string"
},
"idempotency_key": "string"
}
}
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/wallets/{wallet_id}/transactions"
payload := strings.NewReader("{\n \"signatures\": [\n \"LS0tLS1CRUdJ...0tLS0tCg==\"\n ],\n \"intent\": {\n \"wallet_id\": \"string\",\n \"caip2\": \"string\",\n \"operation\": {\n \"kind\": \"string\",\n \"from\": \"string\",\n \"to\": \"string\",\n \"amount\": \"100.50\",\n \"asset_id\": \"USDC\",\n \"method\": \"string\",\n \"args\": [\n \"string\"\n ],\n \"data\": \"string\"\n },\n \"idempotency_key\": \"string\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"resource_type": "wallet",
"wallet_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"network_id": "ethereum-mainnet",
"from": "0x1234567890abcdef1234567890abcdef12345678",
"to": "0xabcdef1234567890abcdef1234567890abcdef12",
"transaction_hash": "0x165cd37b4c644c2921454429e7f9358d18a45e14",
"transaction_type": "transfer",
"amount": "100.56",
"asset": "USD",
"status": "completed"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Bad request - invalid input data",
"status": 400,
"detail": "Bad request - invalid input data",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#authentication-error",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#forbidden",
"title": "Forbidden",
"status": 403,
"detail": "Forbidden",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Not Found",
"status": 404,
"detail": "Not Found",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#conflict",
"title": "Conflict - duplicate request detected",
"status": 409,
"detail": "Conflict - duplicate request detected",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#internal-error",
"title": "Internal server error",
"status": 500,
"detail": "Internal server error",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#internal-error",
"title": "Service unavailable",
"status": 503,
"detail": "Service unavailable",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#internal-error",
"title": "Unexpected error",
"status": 500,
"detail": "Unexpected error",
"instance": "https://api.platform.dakota.xyz/wallets/example-id/transactions",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}Authorizations
Headers
Unique key to ensure request idempotency. If the same key is used within a certain time window, the original response will be returned instead of executing the request again.
Path Parameters
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.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
Body
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.
The intent being endorsed
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
Show child attributes
Show child attributes
Response
Transaction sent successfully
Transaction details representing a transfer of funds from a crypto wallet.
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.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
Discriminator field. Always "wallet" for wallet transactions.
one_off, wallet, auto_account "wallet"
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.
27^[0-9A-Za-z]{27}$"1NFHrqBHb3cTfLVkFSGmHZqdDPi"
Current status of a transaction.
timed_out, not_started, in_progress, awaiting_confirmation, pending, processing, completed, invalid, failed, canceled, reversed, rejected, broadcasted, pending_return, returned, pending_reversal Identifier for a blockchain network
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 1 - 30"ethereum-mainnet"
The source address
The destination address
The transaction hash
"0x165cd37b4c644c2921454429e7f9358d18a45e14"
Type of transaction
transfer, evm_contract_call The transaction amount
"100.56"
ISO 4217 symbol representing a fiat asset.
3^[A-Z]{3}$"USD"
Unix time the transaction was created.
1781181600
Unix time the transaction was confirmed on chain; absent until confirmed.
1781181660
Was this page helpful?

