curl --request GET \
--url https://api.eco.com/v1/intents/status \
--header 'x-api-key: <api-key>'import requests
url = "https://api.eco.com/v1/intents/status"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.eco.com/v1/intents/status', 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.eco.com/v1/intents/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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.eco.com/v1/intents/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.eco.com/v1/intents/status")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eco.com/v1/intents/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"results": [
{
"id": "quote:8a7cbdcd-2aed-40b0-ab08-c4c10af15f23",
"type": "quote",
"status": "active",
"updatedAt": 1789522700,
"steps": []
}
],
"nextCursor": null
}Track the status of an intent
Returns the state of intents, quotes, and gasless jobs by hash, ID, or wallet. Always 200; unknown IDs report status unknown.
curl --request GET \
--url https://api.eco.com/v1/intents/status \
--header 'x-api-key: <api-key>'import requests
url = "https://api.eco.com/v1/intents/status"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.eco.com/v1/intents/status', 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.eco.com/v1/intents/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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.eco.com/v1/intents/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.eco.com/v1/intents/status")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eco.com/v1/intents/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"results": [
{
"id": "quote:8a7cbdcd-2aed-40b0-ab08-c4c10af15f23",
"type": "quote",
"status": "active",
"updatedAt": 1789522700,
"steps": []
}
],
"nextCursor": null
}400. Exact lookups (intentHash, sourceTxHash, destinationTxHash, quoteId, jobId) always return 200; an unknown ID is reported with status: "unknown". wallet returns a page of intents and is the only filter status can be combined with. A consumed quote reports submitted with its intentHashes, per-step steps[], and sourceTx / destinationTx once known.
quoteId and jobId are bare UUIDs, without the quote: or gasless: prefix.
Requires x-api-key. Partner pricing, attribution, and enabled features are tied to the key. Without a key the gateway answers 403 with a plain JSON body ({"Message": "User is not authorized ..."}); a key that is unknown, revoked, or not enabled for v1 answers 401 invalid-api-key. No requests-per-second quota is published. Handle 429 and honor Retry-After when present.
Examples use real mainnet token and contract addresses with placeholder wallets, hashes, signatures, and IDs.Authorizations
Query Parameters
Exact lookup of one intent by its hash, as returned by POST /v1/quotes.
Exact lookup by the source-chain funding transaction hash.
Exact lookup by the destination-chain fulfillment transaction hash.
Exact lookup of a quote by its bare UUID, without the quote: prefix.
Exact lookup of a gasless funding job by its bare UUID, without the gasless: prefix.
Pages through intents funded by, or delivered to, this wallet. The only filter that returns a collection.
1Narrows a wallet page to one status. Rejected with 400 unless wallet is also supplied.
pending, filled, settled, refunded, refundable, expired, failed, unknown Opaque cursor from a previous nextCursor.
1Page size for wallet lookups, 1-50. Default 20.
1 <= x <= 50