Kết nối tài khoản
Refresh trạng thái runtime
Đồng bộ trạng thái runtime mới nhất của nhà cung cấp cho tài khoản. runtime_status nhận một trong các giá trị chuẩn của nền tảng: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error. Các nhãn riêng của từng provider được chuẩn hoá về tập giá trị này trước khi trả về.
https://api.unifyport.ai/v1/accounts/{account_id}/runtime/refreshKênh được hỗ trợ
Trước khi gọi
Dùng X-Api-Key của workspace sở hữu tài nguyên trên máy chủ. Thay mọi giá trị mẫu trước khi chạy.
Kiểm tra trạng thái xác thực và runtime hiện tại, rồi chọn thao tác theo mục tiêu. Khởi động, dừng, làm mới và kết nối lại có mục đích khác nhau; ngoại tuyến không tự động có nghĩa là phải xác thực lại.
Nguồn tham số
- account_id
- Lấy data.id từ phản hồi tạo hoặc truy vấn tài khoản. ID thuộc workspace của X-Api-Key. Lấy tài khoản
Tham số yêu cầu
Tiêu đề
X-Api-KeyAPI key của không gian làm việc. Không gian làm việc được xác định từ tiêu đề này.
Content-TypeDùng application/json khi gửi nội dung yêu cầu JSON.
Tham số đường dẫn
account_idĐịnh danh dùng cho route runtime.
Nội dung yêu cầu
Điểm cuối này nhận một đối tượng JSON rỗng; hãy gửi {} như trong ví dụ yêu cầu.
Hiểu kết quả
Đọc runtime_status đã làm mới để biết kết nối hiện tại. Làm mới thành công không có nghĩa là trực tuyến. Chọn bước tiếp theo theo trạng thái trả về và gợi ý xác thực.
Phản hồi 200 OK
{
"request_id": "<REQUEST_ID>",
"data": {
"account_id": "acc_example",
"runtime_status": "running"
}
}
Nội dung phản hồi
account_idTài khoản nhà cung cấp mà phản hồi này tham chiếu tới.
providerMã định danh kênh. Dùng nguyên giá trị API trả về trong các lần gọi sau; xem enum bên dưới để biết giá trị của API này.
enum: telegram, whatsapp, line, twitter, facebook, zalo, tiktok, whatsapp-protocol
actionHành động được yêu cầu trong lần gọi này.
enum: refresh_status, start, stop, reconnect
operation_statusTrạng thái cho biết hành động runtime đã được chấp nhận hoặc hoàn tất.
runtime_statusTrạng thái runtime đã chuẩn hoá: một trong unknown, starting, running, stopping, stopped, reconnecting, disconnected hoặc error.
enum: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error
runtime_errorLỗi runtime của provider khi hành động không thể hoàn tất.
auth_requiredKhi true, tiếp tục quy trình ủy quyền của kênh. Chỉ trả về khi kênh cung cấp dữ liệu ủy quyền hoặc có quy trình đã xác nhận nhưng chưa hoàn tất. Thiếu trường hoặc false không có nghĩa là trực tuyến; hãy xem runtime_status. Chỉ có disconnected không đủ để kết luận cần ủy quyền lại. API runtime không trả về code, qrcode, auth_payload hoặc provider_data; lấy dữ liệu từ API ủy quyền của kênh.
auth_statusTrạng thái ủy quyền tùy chọn, ví dụ pending, awaiting_qr_scan hoặc passkey_required. Được trả về khi có dữ liệu ủy quyền hoặc quy trình đang thực hiện đã được xác nhận. Làm theo hướng dẫn kênh; lấy trạng thái và dữ liệu đầy đủ từ API ủy quyền, xem trạng thái kết nối ở runtime_status.
Phản hồi
200200 OK
Yêu cầu thành công. Xem ví dụ nội dung phản hồi.
400Bad Request
Body, đường dẫn hoặc tham số yêu cầu không hợp lệ.
401Unauthorized
Header X-Api-Key thiếu hoặc không hợp lệ.
403Forbidden
Yêu cầu đã được nhận diện nhưng thao tác không được phép.
404Not Found
Không tìm thấy tài nguyên được yêu cầu. Kiểm tra error.code cùng với thao tác hiện tại.
409Conflict
Thao tác đang yêu cầu xung đột với tài khoản hoặc tài nguyên nhà cung cấp đã có.
500Internal Server Error
Dịch vụ gặp lỗi không mong muốn.
502Bad Gateway
Adapter hoặc upstream provider không thể hoàn tất thao tác.
Khi yêu cầu thất bại
Kiểm tra HTTP, error.code/numeric_code và trạng thái hiện tại; giữ request_id. Kiểm tra thao tác cùng hỗ trợ của kênh. Chỉ tiếp tục xác thực khi có gợi ý rõ ràng yêu cầu, và xác nhận trạng thái trước khi thử lại. Tham chiếu mã lỗi
Đọc trạng thái HTTP, error.code và error.numeric_code theo thao tác đang gọi. Mã số có kiểu chuỗi. Giữ request_id để chẩn đoán; đây không phải khóa chống lặp hay mã tác vụ.
- invalid_request · 10000 · 400
Kiểm tra JSON và các trường bắt buộc.
Xử lý và thử lại: Sửa tham số theo thao tác và điều kiện của kênh rồi mới gọi lại. Lặp lại yêu cầu sai y nguyên không khắc phục lỗi.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 400 · 10000
{ "request_id": "req_example", "error": { "code": "invalid_request", "numeric_code": "10000", "message": "Invalid request parameters" } }- invalid_target_workspace · 11003 · 400
Đích ghi đè workspace trống hoặc sai định dạng. Bỏ tiêu đề ghi đè và dùng API Key thuộc workspace đích.
Điều kiện: Áp dụng khi yêu cầu có tiêu đề X-Workspace-Id để ghi đè workspace.
Xử lý và thử lại: Sửa tham số theo thao tác và điều kiện của kênh rồi mới gọi lại. Lặp lại yêu cầu sai y nguyên không khắc phục lỗi.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 400 · 11003
{ "request_id": "req_example", "error": { "code": "invalid_target_workspace", "numeric_code": "11003", "message": "Invalid target workspace" } }- provider_invalid_request · 30001 · 400
Kiểm tra các trường và định dạng riêng của kênh.
Xử lý và thử lại: Sửa tham số theo thao tác và điều kiện của kênh rồi mới gọi lại. Lặp lại yêu cầu sai y nguyên không khắc phục lỗi.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 400 · 30001
{ "request_id": "req_example", "error": { "code": "provider_invalid_request", "numeric_code": "30001", "message": "Provider rejected the request" } }- unsupported_action · 30005 · 400
Thao tác tài khoản không được nhận diện; dùng thao tác trong tài liệu.
Xử lý và thử lại: Chọn kênh và thao tác được tài liệu ghi là hỗ trợ. Lặp yêu cầu không bổ sung tính năng hay cấp quyền beta.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 400 · 30005
{ "request_id": "req_example", "error": { "code": "unsupported_action", "numeric_code": "30005", "message": "Action not supported" } }- invalid_api_key · 11001 · 401
Kiểm tra API Key có đúng và được bật hay không.
Xử lý và thử lại: Giữ request_id và mã lỗi có cấu trúc; kiểm tra thao tác hiện tại trước khi chọn hành động tiếp theo.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 401 · 11001
{ "request_id": "req_example", "error": { "code": "invalid_api_key", "numeric_code": "11001", "message": "Invalid API key" } }- missing_api_key · 11000 · 401
Thêm tiêu đề X-Api-Key.
Xử lý và thử lại: Giữ request_id và mã lỗi có cấu trúc; kiểm tra thao tác hiện tại trước khi chọn hành động tiếp theo.
Ví dụ · 401 · 11000
{ "request_id": "req_xxx", "error": { "code": "missing_api_key", "numeric_code": "11000", "message": "Missing X-Api-Key header" } }- workspace_override_forbidden · 11002 · 403
Yêu cầu cố ghi đè workspace mà API Key không được phép dùng. Bỏ tiêu đề ghi đè và dùng API Key thuộc workspace đích.
Điều kiện: Áp dụng khi yêu cầu có tiêu đề X-Workspace-Id để ghi đè workspace.
Xử lý và thử lại: Giữ request_id và mã lỗi có cấu trúc; kiểm tra thao tác hiện tại trước khi chọn hành động tiếp theo.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 403 · 11002
{ "request_id": "req_example", "error": { "code": "workspace_override_forbidden", "numeric_code": "11002", "message": "Workspace override is not allowed" } }- target_workspace_not_found · 11004 · 404
Không tìm thấy workspace được ghi đè hoặc workspace không khả dụng. Kiểm tra chủ sở hữu, bỏ tiêu đề ghi đè và dùng API Key của workspace đích; gọi lặp không cấp thêm quyền.
Điều kiện: Áp dụng khi yêu cầu có tiêu đề X-Workspace-Id để ghi đè workspace.
Xử lý và thử lại: Kiểm tra mã đích, chủ sở hữu tài nguyên và workspace hiện tại. Không coi đích đã xác nhận thiếu hoặc không truy cập được là lỗi dịch vụ tạm thời để tự thử lại.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 404 · 11004
{ "request_id": "req_example", "error": { "code": "target_workspace_not_found", "numeric_code": "11004", "message": "Target workspace not found" } }- account_binding_not_found · 30006 · 409
Tài khoản chưa gắn với kết nối kênh hoạt động; kiểm tra trạng thái.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 409 · 30006
{ "request_id": "req_example", "error": { "code": "account_binding_not_found", "numeric_code": "30006", "message": "Account is not bound to an available server" } }- provider_not_ready · 30009 · 409
Kết nối chưa sẵn sàng. Kiểm tra ủy quyền và runtime_status trước khi thử lại.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 409 · 30009
{ "request_id": "req_example", "error": { "code": "provider_not_ready", "numeric_code": "30009", "message": "Provider client is not ready" } }- provider_not_ready · 30014 · 409
Thiếu phiên bản chạy của kênh mà tài khoản cần. Đây là vấn đề khả dụng runtime, không chứng minh xác thực đã hết hạn.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
Kênh áp dụng: WhatsApp
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 409 · 30014
{ "request_id": "req_example", "error": { "code": "provider_not_ready", "numeric_code": "30014", "message": "Provider instance is missing" } }- provider_not_ready · 30015 · 409
Runtime của kênh đã dừng. Kiểm tra có chủ ý không trước khi khởi động; runtime dừng không tự đồng nghĩa đã đăng xuất.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
Kênh áp dụng: WhatsApp
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 409 · 30015
{ "request_id": "req_example", "error": { "code": "provider_not_ready", "numeric_code": "30015", "message": "Provider runtime is stopped" } }- run_runtime_action_failed · 20008 · 500
Thay đổi runtime: thao tác runtime lỗi; riêng phản hồi này chưa xác nhận trạng thái kết nối cuối cùng.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 500 · 20008
{ "request_id": "req_example", "error": { "code": "run_runtime_action_failed", "numeric_code": "20008", "message": "Failed to run runtime action" } }- run_runtime_action_failed · 20020 · 500
Kiểm tra account_id và dùng X-Api-Key của không gian làm việc sở hữu tài khoản. Khóa hiện tại không truy cập được tài khoản không tìm thấy trong không gian này.
Điều kiện: Áp dụng khi không tìm thấy tài khoản; giữ trạng thái HTTP và code của thao tác, dùng numeric_code để làm rõ tài khoản bị thiếu.
Xử lý và thử lại: Kiểm tra mã đích, chủ sở hữu tài nguyên và workspace hiện tại. Không coi đích đã xác nhận thiếu hoặc không truy cập được là lỗi dịch vụ tạm thời để tự thử lại.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 500 · 20020
{ "request_id": "req_example", "error": { "code": "run_runtime_action_failed", "numeric_code": "20020", "message": "Account not found" } }- run_runtime_action_failed · 30010 · 500
Kênh không hoàn thành được thao tác. message có thể kèm nguyên nhân gốc sau “Provider operation failed:”; nội dung này thay đổi và không phải giao diện lập trình ổn định.
Điều kiện: Áp dụng khi kênh không cung cấp phân loại lỗi cụ thể hơn; giữ nguyên lỗi của thao tác hiện tại.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
Kênh áp dụng: WhatsApp
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 500 · 30010
{ "request_id": "req_example", "error": { "code": "run_runtime_action_failed", "numeric_code": "30010", "message": "Provider operation failed" } }- provider_adapter_not_found · 30004 · 502
Dịch vụ kênh chưa khả dụng. Kiểm tra trạng thái hoặc thử sau; xác nhận kết quả trước khi thử ghi lại.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 502 · 30004
{ "request_id": "req_example", "error": { "code": "provider_adapter_not_found", "numeric_code": "30004", "message": "Provider adapter unavailable" } }- provider_unavailable · 30002 · 502
Dịch vụ kênh chưa khả dụng. Kiểm tra trạng thái hoặc thử sau; xác nhận kết quả trước khi thử ghi lại.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
Ví dụ · 502 · 30002
{ "request_id": "req_example_provider_unavailable", "error": { "code": "provider_unavailable", "numeric_code": "30002", "message": "Provider service unavailable" } }- provider_unavailable · 30010 · 502
Kênh không hoàn thành được thao tác. message có thể kèm nguyên nhân gốc sau “Provider operation failed:”; nội dung này thay đổi và không phải giao diện lập trình ổn định.
Xử lý và thử lại: Kiểm tra trạng thái xác thực và runtime rồi chọn làm mới, khởi động hoặc kết nối lại theo mục tiêu và khả năng kênh. Lỗi kết nối không tự chứng minh đã đăng xuất. Xác nhận running trước thao tác nghiệp vụ cần kết nối.
Kênh áp dụng: WhatsApp
Ví dụ · 502 · 30010
{ "request_id": "req_example_operation_failed", "error": { "code": "provider_unavailable", "numeric_code": "30010", "message": "Provider operation failed: Example operation could not be completed" } }- provider_unavailable · 30020 · 502
Yêu cầu đồng bộ whatsapp-protocol xác định hạn chế đăng nhập qua numeric_code=30020. Có thể ảnh hưởng nhập phiên, runtime, gửi và truy vấn liên hệ, đồng thời giữ trạng thái HTTP và code của thao tác. Không áp dụng hợp đồng sự kiện WhatsApp 20102 cho kênh này.
Xử lý và thử lại: Dừng gửi và thử lại tự động, hướng dẫn người dùng kiểm tra và xử lý hạn chế trong ứng dụng WhatsApp chính thức. Chỉ tiếp tục sau khi giải quyết và xác thực lại nếu cần; trạng thái running trước đó không chứng minh hạn chế đã hết.
Kênh áp dụng: WhatsApp Protocol
Ví dụ · 502 · 30020
{ "request_id": "req_example_account_restricted", "error": { "code": "provider_unavailable", "numeric_code": "30020", "message": "Account login is restricted. Check the official WhatsApp app for details." } }- provider_unavailable · 30021 · 502
Tại thời điểm yêu cầu này, tài khoản chưa kết nối với nền tảng nhắn tin. Thêm liên hệ WhatsApp có thể trả về 500 / create_contact_failed / 30021. Điều này không chứng minh tài khoản đã đăng xuất hoặc trạng thái hiện tại vẫn là disconnected; hãy truy vấn trạng thái hiện tại trước khi chọn cách khôi phục.
Xử lý và thử lại: Tạm dừng thao tác cần kết nối. Trước tiên gọi POST /v1/accounts/{account_id}/runtime/refresh, khôi phục theo trạng thái mới nhất rồi xác nhận runtime_status=running trước yêu cầu nghiệp vụ. Xác nhận kết quả ghi trước khi gửi lại.
Kênh áp dụng: WhatsApp
Ví dụ · 502 · 30021
{ "request_id": "req_example_connection_disconnected", "error": { "code": "provider_unavailable", "numeric_code": "30021", "message": "example operation: websocket not connected" } }