REST API

One endpoint for taking feedback in. Authentication through the public project key, which may only write.

Request

POST /api/v1/feedback Content-Type: application/json X-Tellstack-Key: ts_live_… { "message": "PDF export gets stuck on large files", "category": "bug", "email": "anna@example.com", "userId": "usr_123", "metadata": { "url": "https://app.example.com/export", "appVersion": "1.4.2", "platform": "ios", "device": "iPhone 15", "locale": "de-AT", "custom": { "plan": "pro" } } }

The key may also come as Authorization: Bearer … or as the query parameter ?key=.

Fields

message
Required. 2 to 5,000 characters. Stored unchanged.
category
Optional. bug, idea, question or other.
email
Optional. Makes a reply by email possible.
userId
Optional. Your own user id, max. 80 characters.
metadata
Optional. url, appVersion, platform, device, locale and custom.

Responses

HTTP/1.1 201 Created { "id": "…", "status": "new", "createdAt": "2026-08-19T09:12:44.101Z" }HTTP/1.1 400 Bad Request { "error": { "code": "validation_error", "message": "Input is invalid.", "details": { "issues": [{ "path": "message", "message": "Message is too short." }] } } }
201
Accepted.
400
validation_error — a field is missing or not allowed.
401
unauthorized — key missing or invalid.
403
forbidden — monthly quota used up or workspace blocked.
413
payload_too_large — more than 64 KB.
429
rate_limited — more than 120 requests per minute per key.

Hosted forms

GET /api/v1/forms/:slug Configuration of the form POST /api/v1/forms/:slug/submit Submission

These endpoints need no key — the slug is enough. They are meant for your own interfaces that want the same configuration as the hosted page.

What the key cannot do

Read. There is no way to fetch feedback, see projects or change settings with a project key. Everything that reads hangs off a signed-in session and is limited to the workspace.

Get a key