Authorization: Bearer fbp_live_7xK9mP2wQvN4
Content-Type: application/json
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
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.