Skip to main content
POST
/
v2
/
tokenized_assets
/
order
/
submit
Python (SDK)
from compass_api_sdk import CompassAPI


with CompassAPI(
    api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:

    res = compass_api.tokenized_assets.tokenized_assets_order_submit(signed_order={
        "key": "<value>",
    }, signature="<value>", extension="m2a", quote_id="<id>")

    # Handle response
    print(res)
import { CompassApiSDK } from "@compass-labs/api-sdk";

const compassApiSDK = new CompassApiSDK({
apiKeyAuth: "<YOUR_API_KEY_HERE>",
});

async function run() {
const result = await compassApiSDK.tokenizedAssets.tokenizedAssetsOrderSubmit({
signedOrder: {
"key": "<value>",
},
signature: "<value>",
extension: "m2a",
quoteId: "<id>",
});

console.log(result);
}

run();
curl --request POST \
--url https://api.compasslabs.ai/v2/tokenized_assets/order/submit \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"extension": "0x00",
"order_hash": "0xabababababababababababababababababababababababababababababababab",
"quote_id": "9afa6d80-9216-4bcd-b762-87151f9dae51",
"signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"signed_order": {
"maker": "0x2ed5C9c14E1F8baA94CD3e9b5b6e3F8e3D27504F",
"makerAsset": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"makerTraits": "0",
"makingAmount": "100000000",
"receiver": "0x399740157391a9f1bf4e9921a8834f9bc8f2678e",
"salt": "1234",
"takerAsset": "0xf6b1117ec07684D3958caD8BEb1b302bfD21103f",
"takingAmount": "260000000000000000"
}
}
'
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
extension: '0x00',
order_hash: '0xabababababababababababababababababababababababababababababababab',
quote_id: '9afa6d80-9216-4bcd-b762-87151f9dae51',
signature: '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
signed_order: {
maker: '0x2ed5C9c14E1F8baA94CD3e9b5b6e3F8e3D27504F',
makerAsset: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
makerTraits: '0',
makingAmount: '100000000',
receiver: '0x399740157391a9f1bf4e9921a8834f9bc8f2678e',
salt: '1234',
takerAsset: '0xf6b1117ec07684D3958caD8BEb1b302bfD21103f',
takingAmount: '260000000000000000'
}
})
};

fetch('https://api.compasslabs.ai/v2/tokenized_assets/order/submit', 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://api.compasslabs.ai/v2/tokenized_assets/order/submit",
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([
'extension' => '0x00',
'order_hash' => '0xabababababababababababababababababababababababababababababababab',
'quote_id' => '9afa6d80-9216-4bcd-b762-87151f9dae51',
'signature' => '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
'signed_order' => [
'maker' => '0x2ed5C9c14E1F8baA94CD3e9b5b6e3F8e3D27504F',
'makerAsset' => '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'makerTraits' => '0',
'makingAmount' => '100000000',
'receiver' => '0x399740157391a9f1bf4e9921a8834f9bc8f2678e',
'salt' => '1234',
'takerAsset' => '0xf6b1117ec07684D3958caD8BEb1b302bfD21103f',
'takingAmount' => '260000000000000000'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.compasslabs.ai/v2/tokenized_assets/order/submit"

payload := strings.NewReader("{\n \"extension\": \"0x00\",\n \"order_hash\": \"0xabababababababababababababababababababababababababababababababab\",\n \"quote_id\": \"9afa6d80-9216-4bcd-b762-87151f9dae51\",\n \"signature\": \"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n \"signed_order\": {\n \"maker\": \"0x2ed5C9c14E1F8baA94CD3e9b5b6e3F8e3D27504F\",\n \"makerAsset\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"makerTraits\": \"0\",\n \"makingAmount\": \"100000000\",\n \"receiver\": \"0x399740157391a9f1bf4e9921a8834f9bc8f2678e\",\n \"salt\": \"1234\",\n \"takerAsset\": \"0xf6b1117ec07684D3958caD8BEb1b302bfD21103f\",\n \"takingAmount\": \"260000000000000000\"\n }\n}")

req, _ := http.NewRequest("POST", url, payload)

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))

}
HttpResponse<String> response = Unirest.post("https://api.compasslabs.ai/v2/tokenized_assets/order/submit")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"extension\": \"0x00\",\n \"order_hash\": \"0xabababababababababababababababababababababababababababababababab\",\n \"quote_id\": \"9afa6d80-9216-4bcd-b762-87151f9dae51\",\n \"signature\": \"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n \"signed_order\": {\n \"maker\": \"0x2ed5C9c14E1F8baA94CD3e9b5b6e3F8e3D27504F\",\n \"makerAsset\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"makerTraits\": \"0\",\n \"makingAmount\": \"100000000\",\n \"receiver\": \"0x399740157391a9f1bf4e9921a8834f9bc8f2678e\",\n \"salt\": \"1234\",\n \"takerAsset\": \"0xf6b1117ec07684D3958caD8BEb1b302bfD21103f\",\n \"takingAmount\": \"260000000000000000\"\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.compasslabs.ai/v2/tokenized_assets/order/submit")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"extension\": \"0x00\",\n \"order_hash\": \"0xabababababababababababababababababababababababababababababababab\",\n \"quote_id\": \"9afa6d80-9216-4bcd-b762-87151f9dae51\",\n \"signature\": \"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n \"signed_order\": {\n \"maker\": \"0x2ed5C9c14E1F8baA94CD3e9b5b6e3F8e3D27504F\",\n \"makerAsset\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"makerTraits\": \"0\",\n \"makingAmount\": \"100000000\",\n \"receiver\": \"0x399740157391a9f1bf4e9921a8834f9bc8f2678e\",\n \"salt\": \"1234\",\n \"takerAsset\": \"0xf6b1117ec07684D3958caD8BEb1b302bfD21103f\",\n \"takingAmount\": \"260000000000000000\"\n }\n}"

response = http.request(request)
puts response.read_body
{
  "order_hash": "0x14459af3a06abf6f7a0d3c2c1fa3b64d2e1b8a7c5e3d2b1f0a9876543210596b",
  "submitted_at": "2026-05-04T11:42:31Z"
}
{
"error": "<string>",
"message": "<string>"
}
{
"error": "<string>",
"message": "<string>"
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}
{
"error": "<string>",
"message": "<string>"
}

Authorizations

x-api-key
string
header
required

Your Compass API Key. Get your key here.

Body

application/json

Submit an owner-signed order for settlement.

The shape echoes what POST /order returned plus the owner's EIP-712 signature. The maker is the Tokenized Assets Account, so the signature is validated against the product account at fill time.

signed_order
Signed Order · object
required

The order struct returned by /order (order.order_message). maker is the Tokenized Assets Account, not the owner's wallet — pass this dict back to the API verbatim.

signature
string
required

Owner's EIP-712 signature over order.safe_message_eip712 from the /order response. The signature is validated against the Tokenized Equities Account at fill time, so it must be a signature over the typed-data hash, not the raw order hash.

extension
string
required

Opaque hex blob from the /order response — pass back unchanged.

quote_id
string
required

order.quote_id from the /order response — pass back unchanged.

order_hash
string | null

order.order_hash from the /order response. Optional but recommended: the upstream relayer occasionally returns a 2xx with an empty body, and supplying the hash lets the API still return a usable handle for status and cancel lookups instead of failing.

Response

Successful Response

Returned after the signed order is submitted for settlement.

order_hash
string
required

On-chain order hash for status / cancel lookups.

submitted_at
string
required

Server-side ISO 8601 UTC timestamp at which the order was relayed.