Tham khảo API

Tích hợp enuchat vào hệ thống của bạn dùng Tenant API. Quản lý cuộc trò chuyện, gửi tin nhắn và truy cập dữ liệu thanh toán bằng mã.

Xác thực

Tất cả yêu cầu API được xác thực bằng khoá API gửi trong header X-Api-Key.

Lấy khoá API

  1. Đi đến Cài đặt → Khoá API trong bảng điều khiển
  2. Nhấn Tạo Khoá API và đặt tên
  3. Sao chép khoá ngay — chỉ hiển thị một lần
  4. Lưu an toàn (biến môi trường, trình quản lý bí mật)

Thực hiện yêu cầu

Bao gồm khoá trong mỗi yêu cầu:

curl -H "X-Api-Key: tak_your_key_here" \
     https://api.enuchat.com/api/v1/tenant-api/widgets

Tất cả phản hồi là JSON. Phản hồi thành công có trường data. Lỗi có trường error với codemessage.

Bảo mật: Khoá API được hash (SHA-256) trong cơ sở dữ liệu. Chúng tôi không bao giờ lưu khoá thô. Đối xử với khoá như mật khẩu — không commit vào mã hay chia sẻ công khai.

URL Cơ sở

https://api.enuchat.com/api/v1/tenant-api

Tất cả các endpoint bên dưới tương đối với URL cơ sở này.

Endpoint

GET /widgets

Liệt kê tất cả widget cho tài khoản.

Phản hồi

{'{'}
  "data": [
{'{'}
      "id": "019d19c6-7e0b-...",
      "name": "Main Website Chat",
      "isActive": true,
      "aiEnabled": true,
      "translationEnabled": true,
      "primaryColor": "#2563eb",
      "position": "bottom-right"
    }
  ]
}

GET /conversations

Liệt kê các cuộc trò chuyện, sắp xếp theo tin nhắn gần đây nhất.

Tham số Truy vấn

Tham sốKiểuMô tả
statusstringLọc theo trạng thái: open, pending, closed
widgetIdstringLọc theo UUID widget
limitintegerSố kết quả tối đa (mặc định 20, tối đa 100)
offsetintegerBỏ qua N kết quả

Ví dụ

curl -H "X-Api-Key: tak_..." \
     "https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"

Phản hồi

{'{'}
  "data": [
{'{'}
      "id": "019d6724-000e-...",
      "widgetId": "019d19c6-7e0b-...",
      "visitorId": "v-abc123",
      "visitorName": "John",
      "visitorEmail": "john{'@'}example.com",
      "visitorLanguage": "en",
      "status": "open",
      "assignedTo": null,
      "lastMessageAt": "2026-04-11T14:30:00+00:00",
      "startedAt": "2026-04-11T14:25:00+00:00"
    }
  ]
}

GET /conversations/{'{'}id}

Lấy cuộc trò chuyện với tất cả tin nhắn.

Tham số Truy vấn

Tham sốKiểuMô tả
limitintegerSố tin nhắn tối đa (mặc định 50, tối đa 200)

Phản hồi

{'{'}
  "data": {'{'}
    "id": "019d6724-000e-...",
    "visitorLanguage": "en",
    "status": "open",
    "messages": [
{'{'}
        "id": "019d6724-1234-...",
        "role": "visitor",
        "content": "Hello, how much does it cost?",
        "contentLanguage": "en",
        "translatedContent": "Cześć, ile to kosztuje?",
        "translatedLanguage": "pl",
        "isAutoReply": false,
        "createdAt": "2026-04-11T14:25:30+00:00"
      },
{'{'}
        "id": "019d6724-5678-...",
        "role": "ai",
        "content": "Our plans start at €19/month...",
        "isAutoReply": true,
        "createdAt": "2026-04-11T14:25:32+00:00"
      }
    ]
  }
}

POST /conversations/{'{'}id}/messages

Gửi tin nhắn đến cuộc trò chuyện. Tin nhắn sẽ được gửi đến khách theo thời gian thực qua widget chat.

Nội dung Yêu cầu

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
TrườngKiểuMô tả
contentstringBắt buộc. Văn bản tin nhắn.
rolestringsystem (mặc định) hoặc operator

Phản hồi (201 Created)

{'{'}
  "data": {'{'}
    "id": "019d6725-abcd-...",
    "role": "system",
    "content": "Thanks for reaching out!",
    "createdAt": "2026-04-11T14:35:00+00:00"
  }
}

PATCH /conversations/{'{'}id}

Cập nhật trạng thái hoặc phân công cuộc trò chuyện.

Nội dung Yêu cầu

{'{'}
  "status": "closed"
}
TrườngKiểuMô tả
statusstringopen, pending, hoặc closed
assignedTostring|nullUUID nhân viên để giao, hoặc null để bỏ giao

GET /billing/balance

Lấy gói hiện tại và số dư tín dụng.

Phản hồi

{'{'}
  "data": {'{'}
    "plan": "pro",
    "creditBalance": 4500000,
    "totalCreditsAdded": 10000000
  }
}

Xử lý Lỗi

Lỗi trả về mã trạng thái không phải 2xx kèm thân JSON:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
Trạng thái HTTPÝ nghĩa
401Khoá API không hợp lệ, hết hạn hoặc thiếu
400Nội dung yêu cầu hoặc tham số không hợp lệ
404Không tìm thấy tài nguyên (hoặc thuộc tenant khác)
500Lỗi máy chủ

Trường hợp Sử dụng Phổ biến

Tích hợp CRM

Poll cuộc trò chuyện mới và đồng bộ dữ liệu khách (tên, email, ngôn ngữ) vào CRM. Dùng ID cuộc trò chuyện làm tham chiếu bên ngoài.

Theo dõi Tự động

Sau khi cuộc trò chuyện đóng, gửi tin nhắn theo dõi qua API: "Cảm ơn đã chat! Còn điều gì chúng tôi có thể giúp không?"

Thay thế Webhook

Cho đến khi webhook đi có sẵn, poll endpoint cuộc trò chuyện định kỳ để phát hiện tin nhắn mới hoặc thay đổi trạng thái.

Thao tác Hàng loạt

Đóng tất cả cuộc trò chuyện hơn 7 ngày, phân công cuộc trò chuyện cho nhân viên dựa trên logic bên ngoài, hoặc xuất lịch sử cuộc trò chuyện để phân tích.

Giới hạn Tốc độ

API cho phép tối đa 60 yêu cầu mỗi phút cho mỗi khoá API. Nếu vượt giới hạn, bạn sẽ nhận phản hồi 429 Too Many Requests. Chờ và thử lại với backoff theo cấp số nhân.

Sẵn sàng tích hợp?

Tạo tài khoản miễn phí và tạo khoá API trong vài phút.

Bắt đầu Miễn phí