CTY Auth Docs Get an API key

API Reference


Bans

Block a device or an address across every application in the workspace.

A ban refuses a device id or an IP address on every application you own, whatever license it presents. Running sessions on the banned value are cut at the moment you create it.

Worth knowing

Workspace tokens only Bans span the whole workspace, so a token locked to one application is refused here with token_scope.
The message is shown as it is Whatever you put in message reaches the user verbatim. Leave it out and they get a neutral refusal that never says what was banned.

#List bans

GET https://api.ctyauth.com/manage/v1/bans

Newest first.

Needs a workspace token. A token locked to one application is refused with token_scope.

Query parameters

typestringoptional
hwid or ip.
qstringoptional
Matches part of the banned value. Up to 128 characters.
per_pageintegeroptional
Between 1 and 200. Defaults to 50.

Can answer

GET /bans
GET /manage/v1/bans HTTP/1.1
Host: api.ctyauth.com
X-Api-Key: ck_your_key
X-Api-Secret: sk_your_secret
Accept: application/json
{
    "bans": [
        {
            "id": 12,
            "type": "ip",
            "value": "203.0.113.9",
            "note": "chargeback",
            "message": "Contact support.",
            "hits": 0,
            "last_hit_at": null,
            "created_at": "2026-09-19T09:00:00+00:00"
        }
    ],
    "page": {
        "current": 1,
        "last": 1,
        "total": 3,
        "per_page": 50
    }
}

#Ban a value

POST https://api.ctyauth.com/manage/v1/bans

Answers with the ban and how many live sessions it ended.

Needs a workspace token. A token locked to one application is refused with token_scope.

Body

valuestringrequired
The device id or IP address. Up to 190 characters.
typestringoptional
hwid or ip. Left out, it is worked out from the value.
notestringoptional
Private reason, only ever seen in your panel. Up to 500 characters.
messagestringoptional
Shown to the banned user. Up to 160 characters.

Can answer

POST /bans
POST /manage/v1/bans HTTP/1.1
Host: api.ctyauth.com
X-Api-Key: ck_your_key
X-Api-Secret: sk_your_secret
Accept: application/json
Content-Type: application/json

{
    "value": "203.0.113.9",
    "note": "chargeback",
    "message": "Contact support."
}
{
    "ban": {
        "id": 12,
        "type": "ip",
        "value": "203.0.113.9",
        "note": "chargeback",
        "message": "Contact support.",
        "hits": 0,
        "last_hit_at": null,
        "created_at": "2026-09-19T09:00:00+00:00"
    },
    "sessions_ended": 2
}

#Lift a ban

DELETE https://api.ctyauth.com/manage/v1/bans/{id}

The value works again immediately.

Needs a workspace token. A token locked to one application is refused with token_scope.

Path parameters

idintegerrequired
The ban id.

Can answer

DELETE /bans/{id}
DELETE /manage/v1/bans/12 HTTP/1.1
Host: api.ctyauth.com
X-Api-Key: ck_your_key
X-Api-Secret: sk_your_secret
Accept: application/json
{
    "deleted": 12
}