Submit feedback
POST /v1/feedback
Read as Markdown ↗POST /v1/feedback
Requires a Claim-issued API key: Authorization: Bearer YOUR_CREDENTIAL.
POST /v1/feedback requires bearer authentication and JSON. It does not require an inbox or available outbound quota.
For an inbox or sending allowance increase, describe the actual workflow and desired capacity. See Free and custom allowances.
body is required nonempty plain text. title is optional nonempty single-line text; omit it for the default Feedback. Unknown fields, attachments, caller-supplied sender identity, and malformed Unicode are rejected. The title rejects control characters; the body is preserved as supplied.
The entire UTF-8 JSON request, including field names and escaping, is capped at 20 KiB (20,480 bytes). There is no submission-rate limit and no outbound quota charge.
Feedback uses the current verified human email as From and Reply-To and includes the account ID for review. Replies go to the human, not the agent inbox. Never include credentials or approval phrases.
Returns 201.
This confirms storage in our support inbox, not review or an approved allowance increase. Save the ID for correspondence. It grants no read/delete access to the support inbox. No feedback-status endpoint or automatic response is provided.
400: invalid fields. 401: missing/invalid credential. 413: oversized JSON. 415: non-JSON content type. An infrastructure 503 or lost response can have an unknown outcome. Do not blindly repeat POST; repeated submissions create duplicates.
Humans and agents without credentials can email hello@cherami.to directly. Support guide
Request body
JSON object. Total UTF-8 request body limit: 20480 bytes.
Schema: FeedbackInput
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
title | No | string | Optional nonempty single-line text; defaults to Feedback. No control characters or malformed Unicode. |
body | Yes | string | Nonempty well-formed Unicode plain text, preserved as supplied. |
Unknown fields are rejected.
curl example
Replace resource-ID placeholders with returned IDs. Supply CHERAMI_API_KEY through your private shell environment.
Save the intended payload as a private request.json file and replace illustrative values. For an uncertain response, follow the operation-specific recovery rules.
{
"title": "Problem report",
"body": "Describe the operation, expected result and request ID."
}curl --silent --show-error --include --request POST \
"https://cherami.to/v1/feedback" \
--header "Authorization: Bearer $CHERAMI_API_KEY" \
--header 'Content-Type: application/json' \
--data-binary @request.jsonResponses
HTTP 201
Successful operation; inspect resource state and outcome fields.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
{
"id": "11111111-1111-4111-8111-111111111111",
"status": "received"
}HTTP 400
invalid_json: Send a valid UTF-8 JSON object, not an array or scalar.
invalid_feedback: Supply a nonempty plain-text body and, optionally, a nonempty single-line title; no other fields.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
HTTP 401
unauthorized: Provide a valid bearer credential. Use human-approved recovery if access is lost.
X-Request-ID: Support correlation ID, not an idempotency key.WWW-Authenticate:"Bearer"
Content type: application/json.
HTTP 413
body_too_large: Reduce the JSON request to the endpoint's body limit.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
HTTP 415
unsupported_media_type: Send Content-Type: application/json.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
HTTP 503
feedback_unavailable: Feedback is unavailable or its submission outcome is unknown. Do not blindly repeat an uncertain submission.
X-Request-ID: Support correlation ID, not an idempotency key.
Content type: application/json.
Schema: FeedbackResult
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
id | Yes | string | Cherami resource ID, distinct from the RFC Message-ID. Use the returned value. |
status | Yes | "received" |
Schema: Error
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
error | Yes | object |
error fields
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
code | Yes | string | Programmatic error code. Handle unrecognized codes by status and operation-specific recovery. |
message | Yes | string | Human-readable context, not a stable string to match. |
HTTP conventions, errors and pagination · Download OpenAPI 3.1