Đến nội dung chính
Chào mừng bạn đến với hệ thống kích hoạt Locket Gold tự động 24/7! Nạp tiền tự động qua VietQR duyệt ngay trong 30 giây.
🧸

Muốn mua Gold cho mình?

Kích hoạt ngay tại trang chủ. API bên dưới dành cho đối tác và bot.

Kích hoạt Gold

Góc API

Kích hoạt Gold và quản lý Studio từ website hoặc bot của bạn.

Kết nối của bạn

API Key xác thực tài khoản. Kích hoạt sẽ trừ tiền ví hoặc lượt gói tháng.

API Key của bạn đang chờ ♡

Đăng nhập để xem key và giá dành cho tài khoản của bạn.

API Locket Studio

Tạo khung, caption, sự kiện, bộ đôi và tủ đồ. Dùng API key hiện có qua X-API-Key hoặc Authorization: Bearer YOUR_API_KEY.

Phạm vi: Quản lý tài khoản thuộc đơn thành công của bạn; admin có thể chọn UID khác. API này không sửa giá, cấp Gold, sửa caption chung, quản lý key hoặc cấu hình toàn hệ thống. Caption admin luôn đứng đầu; caption riêng bổ sung phía sau.

Studio không thu tiền hoặc tự gia hạn. Các API kích hoạt bên dưới giữ quy trình thanh toán hiện tại.

Bắt đầu

  1. Gọi GET /api/v1/studio/accounts để chọn UID được phép. Có phân trang ?page=1&limit=100.
  2. Nếu đơn chưa có UID, gọi POST /accounts/resolve với {"orderId":123} để đối chiếu riêng đơn đó. API không tự tạo user Locket.
  3. Gọi GET /catalog và GET /users/USER_ID. Kiểm tra Gold còn hiệu lực và liên kết điện thoại theo hướng dẫn bên dưới; dùng POST /preview để thử.
  4. Lưu bằng revision mới nhất sau khi đã liên kết. Nếu nhận 409, đọc lại trạng thái/cấu hình trước khi thử lại; không tự ghi đè hoặc lặp vô hạn.

Danh sách thao tác

Đường dẫn sau /api/v1/studioChức năng
GET /accounts
POST /accounts/resolve
Danh sách tài khoản được phép và đối chiếu UID từ đơn thuộc bạn.
GET /catalogBộ chủ đề, sáu tâm trạng, tùy chọn tạo khung và giới hạn.
GET /users/USER_ID
PUT /users/USER_ID/appearance
DELETE /users/USER_ID/appearance
Xem, đặt hoặc bỏ diện mạo riêng. Xóa diện mạo không xóa sự kiện/bộ đôi.
POST /previewXem thử bằng userId và themeId/moodId/appearance; không lưu.
POST /frames/render?userId=USER_ID
POST /frames/upload?userId=USER_ID
Tạo PNG từ settings hoặc tải dataUrl PNG. Có ba kích thước native khi tạo khung; không nhận SVG hoặc URL tùy ý.
GET /events?userId=USER_ID
PUT /events/EVENT_ID
DELETE /events/EVENT_ID?userId=USER_ID
Sự kiện một lần (startAt/endAt UTC) hoặc hằng năm (month/day).
GET /couples?userId=USER_ID
PUT /couples/COUPLE_ID
DELETE /couples/COUPLE_ID?userId=USER_ID
Ghép hai UID thuộc quyền quản lý của bạn. Không ghép user ngoài phạm vi.
GET /wardrobe-links?userId=USER_ID
POST /wardrobe-links
DELETE /wardrobe-links/LINK_ID?userId=USER_ID
Cấp/xem/thu hồi tủ đồ riêng. Link bí mật chỉ được trả về một lần lúc tạo.

Đây là các đường dẫn của website, sau /api/v1/studio. Website giữ phiên VPS ở backend; các đường dẫn đọc/xác nhận/hủy dưới đây khác API VPS có sessionId.

