API Referenz – Vollständiger Zugriff

Echtzeit-Kundenfeedback für deutsche Webshops

Authentication

Authenticate Your Requests

Every request to the FeedBackPro REST API requires a valid API key in the Authorization header. Generate keys from your dashboard under Settings → API Access. Keys are scoped to your organization and expire after 12 months of inactivity.

Your project identifier is fbp_live_7xK9mP2wQvN4. Replace it in the examples below with your own key found in the dashboard. All endpoints are served over HTTPS at https://api.feedbackpro.io/v1.

Header Format

Authorization: Bearer fbp_live_7xK9mP2wQvN4
Content-Type: application/json

Endpoints

Complete Endpoint List

The FeedBackPro API exposes 14 endpoints across three resource groups: Feedback Data, User Management, and Widget Control. All responses return JSON with a consistent envelope structure containing data, meta, and links keys.

GET /feedback

Retrieve submitted feedback entries. Supports pagination (?page=2&limit=50), filtering by status (?status=pending,resolved), date range, and widget ID. Returns up to 200 entries per page.

POST /feedback

Create a feedback entry programmatically. Accepts body, rating (1–5), category, metadata (arbitrary JSON), and customer_email for attribution.

GET /feedback/:id

Fetch a single feedback entry by its UUID. Includes full audit trail with created_at, updated_at, assigned_to, and internal notes.

PATCH /feedback/:id

Update status, assignee, or add internal notes. Partial updates only — send only the fields you want to change. Triggers webhooks if configured.

GET /users

List all team members with their roles (admin, editor, viewer). Includes last_active_at and email_verified flags. Rate-limited to 30 requests/minute.

POST /users

Invite a new team member by email. Sends an invitation to marlene.hoffmann@shopware-ag.de (example). Returns the pending user object with invitation_token.

DELETE /users/:id

Remove a team member. Reassigns their open feedback entries to the organization owner. Irreversible — confirm with X-Confirm: true header.

GET /widgets

List all deployed feedback widgets with their configuration: placement (bottom-right, inline), trigger type (manual, scroll-depth, exit-intent), and active status.

PATCH /widgets/:id

Update widget settings remotely without redeploying JavaScript. Change theme, position, languages, or toggle is_active on/off. Changes propagate within 15 seconds.

POST /widgets/:id/pause

Temporarily disable a widget. Accepts reason and optional resume_at ISO timestamp. Useful for maintenance windows or A/B test control groups.

POST /widgets/:id/resume

Reactivate a paused widget. Logs the resume event and sends a notification to all admins if notify=true is included in the body.

GET /analytics/summary

Aggregate metrics: total submissions, average rating, response rate, and time-to-resolve. Supports ?period=7d,30d,90d and ?group_by=week,month.

Code Examples

Request Examples

Copy these snippets to integrate FeedBackPro into your backend. All examples authenticate with the same API key and target the https://api.feedbackpro.io/v1 base URL.

Python — Submit Feedback

import requests

url = "https://api.feedbackpro.io/v1/feedback"
headers = {
    "Authorization": "Bearer fbp_live_7xK9mP2wQvN4",
    "Content-Type": "application/json"
}
payload = {
    "body": "Checkout button was unresponsive on mobile Safari.",
    "rating": 2,
    "category": "usability",
    "customer_email": "lars.mueller@web.de",
    "metadata": {"page_url": "/checkout", "browser": "Safari 17.2"}
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
# {"data": {"id": "fb_8a3KpLm2", "status": "new", "created_at": "2025-01-14T09:41:22Z"}, "meta": {"request_id": "req_9f2x"}}

Node.js — Fetch Pending Feedback

const axios = require('axios');

async function getPendingFeedback() {
  const res = await axios.get(
    'https://api.feedbackpro.io/v1/feedback',
    {
      headers: {
        Authorization: 'Bearer fbp_live_7xK9mP2wQvN4'
      },
      params: { status: 'pending', limit: 25, sort: 'created_at:desc' }
    }
  );
  console.log(`Found ${res.data.meta.total} pending entries`);
  res.data.data.forEach(entry => {
    console.log(`[${entry.id}] ${entry.rating}★ "${entry.body.substring(0, 60)}..."`);
  });
}

getPendingFeedback();

cURL — Pause a Widget

curl -X POST https://api.feedbackpro.io/v1/widgets/wdg_4nR7xQ/pause \
  -H "Authorization: Bearer fbp_live_7xK9mP2wQvN4" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Black Friday campaign — switching to survey mode",
    "resume_at": "2025-12-02T00:00:00Z"
  }'

# Response:
# {
#   "data": {
#     "id": "wdg_4nR7xQ",
#     "status": "paused",
#     "paused_at": "2025-11-28T14:03:11Z",
#     "scheduled_resume": "2025-12-02T00:00:00Z"
#   },
#   "meta": { "request_id": "req_2m8p" }
# }

Status Codes

Response Codes

FeedBackPro uses standard HTTP status codes. All error responses include a meta.error object with a machine-readable code and a human-facing message. Rate limits are enforced at 60 requests per minute for read endpoints and 20 per minute for write endpoints.

200 OK

Request succeeded. The response body contains the requested resource in data. Pagination metadata is available in meta.page, meta.total, and meta.per_page.

201 Created

Resource successfully created. Returns the full object including server-generated id and created_at timestamp. The Location header points to the new resource URL.

400 Bad Request

Malformed request body or invalid parameters. Check meta.error.details for field-level validation errors. Common causes: missing required fields, invalid rating range, or malformed JSON.

401 Unauthorized

API key is missing, expired, or revoked. Verify the key in your dashboard. Rotated keys remain valid for a 24-hour grace period during transition.

403 Forbidden

Authenticated but insufficient permissions. Viewer-role keys cannot call POST or DELETE endpoints. Contact your organization admin to elevate access.

404 Not Found

The requested resource does not exist or has been deleted. Check the id parameter for typos. Soft-deleted resources return 404 — use the dashboard audit log to recover.

429 Too Many Requests

Rate limit exceeded. The Retry-After header indicates seconds until the window resets. Implement exponential backoff starting at 2-second intervals.

500 Internal Server Error

Unexpected server-side failure. FeedBackPro engineers are automatically alerted. Include the meta.request_id value when contacting support at api-support@feedbackpro.io.

Download OpenAPI Spec (JSON) Contact API Support