import requests
url = "https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/signals/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/signals/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/signals/ \
--header 'Authorization: Bearer <token>'{
"count": 123,
"next": "<string>",
"previous": "<string>",
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"given_by": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "[email protected]"
},
"status": "to_review",
"feedback": "<string>",
"context": {
"additional_details": "<string>"
},
"is_positive": true,
"user_message": "<string>",
"conversation_title": "<string>",
"suggested_action_type": "<string>",
"suggested_action_data": {},
"reviewed_at": "2023-11-07T05:31:56Z",
"reviewed_by": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "[email protected]"
},
"query_id": 123,
"source": "<string>"
}
]
}{
"error": "Authentication credentials were not provided."
}{
"error": "You do not have permission to perform this action."
}{
"error": "Not found."
}List signals
Retrieve all signals for a project with optional filtering.
Access Control:
- Admins see all signals in the project
- Regular users see only signals they submitted
Sorting:
- Results are ordered by most recently updated first (
updated_atfield)
Note: For grouped views by conversation, use /projects/{project_id}/signals/grouped_by_conversation/
import requests
url = "https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/signals/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/signals/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://eu.app.clarifeye.ai/api/v1/projects/{project_id}/signals/ \
--header 'Authorization: Bearer <token>'{
"count": 123,
"next": "<string>",
"previous": "<string>",
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"given_by": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "[email protected]"
},
"status": "to_review",
"feedback": "<string>",
"context": {
"additional_details": "<string>"
},
"is_positive": true,
"user_message": "<string>",
"conversation_title": "<string>",
"suggested_action_type": "<string>",
"suggested_action_data": {},
"reviewed_at": "2023-11-07T05:31:56Z",
"reviewed_by": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "[email protected]"
},
"query_id": 123,
"source": "<string>"
}
]
}{
"error": "Authentication credentials were not provided."
}{
"error": "You do not have permission to perform this action."
}{
"error": "Not found."
}Authorizations
Use Authorization: Bearer <token>. The token is either a user token / OAuth access
token, or a service-account API key (cfk_...). A key is valid on every endpoint and
acts as its service account, an organization member with per-store permissions.
Refused keys answer 403 with Invalid API key., API key revoked.,
API key expired. or API key disabled..
Path Parameters
UUID of the project
Query Parameters
Filter by signal status
to_review: Signal pending review (default). Setting this on a closed signal reopens it and clearsreviewed_at/reviewed_by.reviewed: Signal has been revieweddismissed: Signal closed without action (won't fix, or archived praise)
to_review, reviewed, dismissed Which sentiment bucket to return. actionable means negative or neutral —
everything that is work to review. A signal submitted without is_positive is
neutral, so filtering on is_positive=false alone hides it.
actionable, positive, all Filter by raw sentiment; overrides sentiment when both are given. Prefer sentiment.
Search in signal text or user email (case-insensitive)
Maximum number of results per page
1 <= x <= 1000Number of results to skip for pagination
x >= 0