Đường dẫn websiteBody / kết quả
GET /users/USER_ID/device-linkKiểm tra linked, status; đọc trạng thái không tự liên kết.
POST /users/USER_ID/device-link/sessions{} — tạo/tiếp tục phiên; trả sessionActive, expiresAt, serverTime, số lần còn lại.
GET /users/USER_ID/device-link/sessionKhôi phục trạng thái phiên hiện tại; không truyền mã phiên.
POST /users/USER_ID/device-link/confirm{"code":"01234567"} — chuỗi đúng 8 số, giữ số 0 ở đầu.
DELETE /users/USER_ID/device-link/session{} — hủy khi đổi tài khoản; giữ liên kết và diện mạo đã lưu.

Dùng cùng API key website trong suốt luồng. Mỗi key/actor giữ một phiên hiện tại tại backend, ràng buộc UID thuộc đơn thành công của bạn (hoặc quyền admin). Không nhận sessionId, UID ghi đè trong body/query hoặc URL máy chủ từ trình duyệt. Giữ key ở máy chủ/bot; phiên đăng nhập trên web dùng CSRF.

  1. Khi chưa liên kết, tạo phiên rồi bật đúng DNS/hồ sơ. Mở lại Locket bằng tài khoản đã chọn, chụp thử ảnh → Chú thích/Caption → Liên kết điện thoại → đọc 8 số.
  2. Gửi mã để xác nhận. Chỉ tiếp tục lưu khi linked: true và Gold vẫn còn hiệu lực. needs_admin_review cần hỗ trợ; không tự ghi đè.
  3. Sau xác nhận, mở lại Locket với đúng DNS/hồ sơ để tải cấu hình. Khi chỉ đổi khung, giữ caption riêng hiện tại; caption admin vẫn đứng đầu.

Phiên/mã hết hạn sau 8 phút; theo expiresAt và serverTime. 400: mã sai/cũ; xem attemptsRemaining. 410: hết hạn. 429: chờ theo Retry-After; không tạo phiên để đặt lại lượt. Nếu mất phản hồi xác nhận, đọc lại trạng thái trước khi thử tiếp. Không cần polling liên tục; nếu dùng, cách nhau ít nhất 3 giây và dừng khi kết thúc/đổi tài khoản.

Ví dụ: đặt chủ đề và tâm trạng

Thay YOUR_API_KEY, USER_ID, REVISION_FROM_LATEST_RESPONSE bằng dữ liệu của bạn. Chỉ gửi key từ máy chủ/bot của bạn; không nhúng key vào trang công khai.

curl "https://locket.lunakey.net/api/v1/studio/accounts" \
  -H "X-API-Key: YOUR_API_KEY"

curl "https://locket.lunakey.net/api/v1/studio/users/USER_ID" \
  -H "X-API-Key: YOUR_API_KEY"

curl -X PUT "https://locket.lunakey.net/api/v1/studio/users/USER_ID/appearance" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"revision":"REVISION_FROM_LATEST_RESPONSE","themeId":"pastel","moodId":"chill"}'
Mẫu tạo khung, sự kiện, bộ đôi và link tủ đồ

Các body dưới đây gửi JSON. Sửa hoặc xóa sự kiện/bộ đôi cần revision mới nhất và ID trùng với đường dẫn. Không đổi chủ sở hữu của ID đã tồn tại.

POST /frames/render?userId=USER_ID
{"settings":{"color1":"#C4B5FD","color2":"#FBCFE8","textColor":"#3B2855","thickness":6,"radius":24,"pattern":"hearts","nickname":"Minh"}}

PUT /events/my_birthday
{"revision":"REVISION","event":{"id":"my_birthday","name":"Sinh nhật","enabled":true,"userId":"USER_ID","kind":"annual","month":11,"day":1,"themeId":"love"}}

PUT /couples/our_theme
{"revision":"REVISION","couple":{"id":"our_theme","name":"Chúng mình","enabled":true,"userIds":["USER_ID","PARTNER_ID"],"themeId":"love"}}

POST /wardrobe-links
{"userId":"USER_ID","allowedThemeIds":["pastel","love"],"allowMood":true,"allowNickname":true,"days":30}

Hiểu phản hồi

401: key/phiên không hợp lệ. 403: tài khoản ngoài phạm vi. 409: cấu hình vừa thay đổi. 429: chờ theo header Retry-After. Lỗi trả {"success":false,"error":"..."}; không gọi lại mù với một thao tác đang chờ.

Sự kiện → diện mạo riêng → bộ đôi → lịch chung → mặc định là thứ tự chọn diện mạo. Riêng caption admin luôn là nhóm đầu tiên trong runtime.captionGroups; phía khách nên hiển thị đúng mảng này.

