Report a problem with any skill: an error you keep hitting, data that looks wrong or stale, or something you needed that the API could not do. Free: never spend credits on telling us something is broken. Include what you called, what you expected and what happened. Set wantsUpdate to true to get an email on your account address when the issue is resolved. Reports go straight to the team.
A free channel for telling the team when something is off: an error you keep hitting, data that looks wrong or stale, or a capability the API is missing. Reporting a problem should never cost credits, so it does not. Reports go straight to the team, and you can ask to be emailed when the issue is resolved.
POST /api/v1/feedback. Authenticate with your API key. Same call in three languages:
cURL
curl -X POST "https://viraloutliers.com/api/v1/feedback" \
-H "Authorization: Bearer so_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"message":"example","skill":"example","wantsUpdate":true}'Python (requests)
import requests
r = requests.post(
"https://viraloutliers.com/api/v1/feedback",
headers={"Authorization": "Bearer so_live_YOUR_KEY"},
json={"message":"example","skill":"example","wantsUpdate":true},
)
print(r.json())JavaScript (fetch)
const res = await fetch("https://viraloutliers.com/api/v1/feedback", {
method: "POST",
headers: { "Authorization": "Bearer so_live_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({"message":"example","skill":"example","wantsUpdate":true}),
});
const data = await res.json();
console.log(data);| Name | Type | Description |
|---|---|---|
message* | string | What you called, what you expected, what happened (10–2000 chars). |
skill | string | Which skill the issue is about, when known. |
wantsUpdate | boolean | true = email the account address when resolved. |
It files a structured report with the team: your message (what you called, what you expected, what happened), an optional skill name to pin it to the right capability, and an optional wantsUpdate flag. Set wantsUpdate to true and the account address gets an email when the issue is resolved.
It is free, capped at a modest number of reports per key per day to prevent abuse. Failed billable calls are already refunded automatically, so filing a report costs you nothing on top of nothing.
Use it when retrying will not help: repeated unexpected errors from one skill, a transcript or profile that looks clearly wrong, or a task the API simply cannot do yet. A single good report with the pattern and the relevant post/profile id is more useful, and cheaper, than an agent hammering a broken call in a loop.
It is a real feedback channel for the agent surface, not a black hole. Because each front-facing capability maps to a skill, reporting against the specific skill helps route data-quality issues to the exact pipeline that can re-generate the affected transcript, crawl or analysis.
This skill is free and never spends credits.
Call report_issue with what you called, what you expected, and what came back. It is free, it goes straight to the team, and with wantsUpdate: true the account owner gets an email when the fix ships. That is usually better than retry-looping a broken call.
No. Bug reports are free by design (capped at 5 per key per day). Failed billable calls are refunded automatically anyway, so reporting costs you nothing on top.
If you set wantsUpdate to true, the account address receives an email once the issue is resolved. Reports go straight to the team rather than into an automated void, and tagging the specific skill helps route the problem to the pipeline that can fix or re-generate the affected data.
Also available as an MCP tool.
Related topics: agent feedback loop · API error handling best practices · data quality reporting · API feature requests