# Support and feedback

How to get help with Pozy, what to include so we can answer fast, how to look up a failed request yourself, and how to report bugs and missing features from code.

Write to **support@pozy.ai** or use [Support](https://pozy.ai/dashboard/support) in the dashboard.

## Include these and we can answer on the first reply

| What | Where to find it |
| --- | --- |
| The `X-Request-Id` of a failed call | The `x-request-id` response header. It is on every response, success or failure. |
| The endpoint and method | For example `POST /v1/posts`. |
| The ids involved | `postId`, `accountId`, `profileId`, `webhookId`, `conversationId`. |
| What you expected and what happened | The full error body, including `code`, `details` and any `platformError`. |
| When | A timestamp with timezone, especially for webhooks and scheduled posts. |

Never send an API key, a webhook secret or an access token. We never need them, and a key sent by email should be treated as leaked: delete it and create a new one.

## Ask the support assistant

`POST /v1/support/runs` asks a question about your workspace from code or the dashboard's Support page. It answers `202` with a `runId`; poll `GET /v1/support/runs/{runId}` until `status` is `completed`, `needs_human` or `failed`.

- **With a payment method on file**, the support assistant answers, and it is billed per answered question ([pricing](https://pozy.ai/pricing)). Questions it cannot answer go to the Pozy team (`needs_human`), who reply by email.
- **Without a payment method**, questions go straight to the Pozy team, who reply by email. A workspace can send 5 a day this way. The sixth answers `429` with `code: "support_ticket_limit"`; for anything urgent, write to support@pozy.ai.

## Look it up yourself first

Most questions about "what happened to this request" are answered by the activity logs, in [Logs](https://pozy.ai/dashboard/logs) or from the API:

```bash cURL
curl "https://api.pozy.ai/v1/logs?type=api_request&requestId=req_P3sK8vN1qL7xT2mR9cZa" \
  -H "Authorization: Bearer $POZY_API_KEY"
```
```ts Node
const res = await fetch("https://api.pozy.ai/v1/logs?type=api_request&requestId=req_P3sK8vN1qL7xT2mR9cZa", {
  headers: { Authorization: `Bearer ${process.env.POZY_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data.error);
console.log(data.logs[0]);
```
```python Python
import os, requests

resp = requests.get(
    "https://api.pozy.ai/v1/logs",
    headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
    params={"type": "api_request", "requestId": "req_P3sK8vN1qL7xT2mR9cZa"},
)
print(resp.json()["logs"])
```

`type` narrows the log to `publishing`, `connections`, `webhooks`, `messaging`, `workflow_event` or `api_request`. Filter further by `status`, `platform`, `accountId`, `profileId`, `apiKeyId`, `statusCode` or a date range. Logs go back 90 days.

Other quick checks:

- **A post did not go out.** `GET /v1/posts/{postId}` and read `errorMessage` and `errorCategory` on the failed target ([errors](https://pozy.ai/docs/getting-started/errors#publishing-errors-live-on-the-post)).
- **An account stopped working.** `GET /v1/accounts/{accountId}/health` says whether the token is valid and what to do ([account health](https://pozy.ai/docs/connect/account-health)).
- **A webhook did not arrive.** `GET /v1/webhooks/logs` shows each attempt with the status code and body your server returned ([testing webhooks](https://pozy.ai/docs/webhooks/testing)).
- **A key is refused.** `GET /v1/auth/verify` shows what the credential is and what it can reach ([authentication](https://pozy.ai/docs/getting-started/authentication)).

## Report bugs and missing features from code

`POST /v1/feedback` files a report straight from your integration or your AI agent, with the request id attached. Use it when the API behaves differently from these docs, an endpoint you need is missing, or a page here is wrong.

```bash cURL
curl -X POST https://api.pozy.ai/v1/feedback \
  -H "Authorization: Bearer $POZY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "bug",
    "summary": "Scheduled carousel published with images in the wrong order",
    "endpoint": "POST /v1/posts",
    "requestId": "req_P3sK8vN1qL7xT2mR9cZa",
    "expected": "Images in the order sent in mediaItems",
    "actual": "Second and third image swapped on Instagram"
  }'
```
```ts Node
const res = await fetch("https://api.pozy.ai/v1/feedback", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.POZY_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    type: "bug",
    summary: "Scheduled carousel published with images in the wrong order",
    endpoint: "POST /v1/posts",
    requestId: "req_P3sK8vN1qL7xT2mR9cZa",
    expected: "Images in the order sent in mediaItems",
    actual: "Second and third image swapped on Instagram",
  }),
});
if (!res.ok) throw new Error((await res.json()).error);
```
```python Python
requests.post(
    "https://api.pozy.ai/v1/feedback",
    headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
    json={
        "type": "bug",
        "summary": "Scheduled carousel published with images in the wrong order",
        "endpoint": "POST /v1/posts",
        "requestId": "req_P3sK8vN1qL7xT2mR9cZa",
        "expected": "Images in the order sent in mediaItems",
        "actual": "Second and third image swapped on Instagram",
    },
)
```

| Field | Required | Notes |
| --- | --- | --- |
| `type` | Yes | `bug`, `missing_feature`, `docs` or `other`. |
| `summary` | Yes | One line, up to 200 characters. |
| `details` | No | Up to 5,000 characters. |
| `endpoint` | No | Method and path, up to 300 characters. |
| `requestId` | No | The `X-Request-Id` of the call in question. |
| `expected`, `actual` | No | Up to 2,000 characters each. |
| `agent` | No | `{ "name", "model" }` when an AI agent files the report, so we can reproduce its behaviour. |

The response is `201` with the report `id`. The same summary sent again within 24 hours returns the first report with `duplicate: true` instead of filing a second one, so an agent that retries does not flood the queue. A workspace can file up to 20 reports a day.

## Changes and incidents

Changes to the API are posted in the [changelog](https://pozy.ai/docs/changelog), and `GET /v1/changelog` serves the same feed to code ([versioning](https://pozy.ai/docs/getting-started/versioning)). If many requests fail at once with `5xx`, retry with backoff and contact support@pozy.ai with a few request ids.

## Endpoints

| Endpoint | What it does |
| --- | --- |
| [`POST /v1/feedback`](https://pozy.ai/docs/api/submitFeedback) | Submit feedback |
| [`GET /v1/logs`](https://pozy.ai/docs/api/listLogs) | List activity logs |
