---
title: "Revoke a share by grantee"
method: POST
path: "/api/v1/apps/{appId}/shares/revoke"
tags: ["AppShares"]
---

# Revoke a share by grantee

`POST /api/v1/apps/{appId}/shares/revoke`

## Request

- Base URL: `https://charm.ing`
- URL: `https://charm.ing/api/v1/apps/{appId}/shares/revoke`
- Auth: HTTP bearer

User-gated (`chrm_user_*` or session); owner only (`app:share`). Removes a pending or accepted grant; idempotent (`removed: false` when nothing was there).

## Path parameters

- `appId` string, uuid, required

## Request body

- object
  - `grantee` string, required: Handle or email of the grantee.

## Response `200`

Revoked (or nothing to revoke).

- ShareRemovedResponse
  - `ok` true, required
  - `removed` boolean, required

## Other responses

- `400`: Invalid body or app id.
- `401`: Sign-in required.
- `403`: Only the owner can manage shares.
- `404`: App not found, or no account for the grantee handle.
- `429`: Share-lookup rate limit.

---

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