Resend CLI là công cụ dòng lệnh chính thức của Resend, nền tảng email dành cho lập trình viên. Bạn có thể cài đặt nhanh bằng npm install -g resend-cli hoặc brew install resend/cli/resend, xác thực qua resend login, và sau đó gửi email, quản lý domain, tự động hóa hạ tầng email ngay từ terminal hoặc pipeline CI/CD.
Resend là gì?
Resend là một API email cho developer: kết nối domain, lấy API key, gửi các email giao dịch (transactional) như đặt lại mật khẩu, xác nhận đơn hàng, onboarding... thông qua REST API.
Ngày 13/03/2026, Zeno Rocha đã giới thiệu Resend CLI với 53 lệnh trên 13 resource, viết bằng TypeScript mã nguồn mở MIT, phục vụ 3 nhóm đối tượng:
- Con người: giao diện tương tác, bảng kết quả dễ đọc, lập lịch kiểu tự nhiên ("tomorrow at 9am")
- AI agent: xuất JSON, khóa idempotency, tự động phát hiện agent
- CI/CD pipeline: xác thực qua biến môi trường, flag scriptable, mã thoát ổn định
💡
Nếu bạn xây dựng ứng dụng gửi email, bạn cần kiểm thử các API call trước khi production. <a href="https://apidog.com/?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation">Apidog</a> cung cấp giao diện trực quan, miễn phí để test REST API, bao gồm API email Resend, mà không cần code. Nhập OpenAPI spec, cấu hình môi trường, chạy test suite, tất cả tại một nơi.
Cài đặt Resend CLI
Có bốn cách cài đặt. Chọn cách phù hợp với môi trường của bạn:
Qua cURL (file thực thi độc lập, không cần Node.js)
curl -fsSL https://resend.com/install.sh | bash
Lệnh này tải binary phù hợp với OS của bạn vào PATH. Không cần Node.js.
Qua npm
npm install -g resend-cli
Yêu cầu Node.js 20+. Xác nhận cài đặt:
resend --version
Qua Homebrew (macOS, Linux)
brew install resend/cli/resend
Homebrew tự động update CLI.
Qua PowerShell (Windows)
irm https://resend.com/install.ps1 | iex
Có thể tải file .exe từ GitHub Releases.
Phát triển cục bộ
Đóng góp hoặc build từ nguồn cần Node.js 20+ và pnpm:
git clone https://github.com/resend/resend-cli.git
cd resend-cli
pnpm install
pnpm build # Tạo ./dist/cli.cjs
pnpm build:bin # Binary native tại ./dist/resend
Xác thực tài khoản
Kết nối CLI với tài khoản Resend:
resend login
Làm theo hướng dẫn trên trình duyệt, tạo API key, CLI lưu vào ~/.config/resend/credentials.json với quyền chỉ bạn đọc.
Script/CI dùng khóa trực tiếp:
resend login --key re_xxxxxxxxxxxxx
CLI ưu tiên khóa theo thứ tự:
-
--api-key(flag dòng lệnh) - Biến môi trường
RESEND_API_KEY - File credential đã lưu
Trong CI, set RESEND_API_KEY:
RESEND_API_KEY=re_xxx resend emails send --from builds@yourco.com --to dev@yourco.com --subject "Build passed" --text "All tests green."
Đa tài khoản
Chuyển giữa nhiều profile mà không cần logout:
resend auth switch
Chạy lệnh với profile cụ thể:
resend <command> --profile production
Gửi email đầu tiên
Dùng lệnh resend emails send với các tham số bắt buộc:
Email văn bản thuần túy
resend emails send \
--from "you@yourdomain.com" \
--to recipient@example.com \
--subject "Hello from the CLI" \
--text "This is a test email sent from the Resend CLI."
Email HTML
resend emails send \
--from "team@yourco.com" \
--to user@example.com \
--subject "Your order is confirmed" \
--html "<h1>Order confirmed</h1><p>Thanks for your purchase.</p>"
Hoặc gửi từ file HTML:
resend emails send \
--from "team@yourco.com" \
--to user@example.com \
--subject "Welcome aboard" \
--html-file ./templates/welcome.html
Lên lịch gửi
resend emails send \
--from "you@yourco.com" \
--to user@example.com \
--subject "Scheduled check-in" \
--text "Just checking in." \
--schedule "tomorrow at 9am"
Chấp nhận "in 1 hour", "next Monday at 3pm" hoặc ISO 8601 timestamp.
Lấy ID email để dùng tiếp
EMAIL_ID=$(resend emails send \
--from a@acme.com \
--to b@acme.com \
--subject "Test" \
--text "Hi" | jq -r '.data.id')
echo "Sent email: $EMAIL_ID"
Hủy hoặc cập nhật email đã lên lịch
resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "next Monday at 10am"
Liệt kê email gần đây
resend emails list
Gửi batch tối đa 100 email
Tạo file JSON:
[
{ "from": "you@yourco.com", "to": "alice@example.com", "subject": "Hi Alice", "text": "Hello!" },
{ "from": "you@yourco.com", "to": "bob@example.com", "subject": "Hi Bob", "text": "Hello!" }
]
Gửi hàng loạt:
resend emails send-batch --file emails.json
Mỗi lần gọi batch tính là một API call (tối đa 100 email/lần).
Quản lý domain và API key
Để gửi email, cần domain đã xác minh:
Thêm domain
resend domains create --name yourdomain.com --region us-east-1
Khu vực: us-east-1, eu-west-1, sa-east-1, ap-northeast-1. Chọn gần user nhất.
Xác minh DNS
Thêm record SPF, DKIM, DMARC theo hướng dẫn, rồi xác minh:
resend domains verify --id <domain-id>
Kiểm tra trạng thái domain:
resend domains get --id <domain-id>
Cấu hình tracking & TLS
resend domains configure --id <domain-id>
Bật open/click tracking, DKIM tuỳ chỉnh.
Liệt kê domain
resend domains list
Quản lý API key
Tạo key phân quyền cho từng môi trường:
resend api-keys create
resend api-keys list
resend api-keys delete --id <key-id>
Key có scope domain, hạn chế truy cập ngoài phạm vi cho phép.
Tính năng nâng cao: broadcast, webhook, template
Broadcasts
Gửi một email tới nhiều contact cùng lúc:
resend broadcasts create
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "next Monday at 10am"
Webhooks
Nhận sự kiện gửi email, bounce, open, click, spam:
resend webhooks create
resend webhooks list
Phát triển local, proxy event về localhost:
resend webhooks listen --forward-to http://localhost:3000/webhooks/resend
Hỗ trợ 17 loại event (email.sent, delivered, bounced, opened, clicked,...)
Templates
Tạo HTML email tái sử dụng với biến động:
resend templates create
Biến sử dụng {{variable_name}}. Tham chiếu template qua ID khi gửi email.
Liên hệ và đối tượng
resend contacts create --audience-id <id> --email user@example.com --first-name "Alice"
resend contacts list --audience-id <id>
resend contacts update --id <contact-id> --unsubscribed false
Chạy chẩn đoán
resend doctor
Kiểm tra phiên bản, API key, domain, phát hiện tác nhân AI (Cursor, Claude Desktop, VS Code, OpenClaw).
Tích hợp Resend CLI vào pipeline CI/CD
Resend CLI tối ưu cho môi trường tự động:
Đầu ra máy đọc được
Pipe hoặc flag --json sẽ xuất JSON:
resend emails send --from a@co.com --to b@co.com --subject "Deploy" --text "Done" --json
Flag --quiet chỉ xuất dữ liệu:
resend emails list --quiet | jq '.[0].id'
Tự động xác nhận lệnh nguy hiểm
resend api-keys delete --id <key-id> --yes
Ví dụ GitHub Actions
- name: Send deployment notification
env:
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
run: |
resend emails send \
--from deploys@yourco.com \
--to team@yourco.com \
--subject "Deploy to production: ${{ github.sha }}" \
--text "Deployed commit ${{ github.sha }} to production."
Giới hạn tốc độ
API Resend: 2 request/giây, chia đều cho mọi API key trong team. Gửi batch nên dùng send-batch (100 email/lần) thay vì for-loop từng lệnh send riêng lẻ.
Kiểm thử API email với Apidog
Resend CLI phù hợp cho thao tác tay và script nhỏ. Nếu backend gọi trực tiếp REST API của Resend, nên kiểm thử endpoint trước khi code ứng dụng.
Apidog là API client miễn phí: gửi HTTP request, test phản hồi, tổ chức test case, thiết lập môi trường cho API key và config khác.
Quy trình tích hợp Resend với Apidog:
- Nhập OpenAPI spec. Tải tài liệu API Resend từ resend.com/docs, nhập vào Apidog để có cái nhìn tổng quan endpoint, schema request/response.
-
Tạo môi trường. Thiết lập môi trường dev/prod, lưu
RESEND_API_KEYdưới dạng biến, sử dụng{{RESEND_API_KEY}}trong request, chuyển đổi chỉ 1 click. -
Kiểm thử gửi email. Trước khi code gửi email từ app, chạy thử endpoint
POST /emailstrong Apidog, kiểm tra phản hồi, ID email, xử lý trường hợp đặc biệt. - Tự động hóa test. Apidog cho phép xâu chuỗi API call và assert giá trị trả về. Có thể test gửi email, lấy ID, xác thực trạng thái... mà không cần tự viết mã kiểm thử.
Giúp phát hiện lỗi tích hợp sớm. Kết hợp Resend CLI (dev local) và Apidog (test API) để tối ưu quy trình.
Bảng giá Resend
CLI miễn phí, mã nguồn mở. Giá nền tảng Resend:
| Gói | Giá | Email hàng tháng | Giới hạn hàng ngày | Thời gian lưu trữ nhật ký |
|---|---|---|---|---|
| Miễn phí | $0/tháng | 3.000 | 100/ngày | 1 ngày |
| Pro | $20/tháng | 50.000 | Không giới hạn | 3 ngày |
| Scale | $90/tháng | 100.000 | Không giới hạn | 7 ngày |
| Enterprise | Tùy chỉnh | Tùy chỉnh | Tùy chỉnh | Tùy chỉnh |
Lưu ý về gói miễn phí:
- Giới hạn 100/ngày, phù hợp kiểm thử và dự án nhỏ, không phù hợp production lớn.
- Theo dõi open/click (analytics) cần gói trả phí.
- Nhật ký email chỉ lưu 1 ngày.
- Rate limit: 2 request/giây/gói, chia cho cả team.
- Vượt quota trên gói trả phí bị giới hạn x5 quota tháng để tránh hóa đơn bất ngờ.
IP dedicated: +$30/tháng (gói Scale), áp dụng khi gửi >500 email/ngày.
Câu hỏi thường gặp
Tôi có cần Node.js để cài Resend CLI?
Không nếu cài qua cURL hoặc Homebrew, vì tải binary độc lập. npm thì cần Node.js 20+.
Tôi không gửi được từ bất kỳ email nào?
Resend chỉ cho phép gửi từ domain đã xác minh. Không thể gửi từ email miễn phí như Gmail.
Có thể gửi đến bất kỳ email nào trên gói miễn phí không?
Có, gói miễn phí không giới hạn người nhận, chỉ giới hạn số lượng gửi/ngày/tháng.
Lập lịch email kiểu tự nhiên hoạt động thế nào?
CLI hiểu các cụm từ như "tomorrow at 9am", "in 2 hours", "next Friday at 3pm", hoặc timestamp ISO 8601. Theo múi giờ máy bạn.
Chuyển pipe thì kết quả ra sao?
CLI tự động xuất JSON, không có spinner hoặc prompt.
CLI hỗ trợ nhiều tài khoản Resend?
Có. Đăng nhập nhiều lần lưu nhiều profile, chuyển với resend auth switch hoặc --profile <tên> trên từng lệnh.
Resend CLI có mã nguồn mở không?
Có, MIT license tại github.com/resend/resend-cli.
Khác biệt --quiet và --json?
Cả hai đều trả JSON, nhưng --quiet tắt mọi output phụ, chỉ còn data thuần.
Top comments (0)