---
title: "End the partnership (a client admin who is not staff of that partner)"
method: POST
path: "/access/partner/end"
tags: ["Access"]
---

# End the partnership (a client admin who is not staff of that partner)

`POST /access/partner/end`

Revokes every partner grant (Core access at once, then the Clerk memberships), ends the link and returns billing to the client's own balance. pendingClerkRemovals counts Clerk removals that failed; calling end again retries them. 403 PARTNER_STAFF_CANNOT_END for the partner's own staff, 403 IMPERSONATED_SESSION for an impersonated session; 404 NO_PARTNERSHIP when there is nothing to end.

## Response `200`

The partnership ended

- PartnershipEndResponse
  - `data` PartnershipEndResult, required
    - `ended` boolean, required
    - `pendingClerkRemovals` integer, required — Clerk removals that failed; call end again to retry them
    - `revokedGrants` integer, required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

## Changes

- **2026-10-06** `461a0ebc7731` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/access/partner/end/post.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greentally/apis/esgai-api/revisions/461a0ebc7731?raw)
