Get fill progress
curl --request GET \
--url https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}', 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.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}",
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>"
],
]);
$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.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}"
req, _ := http.NewRequest("GET", url, nil)
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.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"quoteId": "<string>",
"executionId": "<string>",
"overallState": "<string>",
"terminal": true,
"errorReason": "<string>",
"pollAfterMs": 123,
"dagProgress": {
"dagRunId": "<string>",
"totalSteps": 123,
"currentSequence": 123,
"currentStepType": "<string>",
"completedSequences": [
123
],
"stepTypes": {},
"status": "<string>",
"errorReason": "<string>"
},
"orderIds": [
"<string>"
],
"steps": [
{
"sequence": 123,
"stepType": "<string>",
"status": "<string>",
"attempt": 123,
"startedAt": "<string>",
"completedAt": "<string>",
"errorReason": "<string>",
"orderIds": [
"<string>"
],
"kind": "<string>",
"groupId": "<string>",
"groupStatus": "<string>",
"label": "<string>",
"bridge": {
"amount": "<string>",
"tokenSymbol": "<string>",
"fromChain": "<string>",
"toChain": "<string>"
}
}
],
"orders": [
{
"orderId": "<string>",
"venue": "<string>",
"status": "<string>",
"event": "<string>",
"updatedAt": "<string>",
"filledAmountRaw": "<string>",
"remainingAmountRaw": "<string>",
"quotedSharesRaw": "<string>",
"actualSharesRaw": "<string>",
"quotedToWinRaw": "<string>",
"actualToWinRaw": "<string>",
"quotedPriceRaw": "<string>",
"executionPriceRaw": "<string>",
"partialFillReason": "<string>",
"errorReason": "<string>",
"venueOrderId": "<string>",
"txHash": "<string>"
}
],
"pendingSignatures": [
{
"stepId": "<string>",
"venue": "<string>",
"signerAddress": "<string>",
"expiresAt": "<string>",
"type": "eip712",
"payload": {
"domain": {
"name": "<string>",
"version": "<string>",
"chainId": 123,
"verifyingContract": "<string>",
"salt": "<string>"
},
"types": {},
"primaryType": "<string>",
"message": {}
},
"chainId": "<string>",
"purpose": "<string>",
"optional": true
}
]
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "yield-xyz-borrow returned a response for GET /v1/positions that does not match the expected schema",
"id": "INTEGRATION_RESPONSE_SCHEMA_DRIFT",
"details": {
"integration": "yield-xyz-borrow",
"endpoint": "GET /v1/positions",
"issues": [
{
"path": "supplyBalances.0.balanceUsd",
"message": "Expected string, received number",
"code": "invalid_type"
}
]
}
}{
"error": "<string>"
}Agg
Get fill progress
Execution progress for a fill. Poll until terminal is true, waiting pollAfterMs between calls. Show one row per steps[].groupId.
Needs a linked Agg session (POST /link). Not available to account-abstracted clients.
GET
/
clients
/
me
/
integrations
/
agg
/
orders
/
{quoteId}
Get fill progress
curl --request GET \
--url https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}', 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.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}",
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>"
],
]);
$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.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}"
req, _ := http.NewRequest("GET", url, nil)
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.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portalhq.io/api/v3/clients/me/integrations/agg/orders/{quoteId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"quoteId": "<string>",
"executionId": "<string>",
"overallState": "<string>",
"terminal": true,
"errorReason": "<string>",
"pollAfterMs": 123,
"dagProgress": {
"dagRunId": "<string>",
"totalSteps": 123,
"currentSequence": 123,
"currentStepType": "<string>",
"completedSequences": [
123
],
"stepTypes": {},
"status": "<string>",
"errorReason": "<string>"
},
"orderIds": [
"<string>"
],
"steps": [
{
"sequence": 123,
"stepType": "<string>",
"status": "<string>",
"attempt": 123,
"startedAt": "<string>",
"completedAt": "<string>",
"errorReason": "<string>",
"orderIds": [
"<string>"
],
"kind": "<string>",
"groupId": "<string>",
"groupStatus": "<string>",
"label": "<string>",
"bridge": {
"amount": "<string>",
"tokenSymbol": "<string>",
"fromChain": "<string>",
"toChain": "<string>"
}
}
],
"orders": [
{
"orderId": "<string>",
"venue": "<string>",
"status": "<string>",
"event": "<string>",
"updatedAt": "<string>",
"filledAmountRaw": "<string>",
"remainingAmountRaw": "<string>",
"quotedSharesRaw": "<string>",
"actualSharesRaw": "<string>",
"quotedToWinRaw": "<string>",
"actualToWinRaw": "<string>",
"quotedPriceRaw": "<string>",
"executionPriceRaw": "<string>",
"partialFillReason": "<string>",
"errorReason": "<string>",
"venueOrderId": "<string>",
"txHash": "<string>"
}
],
"pendingSignatures": [
{
"stepId": "<string>",
"venue": "<string>",
"signerAddress": "<string>",
"expiresAt": "<string>",
"type": "eip712",
"payload": {
"domain": {
"name": "<string>",
"version": "<string>",
"chainId": 123,
"verifyingContract": "<string>",
"salt": "<string>"
},
"types": {},
"primaryType": "<string>",
"message": {}
},
"chainId": "<string>",
"purpose": "<string>",
"optional": true
}
]
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "yield-xyz-borrow returned a response for GET /v1/positions that does not match the expected schema",
"id": "INTEGRATION_RESPONSE_SCHEMA_DRIFT",
"details": {
"integration": "yield-xyz-borrow",
"endpoint": "GET /v1/positions",
"issues": [
{
"path": "supplyBalances.0.balanceUsd",
"message": "Expected string, received number",
"code": "invalid_type"
}
]
}
}{
"error": "<string>"
}Authorizations
Client API Key or Client Session Token (CST). Pass as a Bearer token in the Authorization header.
Path Parameters
The quote being filled.
Query Parameters
live (default) or paper. Paper rows only appear on reads that pass the same mode.
Available options:
live, paper Response
Success
Show child attributes
Show child attributes
Was this page helpful?