curl --request GET \
--url https://gateway.molpha.io/v1/providers/{providerId}const options = {method: 'GET'};
fetch('https://gateway.molpha.io/v1/providers/{providerId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://gateway.molpha.io/v1/providers/{providerId}"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://gateway.molpha.io/v1/providers/{providerId}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"status": "ok",
"data": {
"id": "tickerlayer",
"name": "TickerLayer",
"description": "<string>",
"docsUrl": "<string>",
"termsUrl": "<string>",
"disclosure": "<string>",
"aggregation": {
"mode": "tolerance",
"minSignatures": 3,
"reason": "<string>"
},
"operations": [
{
"id": "crypto.trade_last",
"assetClass": "crypto",
"path": "/crypto/trade/last/:symbol",
"symbolExample": "BTCUSD"
}
],
"flows": [
{
"kind": "x402",
"baseUrl": "https://x402-testnet.tickerlayer.com",
"pathPrefix": "/v1",
"credential": {
"mode": "sponsored",
"header": "x-api-key"
},
"x402": {
"scheme": "exact",
"version": 2,
"network": "eip155:84532",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"assetName": "USDC",
"paymentModes": [
"per_node"
],
"catalogUrl": "<string>"
},
"feeds": [
{
"id": "btcusd",
"title": "BTC/USD last trade",
"operation": "crypto.trade_last",
"symbol": "BTCUSD",
"sourceId": "<string>",
"apiConfig": {
"url": "https://api.example.com/v1/price",
"method": "GET",
"headers": {},
"responseParser": "$.data.price",
"valueTransform": "multiply:1e6",
"aggregation": {
"mode": "tolerance",
"rule": "median",
"maxDeviationBps": 50,
"maxAgeMs": 2000,
"numeric": {
"type": "int256",
"decimals": 8
}
}
}
}
]
}
]
}
}{
"error": "provider not found"
}Get an integrated provider
One provider’s access flows, each with its host, credential or x402 terms and ready-made feeds.
curl --request GET \
--url https://gateway.molpha.io/v1/providers/{providerId}const options = {method: 'GET'};
fetch('https://gateway.molpha.io/v1/providers/{providerId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://gateway.molpha.io/v1/providers/{providerId}"
response = requests.get(url)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://gateway.molpha.io/v1/providers/{providerId}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"status": "ok",
"data": {
"id": "tickerlayer",
"name": "TickerLayer",
"description": "<string>",
"docsUrl": "<string>",
"termsUrl": "<string>",
"disclosure": "<string>",
"aggregation": {
"mode": "tolerance",
"minSignatures": 3,
"reason": "<string>"
},
"operations": [
{
"id": "crypto.trade_last",
"assetClass": "crypto",
"path": "/crypto/trade/last/:symbol",
"symbolExample": "BTCUSD"
}
],
"flows": [
{
"kind": "x402",
"baseUrl": "https://x402-testnet.tickerlayer.com",
"pathPrefix": "/v1",
"credential": {
"mode": "sponsored",
"header": "x-api-key"
},
"x402": {
"scheme": "exact",
"version": 2,
"network": "eip155:84532",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"assetName": "USDC",
"paymentModes": [
"per_node"
],
"catalogUrl": "<string>"
},
"feeds": [
{
"id": "btcusd",
"title": "BTC/USD last trade",
"operation": "crypto.trade_last",
"symbol": "BTCUSD",
"sourceId": "<string>",
"apiConfig": {
"url": "https://api.example.com/v1/price",
"method": "GET",
"headers": {},
"responseParser": "$.data.price",
"valueTransform": "multiply:1e6",
"aggregation": {
"mode": "tolerance",
"rule": "median",
"maxDeviationBps": 50,
"maxAgeMs": 2000,
"numeric": {
"type": "int256",
"decimals": 8
}
}
}
}
]
}
]
}
}{
"error": "provider not found"
}Path Parameters
Provider ID, as listed by GET /v1/providers.
"tickerlayer"
Response
Provider detail
"ok"
Hide child attributes
Hide child attributes
"tickerlayer"
"TickerLayer"
The provider's data licence.
How a value from this provider must be described to its users.
The provider routes the gateway acts on. Any other route of the provider is an ordinary source and never receives a sponsored credential.
Hide child attributes
Hide child attributes
The access flows the gateway can serve now, each with its own host and feeds.
Hide child attributes
Hide child attributes
api_key, x402 "x402"
"https://x402-testnet.tickerlayer.com"
Present only when the flow has one.
"/v1"
Set for the x402 flow.
Hide child attributes
Hide child attributes
"exact"
2
"eip155:84532"
"0x036CbD53842c5426634e7929541eC2318f3dCF7e"
"USDC"
per_node means one payment per eligible node.
per_node ["per_node"]
Hide child attributes
Hide child attributes
"btcusd"
"BTC/USD last trade"
"crypto.trade_last"
"BTCUSD"
Hex keccak256 of the canonical apiConfig.
Off-chain HTTP API configuration. Its canonical hash is the source ID.
Hide child attributes
Hide child attributes
Target API URL. Must use http or https.
"https://api.example.com/v1/price"
HTTP method. Required: GET, POST, PUT, PATCH, DELETE, HEAD or OPTIONS. It is hashed into the source ID as sent.
"GET"
JSONPath expression to extract the value from the API response.
"$.data.price"
Optional post-parse transform (e.g. multiply:1e6).
"multiply:1e6"
Selects median tolerance mode. Omit it for exact mode. It is part of the source ID; "mode":"exact" is rejected.
Hide child attributes
Hide child attributes
tolerance "tolerance"
median "median"
Largest allowed deviation from the lower median, in basis points.
50
Largest allowed age of an observation, in milliseconds. Must be greater than 0.
x >= 12000