Confirm Quote
curl --request POST \
--url https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"signature": "0xabcdef..."
}
'import requests
url = "https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm"
payload = { "signature": "0xabcdef..." }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({signature: '0xabcdef...'})
};
fetch('https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm', 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.convallax.com/v1/mm/quotes/{quoteId}/confirm",
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([
'signature' => '0xabcdef...'
]),
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.convallax.com/v1/mm/quotes/{quoteId}/confirm"
payload := strings.NewReader("{\n \"signature\": \"0xabcdef...\"\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.convallax.com/v1/mm/quotes/{quoteId}/confirm")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"signature\": \"0xabcdef...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm")
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 \"signature\": \"0xabcdef...\"\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"success": false,
"error": "Quote request not found or expired"
}{
"success": false,
"error": "Quote request not found or expired"
}{
"success": false,
"error": "Quote request not found or expired"
}{
"success": false,
"error": "Quote request not found or expired"
}Market Maker
Confirm Quote
Submit the EIP-712 settlement signature for an accepted quote. Authenticated via the X-API-Key header.
POST
/
v1
/
mm
/
quotes
/
{quoteId}
/
confirm
Confirm Quote
curl --request POST \
--url https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"signature": "0xabcdef..."
}
'import requests
url = "https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm"
payload = { "signature": "0xabcdef..." }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({signature: '0xabcdef...'})
};
fetch('https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm', 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.convallax.com/v1/mm/quotes/{quoteId}/confirm",
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([
'signature' => '0xabcdef...'
]),
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.convallax.com/v1/mm/quotes/{quoteId}/confirm"
payload := strings.NewReader("{\n \"signature\": \"0xabcdef...\"\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.convallax.com/v1/mm/quotes/{quoteId}/confirm")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"signature\": \"0xabcdef...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.convallax.com/v1/mm/quotes/{quoteId}/confirm")
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 \"signature\": \"0xabcdef...\"\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"success": false,
"error": "Quote request not found or expired"
}{
"success": false,
"error": "Quote request not found or expired"
}{
"success": false,
"error": "Quote request not found or expired"
}{
"success": false,
"error": "Quote request not found or expired"
}Submit the EIP-712 signature for a quote that was accepted (you received a
quote:accepted message on the post-trade WebSocket). Sign the order from that message with the wallet key for order.maker, then POST the signature here before the confirmationDeadline.
The backend verifies that your signature recovers to order.maker, returns the signed order to the trader, and emits quote:confirmed to you (and quote:rejected to other makers).
If you miss the
confirmationDeadline, the backend falls back to the next-best maker and this endpoint returns 404 no_pending_acceptance. Keep your USDC approvals set ahead of time so signing is instant.Authorizations
Maker API key (env-issued or self-serve from the dashboard). Maps to a stable makerId.
Path Parameters
Server-generated quote ID from Submit Quote (also echoed in quote:accepted).
Example:
"8f3c2b1a-1d2e-4c3b-9a8f-6e5d4c3b2a1f"
Body
application/json
EIP-712 signature over the order from quote:accepted, signed with the order.maker key.
Example:
"0xabcdef..."
Response
Signature verified; order returned to the trader
Was this page helpful?
