curl -H "X-FH-APIKEY: $FINHAY_API_KEY" \
"https://open-api.fhsc.com.vn/market/stocks/VNM/events?event_type=CASH_DIVIDEND"import requests
url = "https://open-api.fhsc.com.vn/market/stocks/{symbol}/events"
headers = {"X-FH-APIKEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-FH-APIKEY': '<api-key>'}};
fetch('https://open-api.fhsc.com.vn/market/stocks/{symbol}/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://open-api.fhsc.com.vn/market/stocks/{symbol}/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-FH-APIKEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://open-api.fhsc.com.vn/market/stocks/{symbol}/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-FH-APIKEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://open-api.fhsc.com.vn/market/stocks/{symbol}/events")
.header("X-FH-APIKEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://open-api.fhsc.com.vn/market/stocks/{symbol}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-FH-APIKEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"symbol": "VNM",
"pagination": {
"page": 1,
"page_size": 20,
"total_items": 37,
"total_pages": 2
},
"events": [
{
"camast_id": "0001000134011191",
"event_type": "CASH_DIVIDEND",
"symbol": "PGD",
"dates": {
"record_date": "2023-12-25",
"ex_date": "2023-12-25"
},
"event_type_name": "Cổ tức bằng tiền",
"description": "<string>",
"details": {
"ratio": {
"display": "100/10",
"base": 100,
"entitled": 10
}
}
}
],
"updated_at": "2026-05-27T14:30:15+07:00"
},
"error_code": "0",
"message": "success"
}{
"error_code": "400",
"message": "Invalid parameter"
}{
"error_code": "401",
"message": "Invalid signature"
}{
"error_code": "404",
"message": "Not found"
}{
"error_code": "429",
"message": "Too many requests"
}{
"error_code": "500",
"message": "Internal server error"
}Sự kiện quyền của stock
Sự kiện quyền của 1 mã (nguồn CAMAST của VSD), gồm cả sự kiện tương lai đã công bố. Sắp xếp theo ngày GDKHQ giảm dần, sự kiện chưa có ngày chốt xếp cuối.
curl -H "X-FH-APIKEY: $FINHAY_API_KEY" \
"https://open-api.fhsc.com.vn/market/stocks/VNM/events?event_type=CASH_DIVIDEND"import requests
url = "https://open-api.fhsc.com.vn/market/stocks/{symbol}/events"
headers = {"X-FH-APIKEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-FH-APIKEY': '<api-key>'}};
fetch('https://open-api.fhsc.com.vn/market/stocks/{symbol}/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://open-api.fhsc.com.vn/market/stocks/{symbol}/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-FH-APIKEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://open-api.fhsc.com.vn/market/stocks/{symbol}/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-FH-APIKEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://open-api.fhsc.com.vn/market/stocks/{symbol}/events")
.header("X-FH-APIKEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://open-api.fhsc.com.vn/market/stocks/{symbol}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-FH-APIKEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"symbol": "VNM",
"pagination": {
"page": 1,
"page_size": 20,
"total_items": 37,
"total_pages": 2
},
"events": [
{
"camast_id": "0001000134011191",
"event_type": "CASH_DIVIDEND",
"symbol": "PGD",
"dates": {
"record_date": "2023-12-25",
"ex_date": "2023-12-25"
},
"event_type_name": "Cổ tức bằng tiền",
"description": "<string>",
"details": {
"ratio": {
"display": "100/10",
"base": 100,
"entitled": 10
}
}
}
],
"updated_at": "2026-05-27T14:30:15+07:00"
},
"error_code": "0",
"message": "success"
}{
"error_code": "400",
"message": "Invalid parameter"
}{
"error_code": "401",
"message": "Invalid signature"
}{
"error_code": "404",
"message": "Not found"
}{
"error_code": "429",
"message": "Too many requests"
}{
"error_code": "500",
"message": "Internal server error"
}Authorizations
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.
Path Parameters
Mã cổ phiếu niêm yết (3–10 ký tự chữ/số, không phân biệt hoa thường). VD: VNM, FPT.
"VNM"
Query Parameters
Ngày bắt đầu (bao gồm), lọc theo dates.ex_date, dạng YYYY-MM-DD. Bỏ trống → không giới hạn.
"2026-01-01"
Ngày kết thúc (bao gồm), lọc theo dates.ex_date, dạng YYYY-MM-DD. Bỏ trống → không giới hạn.
"2026-12-31"
Lọc theo loại quyền (RightEventType, vd CASH_DIVIDEND), danh mục đầy đủ 26 giá trị. Bỏ trống → mọi loại.
Mã loại quyền, danh mục đầy đủ 26 giá trị. Chỉ 11 giá trị sau có schema details riêng (xem RightEventDetails) vì liên quan trực tiếp quyền lợi cổ đông/trái chủ — các giá trị còn lại là sự kiện quản trị/thị trường, details sẽ là null: SHAREHOLDER_MEETING = Tham dự đại hội cổ đông; CASH_DIVIDEND = Chia cổ tức bằng tiền; STOCK_DIVIDEND = Chia cổ tức bằng cổ phiếu; RIGHTS_OFFERING = Quyền mua; BOND_INTEREST = Trả lãi trái phiếu; BOND_PRINCIPAL_INTEREST = Trả gốc và lãi trái phiếu; BOND_TO_STOCK_CONVERSION = Chuyển đổi trái phiếu thành cổ phiếu; STOCK_TO_STOCK_CONVERSION = Chuyển đổi cổ phiếu thành cổ phiếu; BONUS_SHARE = Cổ phiếu thưởng; CONVERTIBLE_BOND_OPTION = Chuyển đổi trái phiếu (chọn nhận CP hoặc tiền); COVERED_WARRANT_SETTLEMENT = Chi trả lợi tức chứng quyền. Các giá trị không có details: AUCTION = Đấu giá; TRADING_SUSPENSION = Tạm ngừng giao dịch; DELISTING = Hủy niêm yết; BUYBACK = Mua lại; SHAREHOLDER_OPINION_POLL = Lấy ý kiến cổ đông; TREASURY_SHARE_SALE = Bán cổ phiếu quỹ; INFO_UPDATE = Cập nhật thông tin; OTHER_STOCK_DIVIDEND = Trả cổ tức bằng cổ phiếu khác; STOCK_SPLIT = Tách cổ phiếu; STOCK_MERGE = Gộp cổ phiếu; RIGHT_TO_STOCK_CONVERSION = Chuyển quyền thành cổ phiếu; EXCHANGE_TRANSFER = Chuyển sàn; VOTING_RIGHT = Quyền bỏ phiếu; PENDING_SHARE_TO_TRADING = Chuyển cổ phiếu chờ giao dịch thành giao dịch; OTC_BOND_INTEREST = Trả lãi trái phiếu OTC.
AUCTION, TRADING_SUSPENSION, DELISTING, BUYBACK, SHAREHOLDER_MEETING, SHAREHOLDER_OPINION_POLL, TREASURY_SHARE_SALE, INFO_UPDATE, OTHER_STOCK_DIVIDEND, CASH_DIVIDEND, STOCK_DIVIDEND, STOCK_SPLIT, STOCK_MERGE, RIGHTS_OFFERING, BOND_INTEREST, BOND_PRINCIPAL_INTEREST, BOND_TO_STOCK_CONVERSION, RIGHT_TO_STOCK_CONVERSION, EXCHANGE_TRANSFER, STOCK_TO_STOCK_CONVERSION, BONUS_SHARE, VOTING_RIGHT, CONVERTIBLE_BOND_OPTION, PENDING_SHARE_TO_TRADING, OTC_BOND_INTEREST, COVERED_WARRANT_SETTLEMENT "CASH_DIVIDEND"
Trang cần lấy, bắt đầu từ 1. Mặc định 1.
x >= 11
Số bản ghi mỗi trang, tối đa 50. Mặc định 20.
1 <= x <= 5020
Response
data.events là danh sách sự kiện quyền của trang hiện tại.
Các field chung của envelope trong mọi response của Finhay API.
error_codelà"0"(string) khi thành công, mã khác"0"khi lỗi.messagelà thông điệp ngắn từ server.