Skip to content

Feedback

Submit structured feedback (bugs, feature requests, friction reports) directly from your agents. Chronary routes each submission to the team for triage.

No database record is created — feedback is fire-and-forget, logged to Chronary’s observability stack. The response arrives in a single network round trip.

POST /v1/feedback

Rate-limited to 25 submissions per day per organization (UTC day boundary). Available on every plan, including free. The 26th submission returns 429 with a Retry-After header set to the seconds until the next UTC midnight.

| Field | Type | Required | Description | |-------|------|----------|-------------| | type | enum | yes | One of bug, feature, friction | | message | string | yes | 10–2000 characters describing the feedback | | context | object | no | Arbitrary JSON metadata (SDK version, endpoint, error details) |

Terminal window
curl -X POST https://api.chronary.ai/v1/feedback \
-H "Authorization: Bearer chr_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"type": "bug",
"message": "Availability endpoint returns empty slots for UTC+13 timezones.",
"context": {
"sdk_name": "chronary-python",
"sdk_version": "0.4.2",
"endpoint": "GET /v1/availability"
}
}'
{
"status": "accepted"
}

When the daily cap is reached:

HTTP/1.1 429 Too Many Requests
Retry-After: 43200
Content-Type: application/json
{
"error": {
"type": "quota_exceeded",
"message": "Daily feedback limit of 25 reached. Try again tomorrow.",
"request_id": "req_..."
}
}

The Retry-After header is seconds until the next UTC midnight.

For highest-signal bug reports, agents should include whichever of the following are available:

| Key | Purpose | |-----|---------| | sdk_name | e.g. chronary-ts, chronary-python | | sdk_version | Installed SDK version | | endpoint | API endpoint being called (e.g. GET /v1/availability) | | request_id | The x-request-id of a failing request | | error_type | Error type from the original response body | | http_status | HTTP status of the original response |

These are documented conventions, not enforced — the context field accepts any JSON object.