Sau khi lưu, người dùng mở lại Locket với DNS/hồ sơ đúng để tải cấu hình; cần quyền Gold phù hợp. API không thể bật Locket Looks ✨ khi tính năng đó chưa được hỗ trợ. Trên website, Studio dùng phiên đăng nhập và CSRF; key upstream không gửi đến trình duyệt.

Mã gói & giá API

Gửi "package": "..." tới POST /api/v1/unlock để chọn đúng giá, số ngày Gold và bảo hành.

Theo dõi kết quả API
Tên Gói Dịch Vụ Mã Gói Cần Truyền (package) Cấp Gold Trên Locket Thời Hạn Bảo Hành Giá Sỉ Trừ Ví (Của Bạn) Phương Thức Thanh Toán
Locket Gold 3 Tháng "3month" 90 ngày BH 1 tháng 8.000 đ "payment_method": "balance"
Locket Gold 1 tháng "1month" 30 ngày BH 1 tháng 5.000 đ "payment_method": "balance"
Locket Gold 6 Tháng "6month" 180 ngày BH 2 tháng 9.000 đ "payment_method": "balance"
Locket Gold 1 Năm BH Full 👑 "yearly" 365 ngày (1 năm) BH 2 tháng 10.000 đ "payment_method": "balance"
Thuê Gói Tháng (Dùng Lượt Quota) (Không cần mã gói) 365 ngày (1 năm) BH 3 tháng 0 đ (Trừ 1 lượt) "payment_method": "quota"
💡
Khuyên dùng cho Bot & Hệ thống: Trong yêu cầu API, bạn chỉ cần gửi trường "package": "..." (VD: "yearly-3m" hoặc "yearly"). Hệ thống sẽ tự động trừ đúng giá sỉ của gói, cấp đúng số ngày Gold và tính đúng thời hạn bảo hành. Bạn cũng có thể gửi thêm "days" nếu muốn chỉ định số ngày cụ thể.

Tài liệu API

Tất cả các endpoint API đều nhận dữ liệu dạng JSON và yêu cầu xác thực qua Header X-API-Key: YOUR_API_KEY hoặc Authorization: Bearer YOUR_API_KEY.

Base URL hệ thống: https://locket.lunakey.net
Endpoint Chính (Khuyên Dùng) ✨
POST /api/v1/unlock
Mở khóa / Cấp Gold (Hỗ trợ Gói Tháng 30 ngày & Gói Năm 365 ngày)

Cấp Gold hoặc gia hạn bản quyền Locket cho người dùng. Khuyên dùng gửi mã gói "package": "..." (VD: "yearly-3m", "yearly", "1month") để tự động nhận đúng giá sỉ CTV, cấp đúng số ngày Gold và kích hoạt đúng thời hạn bảo hành. Bạn cũng có thể gửi kèm days và note.

Các tham số trong JSON Body:
Tham số Kiểu Bắt buộc Ý nghĩa / Giá trị mẫu
username string Có (hoặc userId) Username Locket (VD: "sangyahh" hoặc link "locket.cam/@sangyahh")
package string Khuyên dùng ⭐ Mã gói cước từ bảng trên (VD: "yearly-3m", "yearly", "1month"). Hệ thống sẽ tự động trừ đúng giá CTV, cấp đúng số ngày Gold và tính đúng bảo hành.
days integer Tùy chọn Số ngày muốn cấp. Nếu không truyền sẽ tự động lấy theo gói package (365 cho gói năm, 30 cho gói tháng). Hỗ trợ truyền 366 cho năm nhuận.
payment_method string Mặc định "auto" "auto" (ưu tiên lượt gói tháng nếu có), "quota" (chỉ dùng lượt gói tháng - 0đ), "balance" (chỉ trừ ví)
userId string Tùy chọn UID Firebase Locket 28 ký tự (VD: "x4QUBgTUMdbIjkjEPHoyxU9L76Z2")
note string Tùy chọn Ghi chú đơn hàng trên hệ thống (VD: "Don hang #999")
request_id string Khuyên dùng Mã duy nhất chống trùng đơn / Idempotency Key (VD: "order_abc_123")
Ví Dụ cURL Gọi Kích Hoạt Theo Từng Gói:
Gói: Locket Gold 3 Tháng (Cấp 90 ngày Gold, BH 1 tháng)
curl -X POST "https://locket.lunakey.net/api/v1/unlock" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "username": "sangyahh",
    "package": "3month",
    "note": "Don hang 3month #999"
  }'
