List risk appetite statements
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Get, RequestUri = new Uri("https://api.vendorica.com/v1/risk-appetite?page=1&limit=100&sortBy=createdAt&sortOrder=asc&isArchived=true"), Headers = { { "Authorization", "Bearer <token>" }, },};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.vendorica.com/v1/risk-appetite?page=1&limit=100&sortBy=createdAt&sortOrder=asc&isArchived=true"
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(res) fmt.Println(string(body))
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() .url("https://api.vendorica.com/v1/risk-appetite?page=1&limit=100&sortBy=createdAt&sortOrder=asc&isArchived=true") .get() .addHeader("Authorization", "Bearer <token>") .build();
Response response = client.newCall(request).execute();const url = 'https://api.vendorica.com/v1/risk-appetite?page=1&limit=100&sortBy=createdAt&sortOrder=asc&isArchived=true';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
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.vendorica.com/v1/risk-appetite";
let querystring = [ ("page", "1"), ("limit", "100"), ("sortBy", "createdAt"), ("sortOrder", "asc"), ("isArchived", "true"), ];
let mut headers = reqwest::header::HeaderMap::new(); headers.insert("Authorization", "Bearer <token>".parse().unwrap());
let client = reqwest::Client::new(); let response = client.get(url) .query(&querystring) .headers(headers) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request GET \ --url 'https://api.vendorica.com/v1/risk-appetite?page=1&limit=100&sortBy=createdAt&sortOrder=asc&isArchived=true' \ --header 'Authorization: Bearer <token>'The narrative plus the tolerance band, per category. toleranceMetric names what the band is measured on — mean or worst residual score across the category’s live scenarios, or how many of its indicators are red — so comparing toleranceLimit against anything else is comparing two different scales. toleranceWarning is the optional “approaching” line and always sits at or below the limit. approvalStatus speaks the approvals engine’s vocabulary (not_submitted where a risk scenario would say draft), and a content edit supersedes an approval, so an approved statement is one whose current text a board actually signed. Archived statements are the record of what the appetite USED to be; they are hidden unless asked for.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”Success
object
object
object
Example
{ "success": true, "data": [ { "id": "e507f62f-b888-48d7-82ef-65bc46dd20a8", "organizationId": "37847dde-4192-4154-800a-7bf5b1811c63", "categoryId": "ec40dfcb-b320-496b-83d3-8eb8e209b1f4", "statement": "string", "toleranceMetric": "residual_score_avg", "toleranceLimit": 1, "toleranceWarning": 1, "ownerUserId": "3ac42c25-a9d1-4165-8ace-b392a964b522", "reviewCadenceMonths": 1, "nextReviewAt": "string", "effectiveFrom": "string", "approvalStatus": "not_submitted", "approvalInstanceId": "3f90fd83-923f-4213-8949-6f30929a0edc", "approvedAt": "2026-08-19T09:41:12.004Z", "isArchived": true, "categoryName": "string", "ownerEmail": "string", "createdBy": "7c7536d1-bf85-4e29-88da-0c1ee9410cee", "createdAt": "2026-08-19T09:41:12.004Z", "updatedAt": "2026-08-19T09:41:12.004Z" } ], "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H", "message": "string", "pagination": { "page": 1, "limit": 1, "total": 1, "totalPages": 1 }}Validation error
object
Example
{ "success": false, "error": "Bad request", "code": "BAD_REQUEST", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Unauthorized
object
Example
{ "success": false, "error": "Unauthorized", "code": "UNAUTHORIZED", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Forbidden — missing scope
object
Example
{ "success": false, "error": "Forbidden", "code": "FORBIDDEN", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Not found
object
Example
{ "success": false, "error": "Resource not found", "code": "NOT_FOUND", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Rate limit exceeded
object
Example
{ "success": false, "error": "Too many requests", "code": "TOO_MANY_REQUESTS", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}