Query vouches with optional filters
POST
/vouches
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://api.ethos.network/api/v2/vouches"), Content = new StringContent("{ \"ids\": [ 1 ], \"subjectUserkeys\": [ \"example\" ], \"authorProfileIds\": [ 1 ], \"subjectProfileIds\": [ 1 ], \"subjectAddresses\": [ \"example\" ], \"subjectAttestationHashes\": [ \"example\" ], \"archived\": true, \"afterDate\": \"example\", \"orderBy\": { \"balance\": \"asc\", \"vouchedAt\": \"asc\", \"updatedAt\": \"asc\" }, \"duration\": \"example\", \"limit\": 50, \"offset\": 0 }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.ethos.network/api/v2/vouches"
payload := strings.NewReader("{ \"ids\": [ 1 ], \"subjectUserkeys\": [ \"example\" ], \"authorProfileIds\": [ 1 ], \"subjectProfileIds\": [ 1 ], \"subjectAddresses\": [ \"example\" ], \"subjectAttestationHashes\": [ \"example\" ], \"archived\": true, \"afterDate\": \"example\", \"orderBy\": { \"balance\": \"asc\", \"vouchedAt\": \"asc\", \"updatedAt\": \"asc\" }, \"duration\": \"example\", \"limit\": 50, \"offset\": 0 }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
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();
MediaType mediaType = MediaType.parse("application/json");RequestBody body = RequestBody.create(mediaType, "{ \"ids\": [ 1 ], \"subjectUserkeys\": [ \"example\" ], \"authorProfileIds\": [ 1 ], \"subjectProfileIds\": [ 1 ], \"subjectAddresses\": [ \"example\" ], \"subjectAttestationHashes\": [ \"example\" ], \"archived\": true, \"afterDate\": \"example\", \"orderBy\": { \"balance\": \"asc\", \"vouchedAt\": \"asc\", \"updatedAt\": \"asc\" }, \"duration\": \"example\", \"limit\": 50, \"offset\": 0 }");Request request = new Request.Builder() .url("https://api.ethos.network/api/v2/vouches") .post(body) .addHeader("Content-Type", "application/json") .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = { method: 'POST', url: 'https://api.ethos.network/api/v2/vouches', headers: {'Content-Type': 'application/json'}, data: { ids: [1], subjectUserkeys: ['example'], authorProfileIds: [1], subjectProfileIds: [1], subjectAddresses: ['example'], subjectAttestationHashes: ['example'], archived: true, afterDate: 'example', orderBy: {balance: 'asc', vouchedAt: 'asc', updatedAt: 'asc'}, duration: 'example', limit: 50, offset: 0 }};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'https://api.ethos.network/api/v2/vouches';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"ids":[1],"subjectUserkeys":["example"],"authorProfileIds":[1],"subjectProfileIds":[1],"subjectAddresses":["example"],"subjectAttestationHashes":["example"],"archived":true,"afterDate":"example","orderBy":{"balance":"asc","vouchedAt":"asc","updatedAt":"asc"},"duration":"example","limit":50,"offset":0}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}use serde_json::json;use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api.ethos.network/api/v2/vouches";
let payload = json!({ "ids": (1), "subjectUserkeys": ("example"), "authorProfileIds": (1), "subjectProfileIds": (1), "subjectAddresses": ("example"), "subjectAttestationHashes": ("example"), "archived": true, "afterDate": "example", "orderBy": json!({ "balance": "asc", "vouchedAt": "asc", "updatedAt": "asc" }), "duration": "example", "limit": 50, "offset": 0 });
let mut headers = reqwest::header::HeaderMap::new(); headers.insert("Content-Type", "application/json".parse().unwrap());
let client = reqwest::Client::new(); let response = client.post(url) .headers(headers) .json(&payload) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request POST \ --url https://api.ethos.network/api/v2/vouches \ --header 'Content-Type: application/json' \ --data '{ "ids": [ 1 ], "subjectUserkeys": [ "example" ], "authorProfileIds": [ 1 ], "subjectProfileIds": [ 1 ], "subjectAddresses": [ "example" ], "subjectAttestationHashes": [ "example" ], "archived": true, "afterDate": "example", "orderBy": { "balance": "asc", "vouchedAt": "asc", "updatedAt": "asc" }, "duration": "example", "limit": 50, "offset": 0 }'wget --quiet \ --method POST \ --header 'Content-Type: application/json' \ --body-data '{ "ids": [ 1 ], "subjectUserkeys": [ "example" ], "authorProfileIds": [ 1 ], "subjectProfileIds": [ 1 ], "subjectAddresses": [ "example" ], "subjectAttestationHashes": [ "example" ], "archived": true, "afterDate": "example", "orderBy": { "balance": "asc", "vouchedAt": "asc", "updatedAt": "asc" }, "duration": "example", "limit": 50, "offset": 0 }' \ --output-document \ - https://api.ethos.network/api/v2/vouches⚠️ Warning: This is a beta endpoint. It is not guaranteed to be stable and may change or break without notice.
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
ids
Array<number>
subjectUserkeys
Array<string>
authorProfileIds
Array<integer>
subjectProfileIds
Array<integer>
subjectAddresses
Array<string>
subjectAttestationHashes
Array<string>
archived
boolean
afterDate
string
orderBy
object
balance
string
vouchedAt
string
updatedAt
string
duration
string
limit
integer
offset
integer
Responses
Section titled “Responses”Successful response
Media typeapplication/json
object
values
required
Array<object>
object
authorProfileId
required
integer
subjectProfileId
required
integer
authorUser
Any of:
object
id
required
number
profileId
required
number | null
displayName
required
string
username
required
string | null
avatarUrl
required
string format: uri
description
required
string | null
score
required
number
status
required
string
userkeys
required
Array<string>
xpTotal
required
number
xpStreakDays
required
number
xpRemovedDueToAbuse
required
boolean
influenceFactor
required
number
influenceFactorPercentile
required
number
validatorNftCount
required
number
meowMeowsNftCount
required
number
links
required
object
profile
required
string format: uri
scoreBreakdown
required
string format: uri
stats
required
object
review
required
object
received
required
object
negative
required
number
neutral
required
number
positive
required
number
vouch
required
@deprecated Native-currency lifetime totals only. Use stats.vouchTotals (per-token). Removed after 2026-10-20.
object
given
required
object
amountWeiTotal
required
integer format: int64
count
required
number
received
required
object
amountWeiTotal
required
integer format: int64
count
required
number
vouchTotals
required
Array<object>
object
balance
required
object
given
required
integer format: int64
received
required
integer format: int64
count
required
object
given
required
integer
received
required
integer
null
subjectUser
Any of:
object
id
required
number
profileId
required
number | null
displayName
required
string
username
required
string | null
avatarUrl
required
string format: uri
description
required
string | null
score
required
number
status
required
string
userkeys
required
Array<string>
xpTotal
required
number
xpStreakDays
required
number
xpRemovedDueToAbuse
required
boolean
influenceFactor
required
number
influenceFactorPercentile
required
number
validatorNftCount
required
number
meowMeowsNftCount
required
number
links
required
object
profile
required
string format: uri
scoreBreakdown
required
string format: uri
stats
required
object
review
required
object
received
required
object
negative
required
number
neutral
required
number
positive
required
number
vouch
required
@deprecated Native-currency lifetime totals only. Use stats.vouchTotals (per-token). Removed after 2026-10-20.
object
given
required
object
amountWeiTotal
required
integer format: int64
count
required
number
received
required
object
amountWeiTotal
required
integer format: int64
count
required
number
vouchTotals
required
Array<object>
object
balance
required
object
given
required
integer format: int64
received
required
integer format: int64
count
required
object
given
required
integer
received
required
integer
null
key
additional properties
total
required
number
limit
required
number
offset
required
number
Example
{ "values": [ { "authorUser": { "status": "ACTIVE", "humanVerificationStatus": "REQUESTED", "stats": { "vouchTotals": [ { "token": { "id": "eth" } } ], "whufGuarantee": { "status": "active" } } }, "subjectUser": { "status": "ACTIVE", "humanVerificationStatus": "REQUESTED", "stats": { "vouchTotals": [ { "token": { "id": "eth" } } ], "whufGuarantee": { "status": "active" } } } } ]}Invalid input data
Media typeapplication/json
Invalid input data error (400)
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": "BAD_REQUEST", "message": "Invalid input data", "issues": []}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": []}