Phản hồi mẫu thành công (200 OK):
{
  "success": true,
  "message": "Mở khóa / Cấp Locket Gold thành công!",
  "orderCode": "LOK-A1B2C3D4",
  "username": "sangyahh",
  "userId": "x4QUBgTUMdbIjkjEPHoyxU9L76Z2",
  "package": "yearly-3m",
  "packageName": "Locket Gold 1 Năm (BH 3 Tháng)",
  "warrantyMonths": 3,
  "days": 365,
  "daysLeft": 365,
  "expiresAt": "02/10/2027 12:00",
  "chargedVia": "balance",
  "priceDeducted": 12000,
  "balance": 188000,
  "formattedBalance": "188.000 đ"
}
Tra Cứu Bản Quyền
GET /api/v1/user/check
Kiểm tra thông tin bản quyền và số ngày Gold còn lại

Kiểm tra thông tin người dùng Locket, trạng thái Gold, số ngày còn lại và ngày hết hạn. Hỗ trợ truyền ?username=... hoặc ?userId=....

cURL Mẫu:
curl "https://locket.lunakey.net/api/v1/user/check?username=sangyahh" \
  -H "X-API-Key: YOUR_API_KEY"
Phản hồi mẫu tài khoản có Gold (200 OK):
{
  "success": true,
  "exists": true,
  "userId": "x4QUBgTUMdbIjkjEPHoyxU9L76Z2",
  "username": "sangyahh",
  "role": "Gold",
  "hasGold": true,
  "daysLeft": 365,
  "expiresAt": "01/10/2027 12:00",
  "isExpired": false,
  "note": "VIP Gold US Active"
}

Cổng API Cũ Dự Phòng (Legacy Endpoints - /api/v1/lookup & /api/v1/gold)

Dành cho các bot hoặc mã nguồn đại lý cũ đã tích hợp từ trước. Bấm vào đây để xem chi tiết.

POST /api/v1/lookup
Tra cứu profile cũ
curl -X POST "https://locket.lunakey.net/api/v1/lookup" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"user": "duong"}'
POST /api/v1/gold
Kích hoạt kiểu cũ (yêu cầu confirm: true)
curl -X POST "https://locket.lunakey.net/api/v1/gold" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Idempotency-Key: don-001" \
  -d '{"user":"duong","category":"yearly","confirm":true,"request_id":"don-001"}'

Bảng Mã Phản Hồi HTTP (Status Codes)

200 OK Yêu cầu hoàn thành thành công. Đã cộng hạn Gold.
402 Payment Required Số dư ví hoặc số lượt gói tháng không đủ.
401 Unauthorized API Key bị thiếu, sai hoặc tài khoản bị khóa.
409 Conflict Tài khoản đã có Gold hoặc đơn đang được xử lý.
400 Bad Request Thiếu tham số 'username' hoặc định dạng không hợp lệ.
502 Bad Gateway Máy chủ Locket tạm thời phản hồi chậm. Hãy retry.

Mã Nguồn Mẫu Đa Ngôn Ngữ (Code Snippets) ✨

Mẫu gọi API mở khóa / Cấp Gold (hỗ trợ cả gói tháng và gói năm)

Terminal / Bash:
# Khuyên dùng: Truyền mã gói ("package") để xác định chính xác gói cước & thời gian bảo hành:
# 1. Gói 1 Năm BH 3 Tháng (yearly-3m):
curl -X POST "https://locket.lunakey.net/api/v1/unlock" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"sangyahh","package":"yearly-3m","note":"Don hang #1234"}'

# 2. Gói 1 Năm BH 12 Tháng (yearly):
curl -X POST "https://locket.lunakey.net/api/v1/unlock" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"sangyahh","package":"yearly","note":"Don hang #1234"}'

# 3. Gói 1 Tháng BH 1 Tháng (1month):
curl -X POST "https://locket.lunakey.net/api/v1/unlock" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"sangyahh","package":"1month","note":"Don hang #1234"}'