API Reference
Resolve Reports
Overview
Close a pending moderation report by id — either delete the reported message (message_deleted) or dismiss the report without deleting content (dismissed).
On success, the API returns the updated report with status, resolution, resolutionNote, and resolvedAt filled in so the Platform queue can move the row out of pending.
When to use this endpoint?
Use Resolve Reports when:
- A moderator confirms a violation and wants the message removed (
message_deleted). - A report is invalid or already handled and should be closed without deleting the message (
dismissed). - You need to attach an optional note explaining the decision for audit / queue history.
- Clearing a pending item after reviewing it from List Reports.
Part of the client Platform Moderation module. Get reportId from List Reports (data.list[]._id). Mute or ban the sender separately via Mute / Ban endpoints.
Request Fields
| Field | Required | Description |
|---|---|---|
| resolution | Required | How to close the report. Allowed values: message_deleted (delete the message; report status becomes resolved) or dismissed (keep the message; report status becomes dismissed). |
| note | Optional | Moderator note stored as resolutionNote on the report. |
{baseUrl}/api/{apiVersion}/client/moderation/reports/:reportId/resolveAuthentication
Required (Bearer token)
Tenant-scoped
Yes (tenant DB — requires x-client-id)
Request Headers
| Header | Value | Description |
|---|---|---|
| Authorization | Bearer <access_token> | Client Access Token with tenant admin privileges (Platform panel). |
| Content-Type | application/json | Required when sending a JSON body. |
| is-tenant | true | Targets the tenant DB ("true", needs x-client-id). |
| x-client-id | {{clientId}} | Tenant (client) id. Required when is-tenant=true. |
Path Parameters
| Parameter | Example | Description |
|---|---|---|
| reportId | 6a589bb7cfa34ab66e35b2b3 | The report's _id from List Reports. |
Request Payload
Delete the message (message_deleted)
Use when the report is valid and the content should be removed. Report status becomes resolved.
{
"resolution": "message_deleted",
"note": "Violates content policy"
}Dismiss the report (dismissed)
Use when no action on the message is needed. Report status becomes dismissed.
{
"resolution": "dismissed",
"note": "Not a policy violation after review"
}Success Response (HTTP 200 OK)
Returns the updated report document. In this example resolution is message_deleted, so status is resolved and resolutionNote mirrors the request note. Nested list enrichments (message, messageSender) are not required on this response.
{
"success": true,
"message": "Report resolved successfully",
"data": {
"_id": "6a589bb7cfa34ab66e35b2b3",
"messageId": "6a589b97d379191dcf5fadbb",
"conversationId": "6a589b96cfa34ab66e35b2ac",
"reportedBy": "6a589b96cfa34ab66e35b2aa",
"reason": "Offensive language",
"status": "resolved",
"resolution": "message_deleted",
"resolutionNote": "Violates content policy",
"resolvedAt": "2026-07-16T08:52:07.173Z",
"createdAt": "2026-07-16T08:52:07.003Z",
"updatedAt": "2026-07-16T08:52:07.173Z"
},
"error": null
}Common Errors
Resolve fails when auth is invalid, the report id is missing, or the body is invalid.
HTTP 401 Unauthorized — No token
{
"success": false,
"message": "No token, authorization denied",
"data": null,
"error": "Unauthorized"
}HTTP 403 Forbidden — Tenant admin required
{
"success": false,
"message": "Access denied: tenant admin privileges required",
"data": null,
"error": null
}HTTP 404 Not Found — Report missing
{
"success": false,
"message": "Entity not found",
"data": null,
"error": "Entity not found"
}| Code | Reason |
|---|---|
| 400 Bad Request | Missing resolution, or value is not message_deleted / dismissed. |
| 401 Unauthorized | Access Token is missing, invalid, or expired. |
| 403 Forbidden | Tenant admin privileges required for Platform Moderation. |
| 404 Not Found | No report exists for the given reportId. |
| 500 Internal Server Error | An unexpected error occurred while resolving the report. |
Best Practices
- Only resolve reports that are still
pendingin the queue UI. - Prefer
message_deletedfor clear policy violations; usedismissedwhen content should remain visible. - Always send a short
noteso audit history explains the decision. - After resolve, refetch List Reports so the inbox status filters update.
- Mute or ban the sender as a separate step when the violation warrants account action.
Report closed
Update the queue from the returned status / resolution, then use Mute/Unmute User or Ban/Unban User if the sender needs further action.