init_npc./api| Header | Type | Required | Description |
|---|---|---|---|
api_key | string | Yes | 32-character API key |
org_id | string | Yes | 6-character Organization ID |
401:{
"message": "Invalid API KEY or ORG ID"
}| Method | Path | Description |
|---|---|---|
| POST | /api/device/block | Block a device or character |
| POST | /api/device/unblock | Unblock a device or character |
| GET | /api/device/blocklist | Query block list |
| GET | /api/device/block/check | Check individual block status |
init_npc.POST /api/device/block{
"type": "device",
"identifier": "ABC123",
"reason": "Policy violation"
}| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | "device" or "npc" |
| identifier | string | Yes | Device ID or character ID (npcid) |
| reason | string | No | Block reason |
When typeis"npc", theidentifiermust belong to the current organization (i.e., the first 6 characters ofidentifiermust matchorg_id), otherwise403is returned.
{
"ok": true,
"block_key": "device:ABC123"
}{
"ok": false,
"error": "Missing required field: type"
}{
"ok": false,
"error": "Cannot block NPC belonging to another org"
}POST /api/device/unblock{
"type": "device",
"identifier": "ABC123"
}| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | "device" or "npc" |
| identifier | string | Yes | Device ID or character ID |
{
"ok": true
}{
"ok": false,
"error": "Block record not found"
}{
"ok": false,
"error": "Cannot unblock record owned by another org"
}GET /api/device/blocklist| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | No | Filter by type: "device" or "npc". If omitted, returns all records |
{
"ok": true,
"items": [
{
"block_key": "device:ABC123",
"type": "device",
"identifier": "ABC123",
"created_at": "2026-04-10T15:30:00Z",
"created_by": "WOQSOC",
"reason": "Policy violation"
},
{
"block_key": "npc:WOQSOC7a8b9c1d2e3f4a5b6c7d8e9f0a1b2c3d",
"type": "npc",
"identifier": "WOQSOC7a8b9c1d2e3f4a5b6c7d8e9f0a1b2c3d",
"created_at": "2026-04-10T16:00:00Z",
"created_by": "WOQSOC",
"reason": "Character deactivated"
}
]
}GET /api/device/block/check| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | "device" or "npc" |
| identifier | string | Yes | Device ID or character ID |
{
"ok": true,
"blocked": true,
"detail": {
"reason": "Policy violation",
"created_at": "2026-04-10T15:30:00Z",
"created_by": "WOQSOC"
}
}{
"ok": true,
"blocked": false
}init_npc API has a new optional parameter device_id and now performs a block check before initialization.| Parameter | Type | Required | Description |
|---|---|---|---|
| npcid | string | Yes | Character ID |
| lang | string | No | Language setting |
| device_id | string | No | Device ID (newly added; when omitted, device-level block check is skipped) |
device_id is provided, check whether the device is blockednpcid is blockedinit_npc returns (HTTP 200):{
"status": "blocked",
"reason": "Device has been blocked"
}status field value is "blocked".{
"message": "NPC xxx initialized successfully",
"status": "success",
"code": 200
}| HTTP Status Code | Description |
|---|---|
| 200 | Request successful |
| 400 | Invalid parameters (missing type or identifier, invalid type value) |
| 401 | Invalid api_key or org_id |
| 403 | Forbidden (attempting to operate on NPC of another organization) |
| 404 | Not found (block record does not exist during unblock) |
| 500 | Server error |