curl -X GET "https://api.services.payward.com/v1/assets/stablecoin/USDC/rates"import requests
url = "https://api.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates', 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.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates"
req, _ := http.NewRequest("GET", url, nil)
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.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"timestamp": "2026-01-01T00:00:00Z",
"midpoint": "94250.12"
},
{
"timestamp": "2026-01-01T00:15:00Z",
"midpoint": "94381.50"
}
],
"quote_symbol": "USD",
"quote_type": "fiat",
"start_timestamp": "2026-01-01T00:00:00Z",
"end_timestamp": "2026-01-01T00:30:00Z",
"interval": "PT15M",
"page_size": 20
}{
"error": {
"type": "<string>",
"status": 400,
"instance": "<string>",
"code": "bad_request",
"doc_url": "<string>",
"causes": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"status": 401,
"instance": "<string>",
"code": "unauthenticated",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 403,
"instance": "<string>",
"code": "forbidden",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "request_error",
"status": 404,
"instance": "<string>",
"code": "not_found",
"doc_url": "<string>"
}
}{
"error": {
"type": "<string>",
"status": 504,
"instance": "<string>",
"code": "deadline_exceeded",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "state_error",
"status": 409,
"instance": "<string>",
"code": "conflict",
"doc_url": "<string>"
}
}{
"error": {
"type": "<string>",
"status": 429,
"instance": "<string>",
"code": "resource_exhausted",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 500,
"instance": "<string>",
"code": "internal",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 503,
"instance": "<string>",
"code": "unavailable",
"doc_url": "<string>",
"causes": [
{}
]
}
}List asset rates
Returns historical rates for a given asset.
The response includes a timestamp and price for each interval in the requested time window. Use quote_symbol and quote_type to choose the asset used for pricing.
curl -X GET "https://api.services.payward.com/v1/assets/stablecoin/USDC/rates"import requests
url = "https://api.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates', 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.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates"
req, _ := http.NewRequest("GET", url, nil)
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.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.services.payward.com/v1/assets/{asset_type}/{asset_symbol}/rates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"timestamp": "2026-01-01T00:00:00Z",
"midpoint": "94250.12"
},
{
"timestamp": "2026-01-01T00:15:00Z",
"midpoint": "94381.50"
}
],
"quote_symbol": "USD",
"quote_type": "fiat",
"start_timestamp": "2026-01-01T00:00:00Z",
"end_timestamp": "2026-01-01T00:30:00Z",
"interval": "PT15M",
"page_size": 20
}{
"error": {
"type": "<string>",
"status": 400,
"instance": "<string>",
"code": "bad_request",
"doc_url": "<string>",
"causes": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"status": 401,
"instance": "<string>",
"code": "unauthenticated",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 403,
"instance": "<string>",
"code": "forbidden",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "request_error",
"status": 404,
"instance": "<string>",
"code": "not_found",
"doc_url": "<string>"
}
}{
"error": {
"type": "<string>",
"status": 504,
"instance": "<string>",
"code": "deadline_exceeded",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "state_error",
"status": 409,
"instance": "<string>",
"code": "conflict",
"doc_url": "<string>"
}
}{
"error": {
"type": "<string>",
"status": 429,
"instance": "<string>",
"code": "resource_exhausted",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 500,
"instance": "<string>",
"code": "internal",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 503,
"instance": "<string>",
"code": "unavailable",
"doc_url": "<string>",
"causes": [
{}
]
}
}Path Parameters
Classification of the asset (fiat, crypto, stablecoin, or xstock).
fiat, crypto, stablecoin, xstock Asset name (e.g., BTC, ETH, USD).
Ticker symbol of an asset (e.g., BTC, USDC, EUR).
3 - 16"BTC"
Query Parameters
ISO 3166-1 alpha-2 country code used to apply geo restrictions (e.g., US, GB).
^[A-Z]{2}$"US"
Ticker symbol of the fiat quote asset to use for valuations (e.g., USD, EUR). Defaults to USD.
3 - 16"USD"
Classification of the quote asset. Currently only fiat is supported.
fiat Start of the time window (inclusive). Only results whose timestamp is greater than or equal to start_timestamp are returned.
"2025-06-30T00:00:00.000Z"
End of the time window (exclusive). Only results whose timestamp is strictly less than end_timestamp are returned.
"2025-06-30T00:00:00.000Z"
If provided, shows the history of the asset in the given interval.
Should be in the format of an [ISO 8601 duration].
Supported resolutions: 1min, 5min, 15min, 30min, 60min, 4H, 1D, 7D, 15D
"PT15M"
Maximum number of results to return on a single page.
1 <= x <= 100Opaque page token returned by a previous response's next_page_token. Omit to start from the beginning.
1 - 256Response
Response
List of historical records
Show child attributes
Show child attributes
The asset used as the quote currency for all rates in data. Echoes the quote_symbol query parameter (or its default).
16"USD"
Classification of the quote asset. Echoes the quote_type query parameter (or its default).
fiat Start of the time window covered by data. Echoes the start_timestamp query parameter (or its default).
End of the time window covered by data. Echoes the end_timestamp query parameter (or its default).
Granularity of each row in data. Echoes the interval query parameter.
"PT15M"
Maximum number of results returned on this page. Echoes the page_size query parameter (or its default).
1 <= x <= 100Opaque token for the next page of results. Absent when there are no more pages.
1 - 256