curl --request POST \
--url https://api.limitless.exchange/parlay/partner/positions/{id}/claim \
--header 'Content-Type: application/json' \
--header 'lmts-api-key: <api-key>' \
--header 'lmts-signature: <lmts-signature>' \
--header 'lmts-timestamp: <lmts-timestamp>' \
--data '
{
"onBehalfOf": 12345
}
'import requests
url = "https://api.limitless.exchange/parlay/partner/positions/{id}/claim"
payload = { "onBehalfOf": 12345 }
headers = {
"lmts-timestamp": "<lmts-timestamp>",
"lmts-signature": "<lmts-signature>",
"lmts-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'lmts-timestamp': '<lmts-timestamp>',
'lmts-signature': '<lmts-signature>',
'lmts-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({onBehalfOf: 12345})
};
fetch('https://api.limitless.exchange/parlay/partner/positions/{id}/claim', 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.limitless.exchange/parlay/partner/positions/{id}/claim",
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([
'onBehalfOf' => 12345
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"lmts-api-key: <api-key>",
"lmts-signature: <lmts-signature>",
"lmts-timestamp: <lmts-timestamp>"
],
]);
$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.limitless.exchange/parlay/partner/positions/{id}/claim"
payload := strings.NewReader("{\n \"onBehalfOf\": 12345\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("lmts-timestamp", "<lmts-timestamp>")
req.Header.Add("lmts-signature", "<lmts-signature>")
req.Header.Add("lmts-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.limitless.exchange/parlay/partner/positions/{id}/claim")
.header("lmts-timestamp", "<lmts-timestamp>")
.header("lmts-signature", "<lmts-signature>")
.header("lmts-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"onBehalfOf\": 12345\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/parlay/partner/positions/{id}/claim")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["lmts-timestamp"] = '<lmts-timestamp>'
request["lmts-signature"] = '<lmts-signature>'
request["lmts-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"onBehalfOf\": 12345\n}"
response = http.request(request)
puts response.read_body{
"parlayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "APPROVAL_PENDING",
"txHash": "<string>",
"transactionId": "<string>",
"userOperationHash": "<string>"
}Claim Partner Pack
Approves and redeems from the managed holder. Repeat the same position and onBehalfOf to advance APPROVAL_PENDING and CLAIM_PENDING to CLAIMED. Stop blind retries on PACK_SUBMISSION_UNKNOWN and recover using the mined redemption receipt. Requires HMAC with trading and delegated_signing scopes. Never set x-on-behalf-of globally.
curl --request POST \
--url https://api.limitless.exchange/parlay/partner/positions/{id}/claim \
--header 'Content-Type: application/json' \
--header 'lmts-api-key: <api-key>' \
--header 'lmts-signature: <lmts-signature>' \
--header 'lmts-timestamp: <lmts-timestamp>' \
--data '
{
"onBehalfOf": 12345
}
'import requests
url = "https://api.limitless.exchange/parlay/partner/positions/{id}/claim"
payload = { "onBehalfOf": 12345 }
headers = {
"lmts-timestamp": "<lmts-timestamp>",
"lmts-signature": "<lmts-signature>",
"lmts-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'lmts-timestamp': '<lmts-timestamp>',
'lmts-signature': '<lmts-signature>',
'lmts-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({onBehalfOf: 12345})
};
fetch('https://api.limitless.exchange/parlay/partner/positions/{id}/claim', 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.limitless.exchange/parlay/partner/positions/{id}/claim",
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([
'onBehalfOf' => 12345
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"lmts-api-key: <api-key>",
"lmts-signature: <lmts-signature>",
"lmts-timestamp: <lmts-timestamp>"
],
]);
$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.limitless.exchange/parlay/partner/positions/{id}/claim"
payload := strings.NewReader("{\n \"onBehalfOf\": 12345\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("lmts-timestamp", "<lmts-timestamp>")
req.Header.Add("lmts-signature", "<lmts-signature>")
req.Header.Add("lmts-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.limitless.exchange/parlay/partner/positions/{id}/claim")
.header("lmts-timestamp", "<lmts-timestamp>")
.header("lmts-signature", "<lmts-signature>")
.header("lmts-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"onBehalfOf\": 12345\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/parlay/partner/positions/{id}/claim")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["lmts-timestamp"] = '<lmts-timestamp>'
request["lmts-signature"] = '<lmts-signature>'
request["lmts-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"onBehalfOf\": 12345\n}"
response = http.request(request)
puts response.read_body{
"parlayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "APPROVAL_PENDING",
"txHash": "<string>",
"transactionId": "<string>",
"userOperationHash": "<string>"
}trading and delegated_signing. Put the managed owner in body field onBehalfOf; do not send x-on-behalf-of. Use the winning purchase’s position UUID.
For a WON position, the backend handles sponsored conditional-token approval and factory redemption. Repeat the identical position/account request to progress through APPROVAL_PENDING, CLAIM_PENDING, and CLAIMED. The payout goes to the managed wallet.
txHash belongs to the current step. Only a CLAIMED response establishes it as the confirmed redemption transaction. transactionId and userOperationHash identify sponsored submission and are not interchangeable with a mined transaction hash.
Back off on 429 and wallet-busy conflicts before resuming the same claim. Inspect PACK_TRANSACTION_REVERTED, fix its cause, and resume the same position. On PACK_SUBMISSION_UNKNOWN, stop blind retries and reconcile the transaction; use Confirm Claim once you have its mined redemption receipt.
The position’s status remains WON after claiming. Verify the claim response’s CLAIMED status or the position’s claimTxHash.
See the SDK claim helpers for bounded convergence. This route shares the partner-owner limit of 10 requests per 10 seconds.Authorizations
Scoped API token with HMAC-SHA256 signing. Requires three headers: lmts-api-key (token ID), lmts-timestamp (ISO-8601), lmts-signature (Base64-encoded HMAC). See Authentication docs for details.
Headers
ISO-8601 HMAC signing timestamp.
Base64 HMAC-SHA256 signature. Sign the method, path including query, and exact body with the timestamp.
Path Parameters
Body
Owned managed server-wallet profile ID.
1 <= x <= 214748364712345
Response
Successful response
APPROVAL_PENDING, CLAIM_PENDING, CLAIMED Transaction hash for the current step. When CLAIMED, the confirmed redemption transaction.
Sponsored user operation identifier, not a mined transaction hash.