---
title: "Revoke Device"
method: POST
path: "/devices/{id}/revoke"
tags: ["devices"]
---

# Revoke Device

`POST /devices/{id}/revoke`

## Request

- Base URL: `https://app.tascan.io/api/v1`
- URL: `https://app.tascan.io/api/v1/devices/{id}/revoke`
- Auth: HTTP bearer

Revoke a device credential immediately — the kill switch for a lost, stolen, or decommissioned device (RFID portal, barcode gun, PLC, camera, robot, tool, sensor). Its next evidence post is refused. Idempotent: revoking an already-revoked device reports already_revoked and mints no second receipt. Requires the device:admin permission (owner-only, needs full, never reachable through OAuth).

## Path parameters

- `id` string, required

## Request body

- object
  - `device_id` string, required: Device ID to revoke
  - `reason` string: Why this device is being revoked (up to 500 characters)

## Response `200`

Success. JSON body: { data: ... } or an error object { error, message }.

## Other responses

- `4XX`: Client error (validation, auth, scope, rate limit).

---

[API](https://skmtc.dev/tascan/apis/tascan-api.md) · [All operations](https://skmtc.dev/tascan/apis/tascan-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tascan/apis/tascan-api/revisions/56fcd2861498?raw)
