Get V2 vouch entry/exit fee bps
GET
/vouches/v2/fees
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Get, RequestUri = new Uri("https://api.ethos.network/api/v2/vouches/v2/fees"),};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}package main
import ( "fmt" "net/http" "io")
func main() {
url := "https://api.ethos.network/api/v2/vouches/v2/fees"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() .url("https://api.ethos.network/api/v2/vouches/v2/fees") .get() .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = {method: 'GET', url: 'https://api.ethos.network/api/v2/vouches/v2/fees'};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'https://api.ethos.network/api/v2/vouches/v2/fees';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api.ethos.network/api/v2/vouches/v2/fees";
let client = reqwest::Client::new(); let response = client.get(url) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request GET \ --url https://api.ethos.network/api/v2/vouches/v2/feeswget --quiet \ --method GET \ --output-document \ - https://api.ethos.network/api/v2/vouches/v2/feesLinear with amount: fee = amount * entryFeeBps / 10000. Also surfaces the immutable payment token address and its EIP-712 domain so frontends can build permits without reading those from chain. Amount-dependent fees (previewVouchFee, reviewPrice) are intentionally NOT cached — read them live. Cached for 12h. > ⚠️ Warning: This is a beta endpoint. It is not guaranteed to be stable and may change or break without notice.
Responses
Section titled “Responses”Successful response
Media typeapplication/json
object
entryFeeBps
required
integer format: int64
exitFeeBps
required
integer format: int64
minimumVouchAmount
required
integer format: int64
maximumVouchAmount
required
integer format: int64
paymentToken
required
Ethereum address (0x-prefixed, 20 bytes)
string
paymentTokenDomain
required
object
name
required
string
version
required
string
chainId
required
integer format: int64
verifyingContract
required
Ethereum address (0x-prefixed, 20 bytes)
string
Example generated
{ "entryFeeBps": 1, "exitFeeBps": 1, "minimumVouchAmount": 1, "maximumVouchAmount": 1, "paymentToken": "example", "paymentTokenDomain": { "name": "example", "version": "example", "chainId": 1, "verifyingContract": "example" }}Internal server error
Media typeapplication/json
Internal server error error (500)
The error information
object
message
required
The error message
string
code
required
The error code
string
issues
An array of issues that were responsible for the error
Array<object>
object
message
required
string
Example
{ "code": "INTERNAL_SERVER_ERROR", "message": "Internal server error", "issues": []}