Get quotes
curl --request POST \
--url https://tars.loopscale.com/v1/markets/quote \
--header 'Content-Type: application/json' \
--header 'user-wallet: <user-wallet>' \
--data '
{
"durationType": 123,
"duration": 123,
"principal": "<string>",
"limit": 123,
"offset": 123,
"collateral": [
"<string>"
],
"minPrincipalAmount": 123
}
'import requests
url = "https://tars.loopscale.com/v1/markets/quote"
payload = {
"durationType": 123,
"duration": 123,
"principal": "<string>",
"limit": 123,
"offset": 123,
"collateral": ["<string>"],
"minPrincipalAmount": 123
}
headers = {
"user-wallet": "<user-wallet>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'user-wallet': '<user-wallet>', 'Content-Type': 'application/json'},
body: JSON.stringify({
durationType: 123,
duration: 123,
principal: '<string>',
limit: 123,
offset: 123,
collateral: ['<string>'],
minPrincipalAmount: 123
})
};
fetch('https://tars.loopscale.com/v1/markets/quote', 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://tars.loopscale.com/v1/markets/quote",
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([
'durationType' => 123,
'duration' => 123,
'principal' => '<string>',
'limit' => 123,
'offset' => 123,
'collateral' => [
'<string>'
],
'minPrincipalAmount' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"user-wallet: <user-wallet>"
],
]);
$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://tars.loopscale.com/v1/markets/quote"
payload := strings.NewReader("{\n \"durationType\": 123,\n \"duration\": 123,\n \"principal\": \"<string>\",\n \"limit\": 123,\n \"offset\": 123,\n \"collateral\": [\n \"<string>\"\n ],\n \"minPrincipalAmount\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("user-wallet", "<user-wallet>")
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://tars.loopscale.com/v1/markets/quote")
.header("user-wallet", "<user-wallet>")
.header("Content-Type", "application/json")
.body("{\n \"durationType\": 123,\n \"duration\": 123,\n \"principal\": \"<string>\",\n \"limit\": 123,\n \"offset\": 123,\n \"collateral\": [\n \"<string>\"\n ],\n \"minPrincipalAmount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tars.loopscale.com/v1/markets/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["user-wallet"] = '<user-wallet>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"durationType\": 123,\n \"duration\": 123,\n \"principal\": \"<string>\",\n \"limit\": 123,\n \"offset\": 123,\n \"collateral\": [\n \"<string>\"\n ],\n \"minPrincipalAmount\": 123\n}"
response = http.request(request)
puts response.read_body[
{
"apy": 123,
"ltv": 123,
"liquidationThreshold": 123,
"maxPrincipalAvailable": 123,
"sumPrincipalAvailable": 123
}
]"Something went wrong: You have an error in your SQL syntax.""Failed to deserialize the JSON body into the target type: missing field `mints` at line 1 column 1."Markets
Get quotes
Returns a list of current lend orders available for the specified principal token, collateral, and target duration. Results are sorted by APY and support pagination.
POST
/
markets
/
quote
Get quotes
curl --request POST \
--url https://tars.loopscale.com/v1/markets/quote \
--header 'Content-Type: application/json' \
--header 'user-wallet: <user-wallet>' \
--data '
{
"durationType": 123,
"duration": 123,
"principal": "<string>",
"limit": 123,
"offset": 123,
"collateral": [
"<string>"
],
"minPrincipalAmount": 123
}
'import requests
url = "https://tars.loopscale.com/v1/markets/quote"
payload = {
"durationType": 123,
"duration": 123,
"principal": "<string>",
"limit": 123,
"offset": 123,
"collateral": ["<string>"],
"minPrincipalAmount": 123
}
headers = {
"user-wallet": "<user-wallet>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'user-wallet': '<user-wallet>', 'Content-Type': 'application/json'},
body: JSON.stringify({
durationType: 123,
duration: 123,
principal: '<string>',
limit: 123,
offset: 123,
collateral: ['<string>'],
minPrincipalAmount: 123
})
};
fetch('https://tars.loopscale.com/v1/markets/quote', 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://tars.loopscale.com/v1/markets/quote",
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([
'durationType' => 123,
'duration' => 123,
'principal' => '<string>',
'limit' => 123,
'offset' => 123,
'collateral' => [
'<string>'
],
'minPrincipalAmount' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"user-wallet: <user-wallet>"
],
]);
$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://tars.loopscale.com/v1/markets/quote"
payload := strings.NewReader("{\n \"durationType\": 123,\n \"duration\": 123,\n \"principal\": \"<string>\",\n \"limit\": 123,\n \"offset\": 123,\n \"collateral\": [\n \"<string>\"\n ],\n \"minPrincipalAmount\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("user-wallet", "<user-wallet>")
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://tars.loopscale.com/v1/markets/quote")
.header("user-wallet", "<user-wallet>")
.header("Content-Type", "application/json")
.body("{\n \"durationType\": 123,\n \"duration\": 123,\n \"principal\": \"<string>\",\n \"limit\": 123,\n \"offset\": 123,\n \"collateral\": [\n \"<string>\"\n ],\n \"minPrincipalAmount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tars.loopscale.com/v1/markets/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["user-wallet"] = '<user-wallet>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"durationType\": 123,\n \"duration\": 123,\n \"principal\": \"<string>\",\n \"limit\": 123,\n \"offset\": 123,\n \"collateral\": [\n \"<string>\"\n ],\n \"minPrincipalAmount\": 123\n}"
response = http.request(request)
puts response.read_body[
{
"apy": 123,
"ltv": 123,
"liquidationThreshold": 123,
"maxPrincipalAvailable": 123,
"sumPrincipalAvailable": 123
}
]"Something went wrong: You have an error in your SQL syntax.""Failed to deserialize the JSON body into the target type: missing field `mints` at line 1 column 1."Headers
Wallet address of the requesting user
Body
application/json
Duration type enum (0 = days, 1 = weeks, 2 = months, 3 = minutes, 4 = years)
Number of units of the specified durationType
Token mint address of the principal
Pagination limit (max 1000)
Pagination offset, sorted by APY
List of collateral asset identifiers
Optional minimum principal amount in lamports to filter offers
Response
List of available quotes
⌘I