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.
Submit feedback
Section titled “Submit feedback”POST /v1/feedbackRate-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.
Request body
Section titled “Request body”| 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) |
Example
Section titled “Example”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" } }'import { Chronary } from '@chronary/sdk';
const client = new Chronary({ apiKey: process.env.CHRONARY_API_KEY });
await client.feedback.submit({ type: 'bug', message: 'Availability endpoint returns empty slots for UTC+13 timezones.', context: { sdk_name: 'chronary-ts', endpoint: 'GET /v1/availability', },});from chronary import Chronary
client = Chronary()
client.feedback.submit( type="bug", message="Availability endpoint returns empty slots for UTC+13 timezones.", context={"sdk_name": "chronary-python", "sdk_version": "0.4.2"},)chronary feedback submit \ --type bug \ --message "Availability endpoint returns empty slots for UTC+13 timezones."Response 202 Accepted
Section titled “Response 202 Accepted”{ "status": "accepted"}Response 429 Too Many Requests
Section titled “Response 429 Too Many Requests”When the daily cap is reached:
HTTP/1.1 429 Too Many RequestsRetry-After: 43200Content-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.
Recommended context fields
Section titled “Recommended context fields”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.