API Documentation
Integrate UsersLoop into your workflow with our REST API. Manage feedback, boards, roadmaps, updates, and helpdesk content programmatically.
Authentication
All API requests require a valid API key sent as a Bearer token in the Authorization header.
You can create and manage your API key from your product's Settings > API tab.
curl -X GET https://usersloop.com/api/v2/feedback \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
Base URL
All API endpoints are relative to:
https://usersloop.com/api/v2
Rate Limiting
API requests are rate limited to 60 requests per minute per API key. When you exceed the limit, the API returns a 429 Too Many Requests response.
Pagination
List endpoints return paginated results. Use the page and per_page query parameters to control pagination.
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 25 | Items per page (max 100) |
Paginated responses include current_page, last_page, per_page, total, and navigation links.
Error Handling
The API uses standard HTTP status codes:
| Code | Meaning |
|---|---|
200 | Success |
201 | Created |
204 | Deleted (no content) |
401 | Invalid or missing API key |
404 | Resource not found |
422 | Validation error |
429 | Rate limit exceeded |
Error responses return a JSON body with an error or message field.
Boards
Boards are used to organise feedback into categories or columns.
/boards
Retrieve all boards for your product.
{
"data": [
{
"id": 1,
"name": "Feature Requests",
"description": "Ideas for new features",
"color": "#4a6cf7",
"visibility": "public",
"open_feedbacks_count": 12,
"created_at": "2026-01-15T10:30:00.000000Z",
"updated_at": "2026-01-15T10:30:00.000000Z"
}
]
}
/boards/{id}
Retrieve a single board by ID.
/boards
Create a new board.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Board name (max 255) |
description | string | No | Board description |
color | string | No | Hex colour (e.g. #4a6cf7) |
visibility | string | No | public or private |
/boards/{id}
Update an existing board. All fields are optional.
/boards/{id}
Delete a board. Returns 204 No Content.
Feedback
Customer feedback items submitted via your product.
/feedback
List feedback with optional filtering. Returns paginated results.
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: new, discussing, planned, in_progress, completed, not_planned |
board_id | integer | Filter by board ID |
per_page | integer | Items per page (default 25, max 100) |
GET /api/v2/feedback?status=new&board_id=1&per_page=10
/feedback/{id}
Retrieve a single feedback item with its boards, tags, account, and account user.
/feedback
Create a new feedback item.
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Feedback title (max 255) |
details | string | No | Detailed description |
status | string | No | Status (defaults to new) |
board_ids | array | No | Array of board IDs to attach |
tag_ids | array | No | Array of tag IDs to attach |
account_id | integer | No | Associated account ID |
account_user_id | integer | No | Associated account user ID |
difficulty | integer | No | Difficulty rating (1-5) |
impact | integer | No | Impact rating (1-5) |
curl -X POST https://usersloop.com/api/v2/feedback \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Add dark mode",
"details": "Users have been requesting a dark mode option.",
"status": "new",
"board_ids": [1],
"impact": 4
}'
/feedback/{id}
Update an existing feedback item. All fields are optional.
/feedback/{id}
Delete a feedback item. Returns 204 No Content.
Roadmap
Roadmap items represent planned features or milestones for your product.
/roadmap
List roadmap items with optional filtering. Returns paginated results.
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: planned, progress, complete |
/roadmap/{id}
Retrieve a single roadmap item with its tags and linked feedback.
/roadmap
Create a new roadmap item.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Roadmap item name (max 255) |
details | string | No | Description |
status | string | No | Status (defaults to planned) |
tag_ids | array | No | Array of tag IDs |
feedback_ids | array | No | Array of feedback IDs to link |
difficulty | integer | No | Difficulty rating (1-5) |
impact | integer | No | Impact rating (1-5) |
/roadmap/{id}
Update an existing roadmap item. All fields are optional.
/roadmap/{id}
Delete a roadmap item. Returns 204 No Content.
Updates
Product updates and release announcements.
/updates
List updates with optional filtering. Returns paginated results.
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: draft, scheduled, published |
/updates/{id}
Retrieve a single update with its tags, linked feedback, and roadmap items.
/updates
Create a new update.
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Update title (max 255) |
details | string | No | Update content |
status | string | No | Status (defaults to draft) |
schedule_at | datetime | No | Schedule date (for scheduled status) |
notify_everyone | boolean | No | Send notification to all users |
tag_ids | array | No | Array of tag IDs |
feedback_ids | array | No | Array of feedback IDs this update addresses |
roadmap_ids | array | No | Array of roadmap item IDs included |
/updates/{id}
Update an existing update. All fields are optional.
/updates/{id}
Delete an update. Returns 204 No Content.
Helpdesk Categories
Organise helpdesk articles into categories.
/helpdesk/categories
List all helpdesk categories with article counts.
{
"data": [
{
"id": 1,
"name": "Getting Started",
"slug": "getting-started",
"description": "Onboarding guides",
"position": 1,
"is_public": true,
"articles_count": 5,
"created_at": "2026-01-15T10:30:00.000000Z"
}
]
}
/helpdesk/categories/{id}
Retrieve a single category.
/helpdesk/categories
Create a new helpdesk category.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Category name (max 255) |
description | string | No | Category description |
is_public | boolean | No | Whether category is publicly visible |
position | integer | No | Sort order position |
/helpdesk/categories/{id}
Update an existing category.
/helpdesk/categories/{id}
Delete a category. Returns 204 No Content.
Helpdesk Articles
Knowledge base articles for your helpdesk.
/helpdesk/articles
List articles with optional filtering. Returns paginated results.
| Parameter | Type | Description |
|---|---|---|
category_id | integer | Filter by category ID |
status | string | Filter by status: draft, published |
/helpdesk/articles/{id}
Retrieve a single article with its category and tags.
/helpdesk/articles
Create a new helpdesk article.
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Article title (max 255) |
category_id | integer | Yes | Category ID |
summary | string | No | Short summary |
content_json | string | No | Article content as JSON |
status | string | No | Status (defaults to draft) |
is_pinned | boolean | No | Pin article to top |
tag_ids | array | No | Array of tag IDs |
/helpdesk/articles/{id}
Update an existing article. All fields are optional.
/helpdesk/articles/{id}
Delete an article. Returns 204 No Content.