Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Report API

Submit a user report to Coop. When your platform receives a user flag, send it here to create a moderation job in the Review Console.

For the full workflow—what Coop does with a report, routing rules, NCMEC handling—see Reports.

Endpoint

POST /api/v1/report

Authentication: X-API-KEY header. See API Keys & Authentication.

Request

{
  "reporter": {
    "kind": "user",
    "typeId": "reporter-user-type-id",
    "id": "reporter-user-id"
  },
  "reportedAt": "2024-01-15T10:30:00.000Z",
  "reportedForReason": {
    "policyId": "violated-policy-id",
    "reason": "Free-text reason from reporter",
    "csam": false
  },
  "reportedItem": {
    "id": "reported-item-id",
    "data": { "fieldName": "value" },
    "typeId": "item-type-id"
  },
  "reportedItemThread": [
    {
      "id": "thread-message-1",
      "data": { "content": "message content" },
      "typeId": "message-type-id"
    }
  ],
  "reportedItemsInThread": [
    { "id": "specific-reported-message", "typeId": "message-type-id" }
  ],
  "additionalItems": [
    { "id": "additional-context-item", "data": {}, "typeId": "item-type-id" }
  ]
}

Request body fields

FieldTypeRequired?Description
reporterReporterRequiredThe user that submitted the report
reportedAtDatetimeRequiredISO 8601 timestamp of when the item was reported
reportedItemReportedItemRequiredThe item that was reported
reportedItem.data.imagesArrayOptionalArray of URL strings. Triggers automated HMA image hashing.
reportedForReasonReportedForReasonOptionalWhy the item was reported
reportedItemThreadArray<ReportedItem>OptionalOther items in the same thread (e.g. surrounding messages in a DM thread). Coop uses this to show reviewers full context
reportedItemsInThreadArray<ItemIdentifier>OptionalItems within reportedItemThread that were specifically reported (tagged in the review UI)
additionalItemsArray<ReportedItem>OptionalOther content to display alongside the report for context (e.g. the author’s recent posts)

Reporter schema:

FieldTypeRequired?Description
kindStringRequiredType of reporting entity. Currently only "user" is supported
idStringRequiredYour unique identifier for the reporting user
typeIdStringRequiredThe Item Type ID of the reporting user, as configured in the Item Types Dashboard

ReportedItem schema:

FieldTypeRequired?Description
idStringRequiredYour unique identifier for the reported item
typeIdStringRequiredThe Item Type ID for the reported item
dataJSONRequiredThe item payload. Must conform to the schema defined for the item type

reportedItemThread uses the same schema as ReportedItem, but does not strictly enforce required fields to allow retroactive fetching. Include a datetime field on thread items to ensure correct chronological ordering.

ItemIdentifier schema:

FieldTypeRequired?Description
idStringRequiredYour unique identifier for the item
typeIdStringRequiredThe Item Type ID for the item

ReportedForReason schema:

FieldTypeRequired?Description
policyIdStringOptionalThe ID of the policy being violated, if the reporter selected a reason that maps to a policy
reasonStringOptionalFreeform text from the reporter explaining why they submitted the report
csamBooleanOptionalWhen true, Coop routes the job directly to the NCMEC queue instead of the default review queue

Response

Returns a unique Coop-assigned ID for the report on success.

{ "reportId": "report-uuid" }
FieldTypeDescription
reportIdStringA unique ID for this report, assigned by Coop

HTTP statuses:

StatusMeaning
201 CreatedReport received; returns a reportId
400 Bad RequestValidation failure; see Errors
401 or 403Authentication failure

See Errors for the full error response format.