curl --request POST \
--url https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer \
--header 'Content-Type: application/json' \
--header 'X-Monaco-Signature: <api-key>' \
--data '
{
"asset": "<string>",
"amount": "<string>",
"from": {
"wallet": true,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
},
"to": {
"wallet": true,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
}
}
'import requests
url = "https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer"
payload = {
"asset": "<string>",
"amount": "<string>",
"from": {
"wallet": True,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
},
"to": {
"wallet": True,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
}
}
headers = {
"X-Monaco-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Monaco-Signature': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
asset: '<string>',
amount: '<string>',
from: {wallet: true, marginAccountId: '<string>', riskBucketId: '<string>'},
to: {wallet: true, marginAccountId: '<string>', riskBucketId: '<string>'}
})
};
fetch('https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'asset' => '<string>',
'amount' => '<string>',
'from' => [
'wallet' => true,
'marginAccountId' => '<string>',
'riskBucketId' => '<string>'
],
'to' => [
'wallet' => true,
'marginAccountId' => '<string>',
'riskBucketId' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Monaco-Signature: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer"
payload := strings.NewReader("{\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n },\n \"to\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Monaco-Signature", "<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))
}HttpResponse<String> response = Unirest.post("https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer")
.header("X-Monaco-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n },\n \"to\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Monaco-Signature"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n },\n \"to\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"movementId": "<string>",
"amount": "<string>",
"fromMarginAccountId": "<string>",
"toMarginAccountId": "<string>",
"toRiskBucketId": "<string>"
}Post apiv1margincollateraltransfer
Move collateral between the spot wallet, the caller’s margin accounts and
their risk buckets. from and to each name the wallet or a margin
account (optionally one of its risk buckets). Supported moves: wallet to
the default margin account and back, margin account to margin account,
and margin account to one of its own risk buckets. The older transfer
routes keep working unchanged.
curl --request POST \
--url https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer \
--header 'Content-Type: application/json' \
--header 'X-Monaco-Signature: <api-key>' \
--data '
{
"asset": "<string>",
"amount": "<string>",
"from": {
"wallet": true,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
},
"to": {
"wallet": true,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
}
}
'import requests
url = "https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer"
payload = {
"asset": "<string>",
"amount": "<string>",
"from": {
"wallet": True,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
},
"to": {
"wallet": True,
"marginAccountId": "<string>",
"riskBucketId": "<string>"
}
}
headers = {
"X-Monaco-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Monaco-Signature': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
asset: '<string>',
amount: '<string>',
from: {wallet: true, marginAccountId: '<string>', riskBucketId: '<string>'},
to: {wallet: true, marginAccountId: '<string>', riskBucketId: '<string>'}
})
};
fetch('https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'asset' => '<string>',
'amount' => '<string>',
'from' => [
'wallet' => true,
'marginAccountId' => '<string>',
'riskBucketId' => '<string>'
],
'to' => [
'wallet' => true,
'marginAccountId' => '<string>',
'riskBucketId' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Monaco-Signature: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer"
payload := strings.NewReader("{\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n },\n \"to\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Monaco-Signature", "<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))
}HttpResponse<String> response = Unirest.post("https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer")
.header("X-Monaco-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n },\n \"to\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/margin/collateral/transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Monaco-Signature"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"from\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n },\n \"to\": {\n \"wallet\": true,\n \"marginAccountId\": \"<string>\",\n \"riskBucketId\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"movementId": "<string>",
"amount": "<string>",
"fromMarginAccountId": "<string>",
"toMarginAccountId": "<string>",
"toRiskBucketId": "<string>"
}Authorizations
Ed25519 session-key request signing. Every authenticated request carries three headers: X-Monaco-PublicKey (64-char lowercase-hex session public key), X-Monaco-Timestamp (Unix milliseconds, within 30s of server time), and X-Monaco-Signature (hex ed25519 signature). The signature is over METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body), where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from POST /api/v1/auth/challenge followed by POST /api/v1/auth/verify.
Body
Response
OK
The source margin account, when the source is one.
The destination margin account, when the destination is one.
The destination risk bucket, when the destination is one.
Was this page helpful?

