---
title: "Release this merchant's domain binding (owner key only)"
method: POST
path: "/v1/merchants/{id}/release"
tags: ["Merchant Setup"]
---

# Release this merchant's domain binding (owner key only)

`POST /v1/merchants/{id}/release`

## Request

- Base URL: `https://api.insumermodel.com`
- URL: `https://api.insumermodel.com/v1/merchants/{id}/release`
- Auth: API key in header `X-API-Key`

Marks the merchant's verified-domain binding as cancelled, which starts the 30-day lapse window after which another party may verify and take ownership of the domain. Idempotent and best-effort: always returns 200 with `released` true or false plus a reason.

## Path parameters

- `id` string, required

## Response `200`

Release outcome

- object
  - `ok` boolean
  - `data` object
    - `released` boolean
    - `domain` string: Present when released.
    - `reason` string: Present when not released (no verified domain, or not owner of record).

## Other responses

- `401`: Missing or invalid API key
- `403`: API key does not manage this merchant
- `404`: Merchant not found
- `429`: Rate limit exceeded. API-key requests count against the key's daily limit; every authenticated response carries X-RateLimit-Limit and X-RateLimit-Remaining headers, and a 429 additionally carries Retry-After (seconds until the window resets).
- `500`: Unexpected server error. Safe to retry; no credits are charged on a 500. Router endpoints return the standard error envelope; standalone endpoints (the ones whose 200 is a flat object) return a flat {"error": "..."} object.

---

[API](https://skmtc.dev/insumermodel/apis/insumerapi.md) · [All operations](https://skmtc.dev/insumermodel/apis/insumerapi/llms.txt) · [OpenAPI document](https://skmtc.dev/insumermodel/apis/insumerapi/revisions/91f56fe9e3d8?raw)
