# Lấy số dư và hạn mức Cloud Phone

Trả về số dư ví của nhóm và hạn mức sử dụng cloud phone.
- **Điều kiện tiên quyết**: thành viên gọi cần quyền chi phí. Ví được tra cứu theo nhóm, nên các con số này là của cả nhóm chứ không phải của từng thành viên.
- **Tác động**: không có. Chỉ đọc. An toàn khi thử lại với thời gian chờ tăng dần có giới hạn.
- **Đơn vị**: `balance` là số dư ví **theo xu**, không phải theo đơn vị tiền tệ. `remainingDuration` là số phút cloud phone còn lại và `remainingConcurrency` là số suất đồng thời; cả hai đều bị chặn ở 0 thay vì xuống âm.
- **Nội dung**: đúng ba con số này. Số tiền bị phong tỏa trong ví, phần chia giữa số phút đã dùng và được tặng, cùng các mốc hết hạn đều tồn tại ở tầng trên nhưng cố ý không được phơi ra ở đây.
- **Lưu ý**: lệnh gọi thất bại toàn bộ nếu việc tra cứu ví hoặc tra cứu hạn mức thất bại; nó không bao giờ trả về số liệu một phần.

Endpoint: GET /api/balance
Version: 2026-09-05

## Response 200:

  - `200` (unknown)
    Request processed; inspect `code` for the business result

## Response 200 fields (application/json):

  - `code` (integer, required)
    Business result code; `0` indicates success
    Example: 0

  - `msg` (string | null, required)
    Error message; null when successful
    Example: null

  - `requestId` (string, required)
    Request ID for troubleshooting
    Example: 1d4f3ea968664593860b94b35d4ebf5e

  - `data` (object, required)

  - `data.balance` (integer, required)
    Available wallet balance in cents

  - `data.remainingDuration` (string, required)
    Remaining cloud phone duration in minutes, serialized as a numeric string

  - `data.remainingConcurrency` (integer, required)
    Remaining team-level cloud phone concurrency

