Project-scoped
Moderation
Every project carries its own ban list. The moderation endpoints are authenticated by the project API key, and can only read or mutate bans belonging to that project.
Automatic bans
The safety system may decide a request should result in a ban. When it does, the flagged user_id is added to the project's bans array. From that point on, any request from that user_id is rejected at the edge with a blocked response before it reaches the model or upstream provider.
Manual ban management
You can list, add, or remove bans through the REST API. All operations are scoped to the project attached to the API key.
List every ban on the project
GET https://qaves.me/api/v1/moderation/bans
Returns a count and the full list of bans:
{
"count": 1,
"bans": [
{
"user_id": "858197128685551636",
"banned_at": 1778833800,
"reason": "manual_ban"
}
]
}Check a single user
GET https://qaves.me/api/v1/moderation/bans?user_id=858197128685551636
Active ban:
{
"active": true,
"user_id": "858197128685551636",
"ban": {
"user_id": "858197128685551636",
"banned_at": 1778833800,
"reason": "manual_ban"
}
}Not banned:
{
"active": false,
"user_id": "858197128685551636",
"ban": null
}Ban a user
POST https://qaves.me/api/v1/moderation/bans
user_idstringrequiredreasonstringoptionalmanual_ban.{
"ok": true,
"already_banned": false,
"ban": {
"user_id": "858197128685551636",
"banned_at": 1778833800,
"reason": "Repeated policy violations"
}
}Unban a user
DELETE https://qaves.me/api/v1/moderation/bans
Accepts user_id in the body or as a query parameter.
{
"ok": true,
"removed": true,
"ban": {
"user_id": "858197128685551636",
"banned_at": 1778833800,
"reason": "manual_ban"
}
}Scope
Bans are stored on the project row, so each API key only touches its own project. Two projects with the same banned user_id do not share state unless both projects add the same user independently.