> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.claw-ops.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.claw-ops.com/_mcp/server.

# 카카오 채널 연결 해제

DELETE https://api.claw-ops.com/v1/accounts/{accountId}/kakao/channels/{channelId}

채널 연동을 해제합니다. **카카오톡 채널 자체는 지워지지 않고**, ClawOps와의 연동만 끊깁니다.

⚠️ **되돌릴 수 없고, 그 채널에 등록된 알림톡 템플릿도 함께 삭제됩니다.** 템플릿은 카카오 검수를
다시 받아야 하므로 복구에 시간이 걸립니다 — 호출 전에 사용자에게 이 사실을 알리고 확인을 받으세요.

해제 후에는 그 채널을 **다시 연결할 수 있습니다**(본인이든 다른 계정이든). 인증번호 요청부터
다시 시작하면 됩니다.

이미 해제된 채널이나 이 계정 소유가 아닌 채널은 `404` 입니다. 다른 계정의 채널은 해제할 수 없습니다.

**되돌릴 수 없는 동작이므로 사용자 확인을 거친 뒤 호출하세요.** 이 API 는 확인 절차를 대신해 주지
않습니다 — 대시보드에서 해제할 때는 삭제되는 내용을 안내하고 확인을 받습니다.

해제 요청은 감사 기록에 남습니다. API 키로 호출하면 키에는 사용자 정보가 없어 "누가" 는 남지
않고 "API 키로 해제됨" 으로만 기록됩니다 — 담당자 단위 추적이 필요하면 대시보드에서 해제하세요.

Reference: https://docs.claw-ops.com/api-레퍼런스/claw-ops-api/kakao-channels/delete-kakao-channel

## Authentication

- `Authorization` header (bearer token, required) — API Key를 Bearer 토큰으로 전달

## Request

### Path parameters

- `accountId` (string, required) — 계정 ID
- `channelId` (string, required) — 채널 목록에서 받은 ClawOps 채널 리소스 ID. 검색용 ID(`example`)가 아닙니다.

## Response

### 200

해제된 채널 정보

- `id` (string, optional) — ClawOps 채널 리소스 ID. 템플릿 조회와 발송 요청에 이 값을 사용합니다.
- `searchId` (string, optional) — 카카오 채널 검색용 ID. **`@` 없는 형태**로 저장·응답됩니다(`@` 를 붙여 보내도 떼어냅니다). **채널 소유자가 카카오 비즈니스에서 바꿀 수 있는 값이므로 연동 키로 쓰지 마세요** — 키는 `id` 입니다.
- `name` (string, optional) — 카카오 채널 이름
- `categoryCode` (string, optional) — 채널 업종 카테고리 코드. 값 목록은 채널 카테고리 조회로 받습니다.
- `status` (enum, optional) — `connected` = 연결 완료. `needs_attention` = 연결 기록은 있으나 카카오 채널 상태를 확인하지 못한 상태입니다 (채널이 실제로 끊겼을 수도, 일시적인 조회 실패일 수도 있습니다). 상세 조회를 다시 호출하면 재확인합니다.
  - Allowed values: `connected`, `needs_attention`
- `managerPhoneMasked` (string, optional, nullable) — 채널 담당자 휴대전화번호(마스킹). 원문은 저장하지 않으므로 응답에도 마스킹된 값만 나갑니다.
- `connectedAt` (datetime, optional) — 채널이 이 계정에 연결된 시각
- `syncedAt` (datetime, optional, nullable) — 카카오 채널 상태를 마지막으로 확인한 시각. null 이면 연결 이후 한 번도 확인하지 않은 상태입니다.
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)

## Examples

**Response**

```json
{
  "id": "clx9kak0001",
  "searchId": "example",
  "name": "러너스 고객센터",
  "categoryCode": "00100010001",
  "status": "connected",
  "managerPhoneMasked": "010-****-5678",
  "connectedAt": "2024-01-15T09:30:00Z",
  "syncedAt": "2024-01-15T09:30:00Z",
  "createdAt": "2024-01-15T09:30:00Z",
  "updatedAt": "2024-01-15T09:30:00Z"
}
```

**SDK Code**

```python
import requests

url = "https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001"

headers = {"Authorization": "Bearer <token>"}

response = requests.delete(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001';
const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001"

	req, _ := http.NewRequest("DELETE", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.delete("https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('DELETE', 'https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.claw-ops.com/v1/accounts/AC1a2b3c4d/kakao/channels/clx9kak0001")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "DELETE"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```