curl --request GET \
--url https://api.jup.ag/trigger/v2/orders/history/dca/{id} \
--header 'Authorization: Bearer <token>' \
--header 'x-api-key: <api-key>'import requests
url = "https://api.jup.ag/trigger/v2/orders/history/dca/{id}"
headers = {
"x-api-key": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-api-key': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://api.jup.ag/trigger/v2/orders/history/dca/{id}', 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.jup.ag/trigger/v2/orders/history/dca/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api.jup.ag/trigger/v2/orders/history/dca/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.jup.ag/trigger/v2/orders/history/dca/{id}")
.header("x-api-key", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/trigger/v2/orders/history/dca/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "019f053d-3f0c-70ad-bb5e-76d633291f80",
"requestId": "1cc1ad82-866e-492d-a092-18859565945d",
"userPubkey": "8gs8rXavMQRqoAoMhCfo79r2wndgSn93FLSWErdHp82n",
"vaultPubkey": "66xK9AE6oFpGAyn9eCWE3LtYwUZKkeUxbfjFSNmFnkBo",
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"outputMint": "So11111111111111111111111111111111111111112",
"inputAmountInitial": "20000000",
"inputAmountRemaining": "10000000",
"amountPerRound": "10000000",
"outputAmountTotal": "137589159",
"inputAmountUsed": "10000000",
"orderType": "time_based",
"minPriceUsd": null,
"maxPriceUsd": null,
"triggerMint": null,
"retryWindowSeconds": 1800,
"jlEnabled": false,
"jlYieldUsd": null,
"numberOfRounds": 2,
"intervalSeconds": 3600,
"beginFillAt": "2026-06-26T18:42:07.750Z",
"nextFillAt": "2026-06-26T19:44:57.469Z",
"lastFillAt": "2026-06-26T18:42:11.469Z",
"roundsFilled": 1,
"fillPercent": 0.5,
"state": "active",
"displayState": "active",
"createdAt": "2026-06-26T18:42:07.782Z",
"updatedAt": "2026-06-26T18:42:11.469Z",
"events": [
{
"type": "fill",
"timestamp": "2026-06-26T18:42:11.469Z",
"txSignature": "HuNMpjFkTjVrCYMN6gTPWV9ay3GSxTxM7sZj4WNzjvzQoe4J5CR71MnTpuMKH9rtkDoDCTWu6rYRM12oR9cpbb4",
"roundNumber": 1,
"inputAmount": "10000000",
"outputAmount": "137589159",
"state": "success"
},
{
"type": "deposit",
"timestamp": "2026-06-26T18:42:08.880Z",
"txSignature": "32hAuVdZ57y5TUEx4vdV75zJyTqoCVqAby4eiayrmUW1TCuwoAvPRBcnhPMLN1YpfCp4Rc6HiLXKsi3NF5iWVcrn",
"inputAmount": "20000000",
"state": "success"
}
]
}Get DCA Order
Get a single DCA order by ID, including fills and events
curl --request GET \
--url https://api.jup.ag/trigger/v2/orders/history/dca/{id} \
--header 'Authorization: Bearer <token>' \
--header 'x-api-key: <api-key>'import requests
url = "https://api.jup.ag/trigger/v2/orders/history/dca/{id}"
headers = {
"x-api-key": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-api-key': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://api.jup.ag/trigger/v2/orders/history/dca/{id}', 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.jup.ag/trigger/v2/orders/history/dca/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api.jup.ag/trigger/v2/orders/history/dca/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.jup.ag/trigger/v2/orders/history/dca/{id}")
.header("x-api-key", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jup.ag/trigger/v2/orders/history/dca/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "019f053d-3f0c-70ad-bb5e-76d633291f80",
"requestId": "1cc1ad82-866e-492d-a092-18859565945d",
"userPubkey": "8gs8rXavMQRqoAoMhCfo79r2wndgSn93FLSWErdHp82n",
"vaultPubkey": "66xK9AE6oFpGAyn9eCWE3LtYwUZKkeUxbfjFSNmFnkBo",
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"outputMint": "So11111111111111111111111111111111111111112",
"inputAmountInitial": "20000000",
"inputAmountRemaining": "10000000",
"amountPerRound": "10000000",
"outputAmountTotal": "137589159",
"inputAmountUsed": "10000000",
"orderType": "time_based",
"minPriceUsd": null,
"maxPriceUsd": null,
"triggerMint": null,
"retryWindowSeconds": 1800,
"jlEnabled": false,
"jlYieldUsd": null,
"numberOfRounds": 2,
"intervalSeconds": 3600,
"beginFillAt": "2026-06-26T18:42:07.750Z",
"nextFillAt": "2026-06-26T19:44:57.469Z",
"lastFillAt": "2026-06-26T18:42:11.469Z",
"roundsFilled": 1,
"fillPercent": 0.5,
"state": "active",
"displayState": "active",
"createdAt": "2026-06-26T18:42:07.782Z",
"updatedAt": "2026-06-26T18:42:11.469Z",
"events": [
{
"type": "fill",
"timestamp": "2026-06-26T18:42:11.469Z",
"txSignature": "HuNMpjFkTjVrCYMN6gTPWV9ay3GSxTxM7sZj4WNzjvzQoe4J5CR71MnTpuMKH9rtkDoDCTWu6rYRM12oR9cpbb4",
"roundNumber": 1,
"inputAmount": "10000000",
"outputAmount": "137589159",
"state": "success"
},
{
"type": "deposit",
"timestamp": "2026-06-26T18:42:08.880Z",
"txSignature": "32hAuVdZ57y5TUEx4vdV75zJyTqoCVqAby4eiayrmUW1TCuwoAvPRBcnhPMLN1YpfCp4Rc6HiLXKsi3NF5iWVcrn",
"inputAmount": "20000000",
"state": "success"
}
]
}Authorizations
Get API key via https://developers.jup.ag/portal
JWT token from the challenge-response auth flow
Path Parameters
DCA order UUID
Response
DCA order details
DCA order UUID
time_based, price_conditional depositing, deposit_failed, active, executing, withdrawing, completed, cancelled pending, active, executing, pending_withdraw, completed, cancelled, failed Total deposit amount in smallest units
Amount still held in the vault
Amount swapped each round (the last round may include dust)
Total output received across all successful rounds
Total input consumed by successful rounds
Retry window per round in seconds, clamp(intervalSeconds/2, 30, 7200)
Whether Earn While You Wait is on for this order (idle funds earn Jupiter Lend yield between rounds).
Yield earned so far in USD for an Earn While You Wait order, from the ~15 min price cache. null when not JL-enabled or a required price is uncached.
ISO-8601 time the first round is scheduled
ISO-8601 time of the next scheduled round
Progress from 0 to 1
Show child attributes
Show child attributes
Was this page helpful?
