REST API Reference
URL gốc
https://hn.manage.bizflycloud.vn/api/email-transactional/v1
Xác thực
Xác thực request bằng API key thông qua header X-API-KEY:
X-API-KEY: your_api_key_here
API key được tạo trong dashboard (với quyền full_access) hoặc thông qua endpoint Tạo API Key (có thể cấu hình quyền). Key đầy đủ chỉ hiển thị một lần khi tạo — hãy lưu trữ an toàn.
Các mức quyền
Each API key has a permission level that controls access:
| Permission | Mô tả |
|---|---|
full_access |
Toàn bộ thao tác (tạo, gửi, xoá) |
sending_access |
Gửi email + thao tác đọc |
read_only |
Chỉ có quyền xem |
Định dạng phản hồi
Tất cả phản hồi đều ở dạng JSON. Các phản hồi thành công trả về mã trạng thái 2xx.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"created_at": "2024-01-15T10:30:00.000000Z"
}
Định dạng lỗi
{
"detail": "Error description"
}
Mã trạng thái
| Code | Mô tả |
|---|---|
200 |
Thành công |
400 |
Tham số request không hợp lệ |
401 |
Thiếu hoặc API key không hợp lệ |
403 |
Không đủ quyền |
404 |
Không tìm thấy tài nguyên |
422 |
Body request không hợp lệ |
500 |
Lỗi server |
Phân trang
List endpoints use page and per_page query parameters:
| Parameter | Default | Max | Mô tả |
|---|---|---|---|
page |
1 | — | Số trang (bắt đầu từ 1) |
per_page |
20 | 100 | Số item mỗi trang |
Content-Language
Thêm header Content-Language: vi để nhận thông báo lỗi bằng tiếng Việt, hoặc en (mặc định) cho tiếng Anh.
Emails
Gửi Email
Gửi email giao dịch tới một hoặc nhiều người nhận.
POST /emails
Quyền: sending_access or full_access
Request Body
| Field | Type | Bắt buộc | Mô tả |
|---|---|---|---|
from |
string | Yes | Sender email. Format: "Name <email@domain.com>" or "email@domain.com". Must be from a verified domain. |
to |
string[] | Yes | Recipient email addresses |
subject |
string | Yes | Email subject line |
html |
string | Yes* | HTML email content |
text |
string | Yes* | Plain text content |
cc |
string[] | No | CC recipients |
bcc |
string[] | No | BCC recipients |
reply_to |
string | No | Reply-to address |
attachments |
object[] | No | File attachments (see below) |
headers |
object | No | Custom email headers |
tags |
object[] | No | Analytics tags |
*Ít nhất một trong hai loại html hoặc text là bắt buộc.
Ví dụ request
curl -X POST https://manage.bizflycloud.vn/email-transactional/api/v1/emails \
-H "X-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@yourdomain.com",
"to": ["user@example.com"],
"subject": "Hello World",
"html": "<h1>Welcome!</h1><p>Thanks for signing up.</p>"
}'
Phản hồi 200
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"from": "hello@yourdomain.com",
"to": ["user@example.com"],
"status": "queued",
"created_at": "2024-01-15T10:30:00.000000Z"
}
Danh sách email
Lấy danh sách email đã gửi với phân trang và bộ lọc.
GET /emails
Quyền: read_only, sending_access, or full_access
Query Parameters
| Parameter | Type | Default | Mô tả |
|---|---|---|---|
page |
integer | 1 | Số trang |
per_page |
integer | 20 | Số item mỗi trang (max 100) |
status |
string | — | Lọc theo trạng thái. Comma-separated: queued, sent, delivered, bounced, deferred, delayed |
created_at_from |
string | — | Lower bound (ISO-8601 UTC, e.g. 2024-01-01T00:00:00Z) |
created_at_to |
string | — | Upper bound (ISO-8601 UTC) |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/emails?page=1&per_page=10&status=delivered" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"from": "hello@yourdomain.com",
"to": ["user@example.com"],
"subject": "Hello World",
"status": "Delivered",
"created_at": "2024-01-15T10:30:00.000000"
}
],
"total": 42,
"page": 1,
"per_page": 10,
"stats": [
{ "label": "Delivered", "count": 35, "percentage": 83.3 },
{ "label": "Queued", "count": 5, "percentage": 11.9 },
{ "label": "Delayed", "count": 2, "percentage": 4.8 }
]
}
Lấy thông tin email
Lấy chi tiết email đã gửi theo message ID.
GET /emails/{message_id}
Quyền: read_only, sending_access, or full_access
Path Parameters
| Parameter | Type | Mô tả |
|---|---|---|
message_id |
string | The message ID returned from send |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/emails/550e8400-e29b-41d4-a716-446655440000" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"from": "hello@yourdomain.com",
"to": ["user@example.com"],
"subject": "Hello World",
"html": "<h1>Welcome!</h1><p>Thanks for signing up.</p>",
"status": "Delivered",
"created_at": "2024-01-15T10:30:00.000000",
"delivered_at": "2024-01-15T10:30:05.000000"
}
Domains
Danh sách domain
Lấy danh sách tất cả domain của tài khoản.
GET /domains
Quyền: read_only, sending_access, or full_access
Query Parameters
| Parameter | Type | Default | Mô tả |
|---|---|---|---|
page |
integer | 1 | Số trang |
per_page |
integer | 20 | Số item mỗi trang (max 100) |
search |
string | — | Search by domain name |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/domains?page=1&per_page=10" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"data": [
{
"id": "dom_123",
"domain": "yourdomain.com",
"status": "verified",
"created_at": "2024-01-15T10:30:00.000000Z"
}
],
"total": 3,
"total_verified": 2,
"page": 1,
"per_page": 10
}
Tạo domain
Thêm domain gửi email mới. Trả về DNS records cần cấu hình để xác minh.
POST /domains
Quyền: full_access
Request Body
| Field | Type | Bắt buộc | Mô tả |
|---|---|---|---|
domain |
string | Yes | Domain name (e.g., yourdomain.com) |
Ví dụ request
curl -X POST https://manage.bizflycloud.vn/email-transactional/api/v1/domains \
-H "X-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{ "domain": "yourdomain.com" }'
Phản hồi 200
{
"id": "dom_123",
"domain": "yourdomain.com",
"status": "pending",
"dns_records": [
{
"type": "TXT",
"name": "@",
"value": "v=spf1 include:_spf.bizflycloud.vn ~all",
"purpose": "spf"
},
{
"type": "MX",
"name": "@",
"value": "capmx-re30.bizflycloud.vn",
"priority": 5,
"purpose": "mx"
},
{
"type": "MX",
"name": "@",
"value": "capmx-re40.bizflycloud.vn",
"priority": 5,
"purpose": "mx"
},
{
"type": "MX",
"name": "@",
"value": "capmx-re20.bizflycloud.vn",
"priority": 15,
"purpose": "mx"
},
{
"type": "TXT",
"name": "dkim._domainkey",
"value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqh...",
"purpose": "dkim"
}
],
"created_at": "2024-01-15T10:30:00.000000Z"
}
Lấy thông tin domain
Lấy chi tiết và trạng thái xác minh DNS theo thời gian thực của domain.
GET /domains/{domain_id}
Quyền: read_only, sending_access, or full_access
Path Parameters
| Parameter | Type | Mô tả |
|---|---|---|
domain_id |
string | Domain ID (format: dom_123) |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/domains/dom_123" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"id": "dom_123",
"domain": "yourdomain.com",
"status": "verified",
"dns_records": [
{
"type": "TXT",
"name": "@",
"value": "v=spf1 include:_spf.bizflycloud.vn ~all",
"purpose": "spf",
"verified": true
},
{
"type": "MX",
"name": "@",
"value": "capmx-re30.bizflycloud.vn",
"priority": 5,
"purpose": "mx",
"verified": true
},
{
"type": "TXT",
"name": "dkim._domainkey",
"value": "v=DKIM1; k=rsa; p=MIIBIjANBgkqh...",
"purpose": "dkim",
"verified": true
}
],
"verified_at": "2024-01-15T12:00:00.000000Z"
}
Xác minh domain
Xác minh DNS records cho domain. Nếu tất cả bản ghi (SPF, MX, DKIM) hợp lệ, domain sẽ được đánh dấu đã xác minh.
POST /domains/{domain_id}/verify
Quyền: full_access
Path Parameters
| Parameter | Type | Mô tả |
|---|---|---|
domain_id |
string | Domain ID (format: dom_123) |
Ví dụ request
curl -X POST "https://manage.bizflycloud.vn/email-transactional/api/v1/domains/dom_123/verify" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"id": "dom_123",
"domain": "yourdomain.com",
"status": "verified",
"dns_records": [
{ "type": "TXT", "name": "@", "value": "v=spf1 ...", "purpose": "spf", "verified": true },
{ "type": "MX", "name": "@", "value": "capmx-re30.bizflycloud.vn", "priority": 5, "purpose": "mx", "verified": true },
{ "type": "TXT", "name": "dkim._domainkey", "value": "v=DKIM1; ...", "purpose": "dkim", "verified": true }
],
"verified_at": "2024-01-15T12:00:00.000000Z"
}
If verification fails, status is "pending" and verified is false on failing records.
Lấy thông tin domain Quota
Lấy quota gửi email và mức sử dụng của domain.
GET /domains/{domain_id}/quota
Quyền: read_only, sending_access, or full_access
Path Parameters
| Parameter | Type | Mô tả |
|---|---|---|
domain_id |
string | Domain ID (format: dom_123) |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/domains/dom_123/quota" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"domain": "yourdomain.com",
"daily_limit": 20000,
"daily_used": 1523,
"daily_remaining": 18477,
"hourly_limit": 833,
"hourly_used": 45,
"hourly_remaining": 788,
"monthly_limit": 600000,
"monthly_used": 32150,
"monthly_remaining": 567850,
"pack_code": "ET20",
"pack_name": "ET20 - Goi khoi dau hoan hao"
}
Xoá domain
Xoá vĩnh viễn domain và toàn bộ bản ghi liên quan (DKIM, sender, tracking settings).
DELETE /domains/{domain_id}
Quyền: full_access
Path Parameters
| Parameter | Type | Mô tả |
|---|---|---|
domain_id |
string | Domain ID (format: dom_123) |
Ví dụ request
curl -X DELETE "https://manage.bizflycloud.vn/email-transactional/api/v1/domains/dom_123" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"id": "dom_123",
"deleted": true
}
Senders
Tạo sender
Tạo sender để gửi email. Bắt buộc phải tạo sender trước khi gửi email từ domain.
POST /senders
Quyền: full_access
Điều kiện tiên quyết:
- Tên miền phải tồn tại và được xác minh thông qua Xác minh domain
Request Body
| Field | Type | Bắt buộc | Mô tả |
|---|---|---|---|
account |
string | Yes | Địa chỉ email người gửi (ví dụ: noreply@yourdomain.com) |
domain |
string | Yes | Tên miền (ví dụ: yourdomain.com). Phải trùng khớp với tên miền của tài khoản. |
password |
string | Yes | Mật khẩu SMTP (tối thiểu 8 ký tự) |
Ví dụ request
curl -X POST https://manage.bizflycloud.vn/email-transactional/api/v1/senders \
-H "X-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"account": "noreply@yourdomain.com",
"domain": "yourdomain.com",
"password": "YourSecurePassword123"
}'
Phản hồi 200
{
"id": "42",
"account": "noreply@yourdomain.com",
"domain": "yourdomain.com",
"active": true,
"daily_limit": 500,
"hourly_limit": 50,
"created_at": "2024-01-15T10:30:00.000000Z"
}
API Keys
Tạo API Key
Tạo API key mới. Key đầy đủ chỉ trả về một lần duy nhất — hãy lưu trữ an toàn.
POST /api-keys
Quyền: full_access
Request Body
| Field | Type | Bắt buộc | Mô tả |
|---|---|---|---|
name |
string | Yes | Tên mô tả cho khóa API |
permission |
string | No | Mức độ quyền hạn: full_access (mặc định), sending_access, read_only |
expires_in_days |
integer | No | Hạn sử dụng (ngày): 7, 30, 60, 90, 180, 365. Bỏ qua nếu không có hạn sử dụng. |
Ví dụ request
curl -X POST https://manage.bizflycloud.vn/email-transactional/api/v1/api-keys \
-H "X-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Production Server",
"permission": "sending_access",
"expires_in_days": 365
}'
Phản hồi 200
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production Server",
"key": "etrans_abc123xyz...",
"permission": "sending_access",
"expires_at": "2025-01-15T10:30:00.000000Z",
"created_at": "2024-01-15T10:30:00.000000Z"
}
Danh sách API Key
List all active API keys. For security, the full key value is never shown after creation.
GET /api-keys
Quyền: read_only, sending_access, or full_access
Query Parameters
| Parameter | Type | Default | Mô tả |
|---|---|---|---|
page |
integer | 1 | Số trang |
per_page |
integer | 20 | Số item mỗi trang (max 100) |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/api-keys?page=1&per_page=10" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production Server",
"key": "etrans_...xyz",
"permission": "sending_access",
"expires_at": "2025-01-15T10:30:00.000000Z",
"is_expired": false,
"created_at": "2024-01-15T10:30:00.000000Z"
}
],
"total": 3,
"page": 1,
"per_page": 10
}
Lấy thông tin API Key
Get details of a specific API key.
GET /api-keys/{key_id}
Quyền: read_only, sending_access, or full_access
Path Parameters
| Parameter | Type | Mô tả |
|---|---|---|
key_id |
string | API key ID |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/api-keys/550e8400-e29b-41d4-a716-446655440000" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production Server",
"permission": "sending_access",
"expires_at": "2025-01-15T10:30:00.000000Z",
"is_expired": false,
"active": true,
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-15T10:30:00.000000Z"
}
Xoá API Key
Revoke an API key. This is permanent — applications using this key will stop authenticating immediately.
DELETE /api-keys/{key_id}
Quyền: full_access
Path Parameters
| Parameter | Type | Mô tả |
|---|---|---|
key_id |
string | ID khóa API cần thu hồi |
Ví dụ request
curl -X DELETE "https://manage.bizflycloud.vn/email-transactional/api/v1/api-keys/550e8400-e29b-41d4-a716-446655440000" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"deleted": true
}
Logs
Danh sách log transaction
Lấy log gửi email cho tất cả domain thuộc người dùng đã xác thực.
GET /logs
Quyền: read_only, sending_access, or full_access
Query Parameters
| Parameter | Type | Default | Mô tả |
|---|---|---|---|
page |
integer | 1 | Số trang |
per_page |
integer | 20 | Số item mỗi trang (max 100) |
log_after |
string | — | Lọc nhật ký sau mốc thời gian này (ISO-8601 UTC) |
log_before |
string | — | Lọc nhật ký trước mốc thời gian này (ISO-8601 UTC) |
action |
string | — | Lọc theo hành động: delivered, deferred, rejected, bounced, sender, queue |
sender |
string | — | Lọc theo email người gửi |
recipient |
string | — | Lọc theo địa chỉ email người nhận |
message_id |
string | — | Lọc theo ID tin nhắn |
source |
string | — | Lọc theo nguồn: api, smtp (phân cách bằng dấu phẩy) |
sorts |
string | -timestamp |
Sắp xếp theo trường có tiền tố chỉ hướng (- để sắp xếp giảm dần) |
Ví dụ request
curl -X GET "https://manage.bizflycloud.vn/email-transactional/api/v1/logs?page=1&per_page=10&action=delivered&source=api" \
-H "X-API-KEY: your_api_key"
Phản hồi 200
{
"logs": [
{
"message_id": "550e8400-e29b-41d4-a716-446655440000",
"action": "Delivered",
"sender": "hello@yourdomain.com",
"recipient": "user@example.com",
"timestamp": "2024-01-15T10:30:05.000Z",
"source": "API"
}
],
"total": 156,
"page": 1,
"per_page": 10,
"stats": [
{ "label": "Delivered", "count": 120, "percentage": 76.9 },
{ "label": "Delayed", "count": 25, "percentage": 16.0 },
{ "label": "Bounced", "count": 11, "percentage": 7.1 }
]
}