curl --request POST \
--url https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out \
--header 'Content-Type: application/json' \
--header 'X-Monaco-Signature: <api-key>' \
--data '
{
"marginAccountId": "<string>",
"amount": "<string>"
}
'import requests
url = "https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out"
payload = {
"marginAccountId": "<string>",
"amount": "<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({marginAccountId: '<string>', amount: '<string>'})
};
fetch('https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out', 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/sub-accounts/{marginAccountId}/collateral/transfer-out",
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([
'marginAccountId' => '<string>',
'amount' => '<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/sub-accounts/{marginAccountId}/collateral/transfer-out"
payload := strings.NewReader("{\n \"marginAccountId\": \"<string>\",\n \"amount\": \"<string>\"\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/sub-accounts/{marginAccountId}/collateral/transfer-out")
.header("X-Monaco-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"marginAccountId\": \"<string>\",\n \"amount\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out")
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 \"marginAccountId\": \"<string>\",\n \"amount\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"movementId": "<string>",
"amount": "<string>",
"fromMarginAccountId": "<string>",
"toMarginAccountId": "<string>",
"toRiskBucketId": "<string>"
}Post apiv1marginsub accounts collateraltransfer out
Move collateral from one of the caller’s sub-accounts back to their
default margin account, in one sequenced step. The mirror of
TransferCollateralToSubAccount; the amount must fit the sub-account’s
free collateral.
curl --request POST \
--url https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out \
--header 'Content-Type: application/json' \
--header 'X-Monaco-Signature: <api-key>' \
--data '
{
"marginAccountId": "<string>",
"amount": "<string>"
}
'import requests
url = "https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out"
payload = {
"marginAccountId": "<string>",
"amount": "<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({marginAccountId: '<string>', amount: '<string>'})
};
fetch('https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out', 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/sub-accounts/{marginAccountId}/collateral/transfer-out",
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([
'marginAccountId' => '<string>',
'amount' => '<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/sub-accounts/{marginAccountId}/collateral/transfer-out"
payload := strings.NewReader("{\n \"marginAccountId\": \"<string>\",\n \"amount\": \"<string>\"\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/sub-accounts/{marginAccountId}/collateral/transfer-out")
.header("X-Monaco-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"marginAccountId\": \"<string>\",\n \"amount\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out")
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 \"marginAccountId\": \"<string>\",\n \"amount\": \"<string>\"\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.
Path Parameters
The caller's sub-account the collateral leaves.
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?

