# Report bugs & requests

Send a structured bug report or feature request from your code or AI agent with POST /v1/feedback. The Zernio team reads every report.

import { Tab, Tabs } from 'fumadocs-ui/components/tabs';

Report a Zernio bug or a missing capability with `POST /v1/feedback`. The Zernio team reads every submission.

## Send a report

Built for AI agents: report instead of failing silently or guessing a workaround.

<Tabs items={['Node.js', 'Python', 'curl']}>
<Tab value="Node.js">
```typescript
import Zernio from '@zernio/node';

const zernio = new Zernio();

const { data: report } = await zernio.feedback.submitFeedback({
  body: {
    type: 'missing_feature',
    summary: "No way to set a TikTok post's cover frame timestamp",
    details: 'Scheduling TikTok videos, need to pick the cover frame. Nothing in platformSpecificData controls it.',
    endpoint: 'POST /v1/posts',
    agent: { name: 'claude-code', model: 'claude-opus-5-5' },
  },
});
```
</Tab>
<Tab value="Python">
```python
from zernio import Zernio

client = Zernio()

report = client.feedback.submit_feedback(
    type="missing_feature",
    summary="No way to set a TikTok post's cover frame timestamp",
    details="Scheduling TikTok videos, need to pick the cover frame. Nothing in platformSpecificData controls it.",
    endpoint="POST /v1/posts",
    agent={"name": "claude-code", "model": "claude-opus-5-5"},
)
```
</Tab>
<Tab value="curl">
```bash
curl -X POST "https://zernio.com/api/v1/feedback" \
  -H "Authorization: Bearer $ZERNIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "missing_feature",
    "summary": "No way to set a TikTok post'\''s cover frame timestamp",
    "details": "Scheduling TikTok videos, need to pick the cover frame. Nothing in platformSpecificData controls it.",
    "endpoint": "POST /v1/posts",
    "agent": { "name": "claude-code", "model": "claude-opus-5-5" }
  }'
```
</Tab>
</Tabs>

Response (`201`):

```json
{ "id": "66f7f0c2a1b2c3d4e5f60799", "status": "received", "duplicate": false }
```

Quote the `id` to [support](mailto:support@zernio.com).

| Field | Required | Description |
|---|---|---|
| `type` | Yes | `bug`, `missing_feature`, `docs` or `other` |
| `summary` | Yes | One line, up to 200 characters. Also the dedup key. |
| `details` | No | Goal, steps to reproduce, use case. Up to 5,000 characters. |
| `endpoint` | No | e.g. `POST /v1/posts` |
| `requestId` | No | The failing response's `x-request-id` header, to find it in our logs. |
| `expected` | No | What you expected |
| `actual` | No | What happened, e.g. the error message |
| `agent` | No | `{ "name", "model" }` of the sending agent |

`endpoint`, `requestId`, `expected` and `actual` speed up a bug fix. Log every response's `x-request-id` header with its error.

## Tell your agent about it

In your agent's instructions:

```text
If a Zernio API call fails in a way that looks like a Zernio bug, or Zernio
lacks a capability you need, report it once with POST /v1/feedback. Include
the endpoint, the x-request-id response header, what you expected and what
happened. Then continue with the task.
```

[MCP server](/mcp) agents can also call it as a tool.

## How it behaves

- **Retries are safe.** The same `summary` within 24 hours (ignoring case and extra whitespace) returns the original `id` with `duplicate: true` and a `200`.
- **Limit:** 20 reports per user per 24 hours. Group related problems into one report.

## If it fails

| Error | Cause | Fix |
|---|---|---|
| `429` with `code: rate_limited` | Over the 24-hour limit. | Wait; group related problems. |

## Related

- [Error handling](/guides/error-handling): read the error envelope before calling it a bug.
- [Submit feedback](/feedback/submit-feedback): full request and response schema.