Create feedback

Attaches a per-request outcome reward to the routing decision that served request_id — the enso training loop's quality signal.

POST /v1/ai/feedback

Addresshttps://api.hanzo.ai/v1/ai/feedback
MethodPOST
Operationpost_ai_feedback
AuthAuthorization: Bearer $HANZO_API_KEY

Attaches a per-request outcome reward to the routing decision that served request_id — the enso training loop's quality signal. Org-scoped via the same session-OR-Bearer principal the usage read uses (RequirePrincipal): the reward lands only on the caller's OWN org's event, so a request_id from another org (or unknown) is a 404 — cross-org writes are impossible and unknown ids are indistinguishable from foreign ones. Idempotent: a repeat overwrites. The body carries NO prompt text — only {request_id, reward|rating}.

Request

4 fields, body application/json (required).

FieldInTypeRequiredDescription
ratingbodynumber—
request_idbodystringyes
rewardbodynumber—
signalbodystring—One of up, accept, regenerate, down, switch, abandon, revert, rating, dismiss.

Response

StatusBodyMeaning
200Success.
401—No credential, or one this service does not accept.
403—A valid credential that may not do this.

200 body — 7 fields.

FieldInTypeAlwaysDescription
databodyany—The operation's own result.
data2bodyany—A second result the operation defines, when it has one.
msgbodystringyesEmpty on success, the reason on failure.
statusbodystringyesOne of ok, error.
data.recordedbodyboolean—
data.request_idbodystring—
data.rewardbodynumber—

Failure carries the platform error shape — see Errors.

Examples

hanzo ai feedback
import { Configuration, AiApi } from 'hanzoai';

const api = new AiApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postAiFeedback({ request_id: "<request_id>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import AiApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = AiApi(client).post_ai_feedback(request_id="<request_id>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.AiAPI.PostAiFeedback(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, ai_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = ai_api::post_ai_feedback(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.AiApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new AiApi(client).postAiFeedback();
curl -X POST https://api.hanzo.ai/v1/ai/feedback \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "request_id": "<request_id>"
     }'

MCP declares no tool for ai — tools/list on https://api.hanzo.ai/v1/mcp names the products it does reach. Use HTTP or an SDK.


AI API · All Hanzo APIs · Interactive reference

Was this page useful?