All developer docs

EveryCord Developers

Moderation for partners

You can see the moderation that concerns your app: reports about your users and your streams, who is suspended or banned, the chat bans in your users' channels, and every action EveryCord's moderators took. It is read only and comes with every tier, in the Partner API and on the Moderation page of the partner dashboard.

Early access. Moderation visibility turns on with the Partner API. Write to services@symaro.com with questions.

Who decides

EveryCord's moderators review every report and decide what happens: remove the content, suspend the account for a while, ban it, or dismiss the report. You see the outcome. You cannot resolve a report or lift a restriction yourself; to ask for a review, use "Ask EveryCord to review" in the dashboard or write to services@symaro.com with the report or user ID. You can always delete one of your users with DELETE /v1/partner/users/:externalUserId.

What you see. Your users are the accounts created through your apps or linked by your backend. Your content is your users' accounts, clips, comments and messages, and the streams started from your apps with their chat. A test key sees test-mode data only.

All four routes take your secret key, list newest first, and page with cursor and limit (1 to 50).

What you never see. Who made a report, the reporter's own words, and the copy of the reported content EveryCord keeps as evidence. This protects the people who report, and that copy can hold other people's content.

Reports

GET /v1/partner/moderation/reports?status=open|resolved|dismissed&targetType=&cursor=&limit=: reports about one of your users, or about one of your streams or a chat message in it.

{
  "items": [
    {
      "id": "rp...",
      "targetType": "message",
      "targetId": "cm...",
      "subject": { "userId": "u...", "externalUserId": "acct:42", "username": "maker42" },
      "sessionId": "lv...",
      "reason": "harassment",
      "status": "resolved",
      "outcome": "content_removed",
      "createdAt": "2026-10-22T18:00:00.000Z",
      "resolvedAt": "2026-10-22T18:20:00.000Z"
    }
  ],
  "nextCursor": null
}
FieldValues
targetTypeuser, clip, comment, message (a chat message), live (a stream), dm (a direct message)
reasonspam, harassment, hate, sexual, violence, self_harm, impersonation, other
statusopen, resolved, dismissed
outcomenone, content_removed, suspended, banned

subject is the reported account (its username is null once the account is deleted). sessionId is set for live and message reports. outcome is what EveryCord did when it closed the report; a dismissed report is none.

Suspended and banned users

GET /v1/partner/moderation/restrictions?status=suspended|banned|all&cursor=:

{
  "items": [
    { "userId": "u...", "externalUserId": "acct:42", "username": "maker42", "status": "suspended",
      "until": "2026-10-29T18:00:00.000Z", "reason": "harassment", "at": "2026-10-22T18:20:00.000Z" }
  ],
  "nextCursor": null
}

Your users who are suspended (until a time in the future) or banned now. until is when a suspension ends (null for a ban). reason is the category of the report the restriction came from, or null when it did not come from a report (moderators' own notes stay private). A restricted account cannot use EveryCord features in your app until the restriction ends; the SDK signs it out with a sentence to show.

Moderation actions

GET /v1/partner/moderation/actions?from=YYYY-MM-DD&to=YYYY-MM-DD&cursor=: what EveryCord's moderators did to your users and your content, the last 30 days by default and at most 92 days per request. action is suspend, ban, lift, suspension_ended, content_removed or report_dismissed; reason is the report's category when the action was taken on a report. Moderators' names and private notes are not included.

{
  "items": [
    { "id": "ma...", "action": "content_removed", "targetType": "clip", "targetId": "cl...", "userId": "u...",
      "externalUserId": "acct:42", "reason": "sexual", "at": "2026-10-22T18:20:00.000Z" }
  ],
  "nextCursor": null
}

Chat bans

Hosts and their moderators ban and time out people in their own chats (Chat and moderation). GET /v1/partner/moderation/chat-bans?hostExternalUserId=&cursor= lists the bans and timeouts in force in your users' channels:

{
  "items": [
    { "hostUserId": "u...", "hostExternalUserId": "acct:42", "userId": "u...", "externalUserId": null,
      "username": "troll99", "until": null, "bannedBy": "moderator", "createdAt": "2026-10-22T18:05:00.000Z" }
  ],
  "nextCursor": null
}

until is null for a permanent ban, or when a timeout ends. bannedBy is host or moderator.

Webhooks

TypeWhendata
report.createdsomeone reports one of your users or something in your streamsthe report item above
report.resolvedEveryCord resolves or dismisses that reportthe report item above
user.restrictedEveryCord suspends or bans one of your usersuserId, externalUserId, status, until, at
user.unrestricteda suspension is lifted or ends, or a ban is lifteduserId, externalUserId, previousStatus, at

Moderation events are found by a background pass, so they arrive within about 15 seconds. See Webhooks for signatures and retries.

The dashboard's Moderation page

At everycord.net/partners/dashboard/moderation, for live or test mode: Reports (open, resolved, dismissed), Restricted users (suspended and banned, and until when), Chat bans and the Actions log, 50 rows each, each exportable as CSV (up to 1,000 rows). Every row has "Ask EveryCord to review".

The EveryCord SDKs and the Partner API are in early access. For access, keys and questions, write to services@symaro.com.

These docs are also on GitHub with the install files: moderation.md in SymaroTeam/everycord-sdk.

Updated October 22, 2026.