curl --request GET \
--url https://api-sandbox.beinfi.com/rail/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-sandbox.beinfi.com/rail/config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-sandbox.beinfi.com/rail/config', 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-sandbox.beinfi.com/rail/config",
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-sandbox.beinfi.com/rail/config"
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-sandbox.beinfi.com/rail/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.beinfi.com/rail/config")
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{
"network": "eip155:8453",
"asset": "<string>",
"assetDecimals": 123,
"payTo": "<string>",
"grace": {
"window": "<string>",
"maxPerAgent": "5000",
"maxTotal": "5000",
"queueLimit": 123,
"clockSkewSeconds": 123
},
"facilitator": {
"provider": "<string>",
"indexesForDiscovery": true
},
"outputSchema": {}
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>",
"resource": "<string>"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>",
"errors": [
{
"field": "<string>",
"value": "<string>",
"constraint": "<string>",
"description": "<string>"
}
]
}Ler configuração do Rail
O que o seu servidor precisa para cobrar agentes: rede, ativo, carteira e limites de grace. Leia uma vez, na inicialização, não a cada requisição.
Os valores no Rail estão em unidades atômicas do ativo. Use assetDecimals para converter: "5000" com seis casas é 0,005 USDC. Não fixe o número de casas no código.
O parâmetro product é validado aqui: se o produto não existe, você descobre na inicialização, não num 402 para cada agente.
curl --request GET \
--url https://api-sandbox.beinfi.com/rail/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-sandbox.beinfi.com/rail/config"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-sandbox.beinfi.com/rail/config', 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-sandbox.beinfi.com/rail/config",
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-sandbox.beinfi.com/rail/config"
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-sandbox.beinfi.com/rail/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.beinfi.com/rail/config")
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{
"network": "eip155:8453",
"asset": "<string>",
"assetDecimals": 123,
"payTo": "<string>",
"grace": {
"window": "<string>",
"maxPerAgent": "5000",
"maxTotal": "5000",
"queueLimit": 123,
"clockSkewSeconds": 123
},
"facilitator": {
"provider": "<string>",
"indexesForDiscovery": true
},
"outputSchema": {}
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>",
"resource": "<string>"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>",
"errors": [
{
"field": "<string>",
"value": "<string>",
"constraint": "<string>",
"description": "<string>"
}
]
}Autorizações
Chave secreta da conta: Authorization: Bearer sk_test_… ou sk_live_…. Use só no servidor.
Parâmetros de consulta
Chave do produto cujos medidores têm os preços do Rail.
Resposta
A configuração do Rail da sua conta.
O que o seu servidor usa para cobrar agentes no Rail.
Rede no formato CAIP-2: eip155:<chain id> em EVM (por exemplo Base), solana:<genesis ref> em Solana. Nomes curtos como base não são aceitos.
"eip155:8453"
Endereço do contrato do token (EVM) ou mint (Solana). Nunca o ticker.
Número de casas decimais do token. Todo valor atômico é lido com base nele.
A sua carteira, onde o dinheiro cai.
Quanto o seu servidor pode servir sozinho, por processo, enquanto a Infi estiver fora do ar. É o único caso em que há entrega sem liquidação.
Show child attributes
Show child attributes
Se as suas rotas são indexadas para descoberta por agentes (indexesForDiscovery). Se não forem, nenhum agente vai encontrá-las por busca.
Show child attributes
Show child attributes
Descrição da rota que o seu servidor repete na própria resposta 402.