---
title: "Revoke the caller-owned project binding for one env so the next activate call succeeds (GTM-444)."
method: POST
path: "/v1/projects/{id}/rebind-binding"
tags: ["Projects"]
---

# Revoke the caller-owned project binding for one env so the next activate call succeeds (GTM-444).

`POST /v1/projects/{id}/rebind-binding`

## Path parameters

- `id` string, required

## Request body

- ProjectRebindBindingDto
  - `env` 'production' | 'staging' | 'uat' | 'dev', required
  - `reason` string, required

## Response `200`

- ProjectBindingDto
  - `id` string, uuid, required
  - `projectId` string, uuid, required
  - `instanceId` string, uuid, required
  - `env` 'production' | 'staging' | 'uat' | 'dev', required — Deployment env this seat is scoped to. Prod is singleton per project; non-prod envs (dev / uat / staging) allow N concurrent ACTIVE seats so one project JWT can back multiple sandboxes, each with its own instanceId.
  - `status` 'ACTIVE' | 'SPLIT_LOCKED' | 'REVOKED', required
  - `boundAt` string, date-time, required
  - `lastSeenAt` string, date-time, required
  - `currentTokenIssuedAt` string, date-time, required
  - `splitDetectedAt` string, date-time, nullable, required — First time this row was flipped to SPLIT_LOCKED. Present only on split-locked seats.

## Other responses

- `400` — Validation failed
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `409` — Conflict
- `500` — Internal server error

---

[API](https://skmtc.net/vendure/apis/vendure-io-api-public.md) · [All operations](https://skmtc.net/vendure/apis/vendure-io-api-public/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vendure/vendure-io-api-public/revisions/5fc4757128af/schema)
