/v1.
Nhận quyền truy cập
Quyền truy cập được cấp theo từng dự án. Bạn cần cả bốn điều kiện:Một Hội viên đang hoạt động, Silver trở lên
Một đơn đăng ký nhà phát triển đã được duyệt
Đã chấp nhận Điều khoản Nhà phát triển API
Các scope mà dự án của bạn cần
Scope
Xác thực
Gửi khóa bí mật của bạn dưới dạng token Bearer:- Danh sách IP cho phép — giới hạn lệnh gọi ở những IP máy chủ nhất định
- Giới hạn tần suất — trần theo dự án, tăng dần theo cấp Hội viên của chủ sở hữu
Khóa, xoay vòng và lưu trữ
- Chỉ giữ nó ở phía máy chủ — ai cầm được khóa đều có thể trừ tiền người dùng của bạn
- Xoay vòng từ tab khóa API. Khóa cũ vẫn hoạt động thêm 24 giờ như thời gian ân hạn, để bạn triển khai mà không gián đoạn
- Khóa bí mật ký webhook được xoay vòng riêng, với khoảng chồng lấn 24 giờ của chính nó
- Nếu bị lộ, hãy xoay vòng ngay
SDK Node.js chính thức
Gói chính thức@vetox-bot/vito bao trọn cả chín endpoint cùng phần xác minh webhook. Nó thay bạn lo header Idempotency-Key, việc thử lại với thời gian chờ tăng dần, các mốc hết giờ và việc phân loại lỗi.
Cài đặt
fetch dựng sẵn và node:crypto — đồng thời phát hành cả ESM lẫn CommonJS với định nghĩa TypeScript đầy đủ.
Khởi tạo
apiKey, SDK sẽ đọc VITO_API_KEY từ môi trường. Định dạng khóa được kiểm tra ngay lúc khởi tạo, nên một khóa sai định dạng sẽ hỏng ngay lập tức thay vì tốn của bạn một vòng mạng và một lỗi 401.
Tùy chọn của client
Các phương thức khả dụng
data đã được mở bọc — bạn không bao giờ phải tự bóc success hay data. Tất cả cũng nhận tùy chọn theo từng lệnh gọi: { timeoutMs, maxRetries, signal, headers }, còn các phương thức ghi nhận thêm { idempotencyKey }.Ví dụ sử dụng
Kiểm tra khóa khi khởi động
Đọc số dư
Trừ tiền một người dùng (bán một mặt hàng)
Cộng Vito cho người dùng
Duyệt qua các giao dịch
Tính bất biến và việc thử lại
SDK gửi headerIdempotency-Key ở mọi thao tác ghi (deduct, credit, transfer). Nếu bạn không cung cấp, nó tạo khóa một lần cho mỗi lệnh gọi và gửi lại đúng khóa đó ở mọi lần thử lại, nên một lần thử lại không bao giờ có thể quyết toán thao tác hai lần.
Hãy tự cung cấp khóa khi cùng một thao tác logic có thể được thử lại từ một tiến trình mới — một trình chạy tác vụ, một lần gửi lại từ hàng đợi, hoặc một lượt quét theo lịch:
auth.rotateKey() bị loại trừ có chủ đích — thử lại ở đó sẽ phát hành khóa thứ hai và vô hiệu hóa khóa mà lần thử đầu tiên đã trả về.Xác minh webhook bằng SDK
constructEvent kiểm tra cửa sổ chống phát lại 5 phút, so sánh trong thời gian hằng số với mọi chữ ký h1 trong header — nhờ vậy nó tự hoạt động suốt khoảng chồng lấn 24 giờ khi xoay vòng — rồi phân tích payload và trả về sự kiện đã định kiểu.
Trong route handler của Next.js (App Router), hãy dùng biến thể tự đọc body thô:
event.eventId trước khi chạy bất kỳ tác dụng phụ nào.Xử lý lỗi
Mọi thứ SDK ném ra đều kế thừaVitoError và mang code, status, type, requestId và retryable.
Hủy một lệnh gọi
VitoConnectionError với mã VITO_SDK_ABORTED.
Trừ tiền một người dùng
Ứng dụng của bạn gọi POST /v1/deduct
guildId khởi phát và chi tiết mặt hàng.Vito trả về một confirmUrl
Người dùng phê duyệt bằng mã PIN
vetox.io.Vito quyết toán và thông báo
Ứng dụng của bạn xác minh và hoàn tất
Tham số yêu cầu — /v1/deduct
Cộng Vito cho người dùng
POST /v1/add cộng Vito cho một người dùng từ số dư của chính bạn — để thưởng hoặc hoàn tiền. Cùng các trường như /deduct, trừ guildId và product.
credit:create và đủ số dư, nếu không lệnh gọi trả về 402 VITO_INSUFFICIENT_OWNER_FUNDS.Phí
Mỗi khoản trừ được quyết toán cho bạn sau khi trừ phí nền tảng — cùng biểu phí với chuyển Vito trong ứng dụng, dựa trên cấp Hội viên của bạn:/v1/add thì luôn miễn phí.Webhook
Thêm một hoặc nhiều URL callbackhttps ở tab cài đặt. Vito gửi một POST có chữ ký mỗi khi một xác nhận đạt tới trạng thái cuối.
Xác minh chữ ký
Mỗi lần gửi đều kèm headerX-Vito-Signature:
X-Vito-Event-Id làm khóa chống trùng lặp, vì lần thử lại sẽ gửi đúng id đó:
<ts>:<rawBody> bằng khóa bí mật ký của bạn và so sánh trong thời gian hằng số.
Sự kiện
Năm loại sự kiện, tất cả dùng chung một dạng payload.data.status mang kết quả.
Mã lỗi
Mọi phản hồi đều được bọc trong một phong bì. Thành công mangdata, thất bại mang error, không bao giờ có cả hai:
Giới hạn tần suất
Idempotency-Key để chống trùng lặp khi thử lại một cách an toàn.Endpoint
Hạn mức
- Xác nhận hết hạn sau 10 phút — hãy coi các yêu cầu chưa xác nhận là đã bỏ dở
amountphải là số nguyên dươngmetadatagiới hạn ở 10 khóa- Trần mỗi giao dịch và trần hằng ngày do đội ngũ Vetox đặt và chỉ hiển thị ở chế độ đọc trong tab cài đặt
Danh sách kiểm tra bảo mật
Giữ khóa bí mật ở phía máy chủ
Giữ khóa bí mật ở phía máy chủ
Xác minh mọi webhook
Xác minh mọi webhook
Chỉ quyết toán khi completed
Chỉ quyết toán khi completed
/deduct — khoản trừ chỉ là cuối cùng khi có confirmation.completed.Đặc quyền tối thiểu
Đặc quyền tối thiểu
Khắc phục sự cố
Mọi lệnh gọi đều trả về không được phép
Mọi lệnh gọi đều trả về không được phép
Tôi làm mất khóa
Tôi làm mất khóa
Chữ ký webhook lỗi sau khi xoay vòng
Chữ ký webhook lỗi sau khi xoay vòng
Một khoản trừ không bao giờ hoàn tất
Một khoản trừ không bao giờ hoàn tất
Không có webhook nào đến
Không có webhook nào đến
Vito nhận về ít hơn số tôi đã trừ
Vito nhận về ít hơn số tôi đã trừ
402 VITO_INSUFFICIENT_OWNER_FUNDS
402 VITO_INSUFFICIENT_OWNER_FUNDS
/v1/add được chi trả từ số dư của chính bạn, không phải tạo ra từ hư không. Hãy nạp thêm.