채널
목록 조회
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_more가 true이면 meta.next_cursor가 함께 내려옵니다. 다음 페이지는 이 값을 cursor 쿼리로 전달해 이어갑니다 — 페이지네이션 참조.
필드 값 집합
| 필드 | 값 |
|---|---|
type | user_chat | team | direct | group (공개 API로 노출되는 상담 채널은 대부분 user_chat) |
provider | native | web | kakao | naver | email | line | whatsapp | instagram | sms | voice |
status | open | snoozed | closed |
assigned_type | ai | 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" } }