---
search:
  tags:
    - AppShares
    - POST
seo:
  description: >-
    User-gated (chrm_user_* or session); owner only (app:share). Removes…
    Reference for the POST /api/v1/apps/{appId}/shares/revoke endpoint in the
    Charming API.
sidebar:
  label: Revoke a share by grantee
  badge: POST
title: Revoke a share by grantee
type: openapi-operation
---
User-gated (`chrm_user_*` or session); owner only (`app:share`). Removes a pending or accepted grant; idempotent (`removed: false` when nothing was there).

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

**Request body** (`application/json`, required)

- `grantee` (string, required) — Handle or email of the grantee.

Request body example:

```json
{
  "grantee": "string"
}
```

**Responses**

- `200` — Revoked (or nothing to revoke).
- `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.

Response example, 200:

```json
{
  "ok": true,
  "removed": true
}
```

Found a bug or need a feature? [Tell us](/docs/capabilities/feedback) with `submit_feedback` or `POST /app/{id}/feedback`. Your feedback shapes what we build next.
