Mark a conversation as read
curl --request POST \
--url https://workspace.passionfroot.me/api/v1/conversations/{conversationId}/read \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://workspace.passionfroot.me/api/v1/conversations/{conversationId}/read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://workspace.passionfroot.me/api/v1/conversations/{conversationId}/read"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"data": {
"id": "<string>",
"creatorId": "<string>",
"isUnread": true,
"isArchived": true,
"isBlocked": true,
"lastActivityAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"creator": {
"id": "<string>",
"displayName": "<string>",
"country": "<string>",
"note": "<string>",
"labels": [
{
"id": "<string>",
"name": "<string>",
"color": "<string>",
"position": "<string>"
}
],
"channels": [
{
"id": "<string>",
"title": "<string>",
"platformType": "<string>",
"url": "<string>",
"metrics": {
"reach": 123,
"views": 123,
"engagement": 123,
"engagementRate": 123,
"metricsUpdatedAt": "2023-11-07T05:31:56Z"
}
}
]
}
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Invalid or expired API key"
}
}{
"error": {
"code": "MISSING_SCOPE",
"message": "API key missing required scope: write:conversations"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Conversation not found"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "This API key is over its rate limit. Wait for Retry-After before sending more.",
"details": {
"limit": 2,
"windowSeconds": 1
}
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "API key verification is temporarily unavailable, retry shortly"
}
}Conversations
Mark a conversation as read
Clears the organization’s unread state without changing lastActivityAt. The operation is naturally idempotent.
POST
/
conversations
/
{conversationId}
/
read
Mark a conversation as read
curl --request POST \
--url https://workspace.passionfroot.me/api/v1/conversations/{conversationId}/read \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://workspace.passionfroot.me/api/v1/conversations/{conversationId}/read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://workspace.passionfroot.me/api/v1/conversations/{conversationId}/read"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"data": {
"id": "<string>",
"creatorId": "<string>",
"isUnread": true,
"isArchived": true,
"isBlocked": true,
"lastActivityAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"creator": {
"id": "<string>",
"displayName": "<string>",
"country": "<string>",
"note": "<string>",
"labels": [
{
"id": "<string>",
"name": "<string>",
"color": "<string>",
"position": "<string>"
}
],
"channels": [
{
"id": "<string>",
"title": "<string>",
"platformType": "<string>",
"url": "<string>",
"metrics": {
"reach": 123,
"views": 123,
"engagement": 123,
"engagementRate": 123,
"metricsUpdatedAt": "2023-11-07T05:31:56Z"
}
}
]
}
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Invalid or expired API key"
}
}{
"error": {
"code": "MISSING_SCOPE",
"message": "API key missing required scope: write:conversations"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Conversation not found"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "This API key is over its rate limit. Wait for Retry-After before sending more.",
"details": {
"limit": 2,
"windowSeconds": 1
}
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "API key verification is temporarily unavailable, retry shortly"
}
}
