본문으로 건너뛰기

채널

목록 조회

GET /channels — 채널 목록을 cursor pagination으로 조회합니다.

  • Scope: channels:read
  • 쿼리: limit(기본 50, 최대 100), cursor

삭제되지 않은 모든 채널을 open·snoozed·closed 상태 구분 없이 반환합니다. 서버 측 상태 필터 파라미터는 없으므로, 특정 상태만 필요하면 응답의 status 필드로 직접 필터링하세요.

curl "https://api.talk.zeroworks.ai/api/public/v1/channels?limit=50" \
-H "Authorization: Bearer ztpat_..."

응답

{
"success": true,
"data": [
{
"id": "c1d2e3f4-...",
"type": "user_chat",
"provider": "kakao",
"status": "open",
"contact_id": "a1b2c3d4-...",
"assigned_member_id": "m1n2o3-...",
"assigned_type": "human",
"tags": [],
"last_message_at": "2026-05-01T10:00:00Z",
"message_count": 12,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-05-01T10:00:00Z"
}
],
"meta": { "has_more": false }
}

has_moretrue이면 meta.next_cursor가 함께 내려옵니다. 다음 페이지는 이 값을 cursor 쿼리로 전달해 이어갑니다 — 페이지네이션 참조.

필드 값 집합

필드
typeuser_chat | team | direct | group (공개 API로 노출되는 상담 채널은 대부분 user_chat)
providernative | web | kakao | naver | email | line | whatsapp | instagram | sms | voice
statusopen | snoozed | closed
assigned_typeai | human | workflow — 미배정 채널에서는 필드 자체가 생략됩니다

name·description·contact_id·assigned_member_id·last_message_at·snoozed_until은 값이 없으면 null이 아니라 키가 생략됩니다. 존재 여부는 "key" in obj로 판별하세요.

단건 조회

GET /channels/{id} — 단일 채널을 조회합니다. {id}는 채널 UUID입니다.

  • Scope: channels:read
{ "success": true, "data": { "id": "c1d2e3f4-...", "type": "user_chat", "status": "open", "provider": "kakao", "tags": [], "message_count": 12, "created_at": "2026-01-01T00:00:00Z", "updated_at": "2026-05-01T10:00:00Z" } }