Skip to main content
GET
/
trading
/
v2
/
sub-accounts
/
{subAccountId}
/
portfolio
cURL
curl \
  -H "X-FH-APIKEY: $FINHAY_API_KEY" \
  -H "X-FH-TIMESTAMP: $TIMESTAMP_MS" \
  -H "X-FH-NONCE: $NONCE_UUID" \
  -H "X-FH-SIGNATURE: $SIGNATURE_HEX" \
  "https://open-api.fhsc.com.vn/trading/v2/sub-accounts/$SUB_ACCOUNT_NORMAL/portfolio"
{
  "error_code": "0",
  "message": "success",
  "data": {
    "is_snapshot": false,
    "portfolio": [
      {
        "sub_account_id": "0001234567",
        "symbol": "VNM",
        "securities_type": "STOCK",
        "total": 1000,
        "available": 1000,
        "blocked": 0,
        "mortgage": 0,
        "vsd_mortgage": 0,
        "restrict": 0,
        "receiving_right": 0,
        "receiving_t0": 0,
        "receiving_t1": 0,
        "receiving_t2": 0,
        "matching_amount": 0,
        "withdraw": 0,
        "cost_price": 68000,
        "basic_price": 72000,
        "is_sellable": true,
        "custodycd": "0123456",
        "pnl_amount": 4500000,
        "pnl_rate": 6.62,
        "close_price": 72500,
        "cost_price_amount": 68000000,
        "basic_price_amount": 72000000,
        "total_pnl": 4500000,
        "sending_t0": 0,
        "sending_t1": 0,
        "sending_t2": 0,
        "has_newest_news": false,
        "trade": 0
      }
    ]
  }
}

Documentation Index

Fetch the complete documentation index at: https://developers.fhsc.com.vn/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

X-FH-APIKEY
string
header
required

API key dài hạn của client. Cấu hình 1 lần lúc khởi tạo; có thể wire thẳng vào static setter của SDK tự-gen. Đi kèm với FINHAY_API_SECRET — secret này chỉ dùng ở phía client để tính X-FH-SIGNATURE, không bao giờ gửi qua mạng.

X-FH-TIMESTAMP
string
header
required

Unix time hiện tại tính bằng milliseconds, đưới dạng chuỗi số thập phân.

Được tính per-request bởi signing middleware. Không set thủ công — dùng middleware mẫu trong README.

X-FH-NONCE
string
header
required

UUIDv4 duy nhất per-request (ví dụ crypto.randomUUID()). Server cache cặp (apiKey, nonce) trong 5 phút; nếu nonce được reuse với cùng apiKey trong window này, request sẽ bị từ chối với AUTH_NONCE_REUSED (401).

Server chấp nhận chuỗi opaque bất kỳ về mặt kỹ thuật, nhưng nên dùng UUIDv4 để đảm bảo tính unique.

Được tính per-request bởi signing middleware. Không set thủ công — xem middleware mẫu trong tài liệu Authentication.

X-FH-SIGNATURE
string
header
required

HMAC-SHA256 của canonical signing payload, encode hex (lowercase).

Signing payload:

{X-FH-TIMESTAMP}\n{METHOD}\n{REQUEST_PATH}[?{QUERY}]\n{BODYHASH}
  • ?{QUERY} chỉ nối vào path khi request có query string.
  • {BODYHASH} là chuỗi rỗng khi body rỗng (vẫn không có newline sau đó).

Được tính per-request bởi signing middleware. Không set thủ công — dùng middleware mẫu trong README.

Path Parameters

subAccountId
string
required

subAccountId được lấy từ bootstrap flow (GET /users/v1/users/{userId}/sub-accounts), chọn NORMAL hoặc MARGIN tuỳ mục đích.

Example:

"0001234567"

Response

Trả về data gồm is_snapshot (boolean) và portfolio[] — mỗi item là 1 vị thế stock kèm khối lượng, giá vốn, PnL.

Các field chung của envelope trong mọi response của Finhay API.

  • error_code"0" (string) khi thành công, mã khác "0" khi lỗi.
  • message là thông điệp ngắn từ server.
data
object
required

Payload portfolio — trường data của GET /trading/v2/sub-accounts/{subAccountId}/portfolio.

is_snapshot cho biết response có phải từ cache hay không.

error_code
string

"0" khi thành công, khác "0" khi lỗi.

Example:

"0"

message
string

Thông điệp trạng thái dễ đọc.

Example:

"success"