Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Cherami To Feedback API
version: 1.0.0
contact:
name: Cherami
email: hello@cherami.to
description: 'Operations tagged feedback across 2 of this provider''s published API definitions: cherami-to-openapi.json, cherami-to-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://cherami.to
security:
- apiKey: []
tags:
- name: Feedback
paths:
/v1/feedback:
post:
operationId: submitFeedback
tags:
- Feedback
summary: Submit feedback
description: 'Sends a message to Cherami: a problem report, a question, or a request for more inboxes or sending allowance (describe the work and the capacity it needs). It needs no inbox and uses no sending allowance.
For a problem, include in `body` the operation, what you expected and the failed response''s `X-Request-ID`.
**Replies go to the account owner''s email, not to an agent inbox.** Quote the returned `id` in later correspondence. There is no status endpoint, and a repeated submission creates a duplicate.
Without an API key, email hello@cherami.to. Support guide'
parameters: []
responses:
'201':
description: Created.
headers:
X-Request-ID:
description: Identifies this request; include it when reporting a problem.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/FeedbackResult'
example:
id: 11111111-1111-4111-8111-111111111111
status: received
'400':
description: '`invalid_json`: Send a valid UTF-8 JSON object, not an array or scalar.
`invalid_feedback`: Send a nonempty plain-text `body` and, optionally, a nonempty single-line `title`, with no other fields.'
headers:
X-Request-ID:
description: Identifies this request; include it when reporting a problem.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: '`unauthorized`: Send a valid API key as `Authorization: Bearer <key>`. If the key stopped working, get a new one through [recovery](https://cherami.to/docs/guides/recovery).'
headers:
X-Request-ID:
description: Identifies this request; include it when reporting a problem.
schema:
type: string
WWW-Authenticate:
schema:
const: Bearer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'413':
description: '`body_too_large`: Reduce the JSON request to the operation''s body limit.'
headers:
X-Request-ID:
description: Identifies this request; include it when reporting a problem.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'415':
description: '`unsupported_media_type`: Send `Content-Type: application/json`.'
headers:
X-Request-ID:
description: Identifies this request; include it when reporting a problem.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: '`feedback_unavailable`: The feedback could not be confirmed and may already have been recorded. Repeat it only if a duplicate is acceptable.'
headers:
X-Request-ID:
description: Identifies this request; include it when reporting a problem.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-error-codes:
- unauthorized
- invalid_json
- body_too_large
- unsupported_media_type
- invalid_feedback
- feedback_unavailable
requestBody:
required: true
description: JSON object, at most 20 KiB in total.
content:
application/json:
schema:
$ref: '#/components/schemas/FeedbackInput'
example:
title: Problem report
body: Describe the operation, expected result and request ID.
x-request-body-limit: 20480
x-example-body:
title: Problem report
body: Describe the operation, expected result and request ID.
servers:
- url: https://cherami.to
components:
schemas:
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Code to handle. Handle a code you don't recognize by its HTTP status.
message:
type: string
description: Explanation of this case; its wording can change.
required:
- code
- message
required:
- error
FeedbackInput:
type: object
properties:
title:
type: string
description: Optional single line; defaults to Feedback. No control characters.
body:
type: string
description: Nonempty plain text, kept as written.
required:
- body
additionalProperties: false
FeedbackResult:
type: object
properties:
id:
type: string
description: Cherami resource ID.
status:
const: received
required:
- id
- status
securitySchemes:
apiKey:
type: http
scheme: bearer
bearerFormat: Cherami API key
description: Cherami API key (ch_...), from Account → API keys or from redeeming a human-approved phrase. Every key reaches all of the account's inboxes and mail. MCP OAuth tokens and browser sessions are not accepted.
x-refined-from:
- cherami-to-openapi.json
- cherami-to-openapi.yml