curl --request PUT \
--url https://api.platform.dakota.xyz/recipients/{recipient_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"name": "Acme Corporation",
"address": {
"street1": "123 Main St",
"street2": "Apt 4B",
"street3": "Building C",
"city": "San Francisco",
"region": "CA",
"postal_code": "94105",
"country": "US"
}
}
'const options = {
method: 'PUT',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Acme Corporation',
address: {
street1: '123 Main St',
street2: 'Apt 4B',
street3: 'Building C',
city: 'San Francisco',
region: 'CA',
postal_code: '94105',
country: 'US'
}
})
};
fetch('https://api.platform.dakota.xyz/recipients/{recipient_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/recipients/{recipient_id}"
payload = {
"name": "Acme Corporation",
"address": {
"street1": "123 Main St",
"street2": "Apt 4B",
"street3": "Building C",
"city": "San Francisco",
"region": "CA",
"postal_code": "94105",
"country": "US"
}
}
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/recipients/{recipient_id}"
payload := strings.NewReader("{\n \"name\": \"Acme Corporation\",\n \"address\": {\n \"street1\": \"123 Main St\",\n \"street2\": \"Apt 4B\",\n \"street3\": \"Building C\",\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"postal_code\": \"94105\",\n \"country\": \"US\"\n }\n}")
req, _ := http.NewRequest("PUT", 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",
"name": "Acme Corporation",
"address": {
"street1": "123 Main St",
"street2": "Apt 4B",
"street3": "Building C",
"city": "San Francisco",
"region": "CA",
"postal_code": "94105",
"country": "US"
},
"status": "active",
"destinations": [
{
"destination_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"destination_type": "crypto",
"name": "My Ethereum Wallet",
"crypto_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"family": "evm",
"network_id": "ethereum-mainnet"
}
]
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "Invalid request",
"instance": "https://api.platform.dakota.xyz/recipients/example-id",
"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/recipients/example-id",
"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/recipients/example-id",
"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/recipients/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#conflict",
"title": "Recipient Conflict",
"status": 409,
"detail": "A recipient with this name already exists",
"instance": "https://api.platform.dakota.xyz/recipients/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Update a recipient
Update a recipient’s details
curl --request PUT \
--url https://api.platform.dakota.xyz/recipients/{recipient_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"name": "Acme Corporation",
"address": {
"street1": "123 Main St",
"street2": "Apt 4B",
"street3": "Building C",
"city": "San Francisco",
"region": "CA",
"postal_code": "94105",
"country": "US"
}
}
'const options = {
method: 'PUT',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Acme Corporation',
address: {
street1: '123 Main St',
street2: 'Apt 4B',
street3: 'Building C',
city: 'San Francisco',
region: 'CA',
postal_code: '94105',
country: 'US'
}
})
};
fetch('https://api.platform.dakota.xyz/recipients/{recipient_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/recipients/{recipient_id}"
payload = {
"name": "Acme Corporation",
"address": {
"street1": "123 Main St",
"street2": "Apt 4B",
"street3": "Building C",
"city": "San Francisco",
"region": "CA",
"postal_code": "94105",
"country": "US"
}
}
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/recipients/{recipient_id}"
payload := strings.NewReader("{\n \"name\": \"Acme Corporation\",\n \"address\": {\n \"street1\": \"123 Main St\",\n \"street2\": \"Apt 4B\",\n \"street3\": \"Building C\",\n \"city\": \"San Francisco\",\n \"region\": \"CA\",\n \"postal_code\": \"94105\",\n \"country\": \"US\"\n }\n}")
req, _ := http.NewRequest("PUT", 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",
"name": "Acme Corporation",
"address": {
"street1": "123 Main St",
"street2": "Apt 4B",
"street3": "Building C",
"city": "San Francisco",
"region": "CA",
"postal_code": "94105",
"country": "US"
},
"status": "active",
"destinations": [
{
"destination_id": "1NFHrqBHb3cTfLVkFSGmHZqdDPi",
"destination_type": "crypto",
"name": "My Ethereum Wallet",
"crypto_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"family": "evm",
"network_id": "ethereum-mainnet"
}
]
}{
"type": "https://docs.dakota.xyz/api-reference/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "Invalid request",
"instance": "https://api.platform.dakota.xyz/recipients/example-id",
"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/recipients/example-id",
"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/recipients/example-id",
"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/recipients/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#conflict",
"title": "Recipient Conflict",
"status": 409,
"detail": "A recipient with this name already exists",
"instance": "https://api.platform.dakota.xyz/recipients/example-id",
"request_id": "req_01hzy6y7v8w9x0y1z2a3b4c5d6"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Authorizations
Headers
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
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
Updated recipient details
Request for creating or updating a recipient entity.
Address Requirements:
- Optional for crypto-only recipients (can be omitted or null)
- Required before adding fiat destinations (ACH, Wire, SWIFT)
Migration Path: Recipients created without addresses can be updated later to add an address when fiat capabilities are needed.
Name of the recipient entity
3 - 140"Acme Corporation"
Physical address of the recipient.
- Optional when creating/updating crypto-only recipients
- Required for recipients that will have fiat destinations (ACH, Wire, SWIFT)
- Can be added later via PUT /recipients/{id} to enable fiat capabilities
Show child attributes
Show child attributes
Your own label for this recipient in your system, used to look it up with the external_id filter on GET /customers/{customer_id}/recipients. Not unique: Dakota does not reject a duplicate, and several recipients can share one value. On PUT /recipients/{recipient_id}, omit it to leave the current value unchanged; it cannot be cleared.
255^[^\x00-\x1f]*$"vendor-1177"
Response
Recipient updated successfully
Response containing recipient details.
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"
Name of the recipient entity.
"Acme Corporation"
Current status of the recipient
unused, active, frozen "active"
Your own label for this recipient in your system, used to look it up with the external_id filter on GET /customers/{customer_id}/recipients. Not unique: Dakota does not reject a duplicate, and several recipients can share one value. Omitted when none was set.
"vendor-1177"
Standardized physical address format used throughout the Dakota platform for user and entity addresses.
Show child attributes
Show child attributes
List of destinations associated with this recipient.
Response for a crypto destination.
- Crypto Destination Response
- Crypto Destination Response
- Crypto Destination Response
- US Fiat Destination Response
- IBAN Fiat Destination Response
Show child attributes
Show child attributes
Was this page helpful?

