---
title: "Revoke a standing mandate (#37's one-tap kill-switch)"
method: POST
path: "/approvals/mine/mandates/{mandateId}/revoke"
tags: ["approvals"]
---

# Revoke a standing mandate (#37's one-tap kill-switch)

`POST /approvals/mine/mandates/{mandateId}/revoke`

## Request

- Base URL: `https://api.bubblio.dev`
- URL: `https://api.bubblio.dev/approvals/mine/mandates/{mandateId}/revoke`
- Auth: HTTP bearer

Winner-only active → revoked. Immediate at the door: the next quote skips the dead
mandate, and a confirm on a quote it covered re-reads it LIVE pre-flight and
refuses without consuming. Idempotent for already-dead mandates.

## Path parameters

- `mandateId` string, required

## Response `200`

Revoked (or already in a terminal state, echoed with `already: true`).

- object
  - `ok` boolean
  - `status` string
  - `already` boolean

## Other responses

- `401`: No consent session.
- `404`: Uniform miss.

---

[API](https://skmtc.dev/bubblio/apis/bubblio-agent-door-api.md) · [All operations](https://skmtc.dev/bubblio/apis/bubblio-agent-door-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bubblio/apis/bubblio-agent-door-api/revisions/d858aff9c01d?raw)
