Send feedback

POSThttps://api.paxalabs.com/v1/feedback

POST /v1/feedback reports a wrong output, an API problem, or a platform issue to the Paxa team, tied to the requests it names.

View as Markdown
curl -X POST https://api.paxalabs.com/v1/feedback \
  -H "Authorization: Bearer $PAXA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "model",
    "rating": "bad",
    "message": "The reply to a customer dropped the polite register.",
    "request_ids": [
      "7d9c2b7e-4a41-4c8e-9a35-1f26d8c04b7a"
    ],
    "example": {
      "input": "Thank you for waiting. We will call you back today.",
      "output": "ขอบคุณที่รอ เดี๋ยวโทรกลับวันนี้",
      "expected": "ขอบคุณที่รอค่ะ ทางเราจะโทรกลับภายในวันนี้ค่ะ"
    }
  }'
{
  "id": "3f1c9a52-8e4b-4d7a-b6c0-2e5f9d8a1b47",
  "kind": "model",
  "rating": "bad",
  "message": "The reply to a customer dropped the polite register.",
  "request_ids": [
    "7d9c2b7e-4a41-4c8e-9a35-1f26d8c04b7a"
  ],
  "example": {
    "input": "Thank you for waiting. We will call you back today.",
    "output": "ขอบคุณที่รอ เดี๋ยวโทรกลับวันนี้",
    "expected": "ขอบคุณที่รอค่ะ ทางเราจะโทรกลับภายในวันนี้ค่ะ"
  },
  "source": "api",
  "status": "open",
  "resolution": null,
  "created_at": "2026-09-28T06:12:44.301Z",
  "resolved_at": null
}

Name the requests a report is about with their x-request-id values, or a live session's connection id. The ids let the team trace each request in the account's logs. For a wrong output, add an example with the exact input, the output you received, and the output you expected.

A rating on at least one request id is a complete report and the quickest signal after checking an output. Ratings feed the team's quality measures and stay open. A report with a message or an example is triaged, and GET /v1/feedback returns its status and the team's note.

Feedback costs no credits and sits outside the rate limit. Each account can send 50 written reports and 1,000 rating-only reports in any 24 hours. Past either cap the report answers 429 feedback_limit and nothing is stored. Reports take no Idempotency-Key. Before sending one again, check GET /v1/feedback with request_id.

Headers#

authorizationBearer pxa_...Required

Authorization: Bearer pxa_... (recommended).

x-api-keypxa_...

Alternative to the Authorization header. Ignored when Authorization is present.

Authentication

Body#

kind"model" or "api" or "platform" or "other"Required

What the report is about. Use model when an output was wrong or poor, api when the API misbehaved, platform for the dashboard, billing, or docs, and other for anything else.

rating"good" or "bad"

Your judgment of the output the request ids name. A rating alone is a complete report when request_ids names at least one request.

messagestring

What happened and what you expected, in plain text or Markdown.

up to 10,000 characters
request_idsarray of strings

Up to 20 x-request-id values the report is about, or the connection id of a live session. They link the report to the requests in your logs.

exampleobject

A worked case as text, with the exact input, the output you received, and the output you expected.

Show properties
example.inputstring

The input you sent.

up to 10,000 characters
example.outputstring

The output you received.

up to 10,000 characters
example.expectedstring

The output you expected instead.

up to 10,000 characters

Response#

One feedback report.

idstringRequired

Report id. Pass it as before to list older reports.

kind"model" or "api" or "platform" or "other"Required

What the report is about.

rating"good" or "bad" or nullRequired

The rating sent, or null.

messagestring or nullRequired

The message as stored, or null.

request_idsarray of stringsRequired

The request ids sent, lowercased, deduplicated, and sorted.

exampleobjectRequired

The example as stored; every field is null without one.

Show properties
example.inputstring or nullRequired

The example input, or null.

example.outputstring or nullRequired

The example output, or null.

example.expectedstring or nullRequired

The expected output, or null.

source"api" or "app"Required

api: sent to this endpoint with a key. app: sent from the dashboard.

status"open" or "resolved"Required

A report is open until the team has acted on it, and resolved from then on. A report that carries only a rating feeds quality measures and stays open.

resolutionstring or nullRequired

The team's note on the outcome; null when none was written.

created_atstringRequired

Creation time, ISO 8601.

resolved_atstring or nullRequired

Resolution time, ISO 8601; null while open.

Errors#

400validationThe request body, query, or headers failed validation against the endpoint schema, or broke a rule the endpoint's reference states. A field the schema refused adds two fields to the problem body. path names the first failing field by location and name in dot form, such as body.voice or headers.idempotency-key. A body that could not be read gives the path body alone. reason is one stable code from the validation reasons list.
401unauthorizedThe request carried no API key, or the key is invalid or disabled.
429feedback_limitThe account reached a daily feedback cap: 50 written reports, or 1,000 reports that carry only a rating, in the last 24 hours. Nothing was stored.