Bỏ qua tới phần tài liệu
API

Liệt kê template

Mọi template trên connection, mới nhất trước, phân trang theo keyset.

GETapi.openemail.uk/templates

Chạy lệnh gọi thật với không gian làm việc của bạn, bằng khóa của chính bạn.

GET /templates

Mọi template trên connection, mới nhất trước, phân trang theo keyset.

Hai engine

shell
export OE=https://api.openemail.ukexport AUTH="Authorization: Bearer $OPENEMAIL_API_KEY"

Một template là một phần thân được lưu một lần và gửi nhiều lần, và nó thuộc về CONNECTION chứ không thuộc về người đã viết nó. Một key của workspace nhìn thấy đúng những template mà đồng nghiệp nhìn thấy, và xóa tài khoản của tác giả không kéo chúng đi theo.

engine: "blocks" lưu một cây mà các loại node là các export của @react-email/components (Section, Row, Column, Container, Text, Heading, Button, Link, Img, Hr, Markdown, CodeBlockCodeInline) và props là props của chính các component đó. Nó được kiểm tra ngay khi đi vào, nên một node sai là một 422 trên chính lệnh gọi đã ghi nó, chứ không phải một email hỏng về sau.

engine: "html" lưu markup bạn đã có sẵn, được làm sạch một lần khi phiên bản được xuất bản. Đây là lựa chọn khi template của bạn là các component react-email nằm trong repo của chính bạn: hãy render component bằng @react-email/render trong bản build của bạn rồi gửi kết quả lên. Không có endpoint JSX và sẽ không bao giờ có. API nhận HTML vì HTML là thứ mail client đọc, còn thực thi component của caller chỉ để đổi lấy một sandbox chẳng ai cần.

Khai báo ở đâuAi điềnThiếu khi gửi
`slots`người chỉnh sửa templatedefault của chính slot được render
`props`người gửimissing_template_prop, một 422, và không thư nào được gửi đi

Cả hai đều được viết dạng {{key}} trong phần thân và trong subject, và cả hai đều mang một kind (text, url hoặc image) quyết định giá trị được escape thế nào khi thay thế. Một key không được khai báo ở đâu sẽ hỏng khi xuất bản; một giá trị url có scheme không phải http, https hay mailto bị từ chối thay vì được render.

Một phiên bản đã xuất bản thì bị đóng băng. Sửa phần thân của một template đã xuất bản sẽ tạo ra một bản nháp mới thay vì thay đổi thứ mà các lần gửi đang chạy phân giải ra, nên một đồng nghiệp viết lại nội dung không thể thay đổi thứ code của bạn đang gửi, và ghim version nghĩa là họ cũng không thể thay đổi nó ngay cả khi xuất bản.

Ví dụ

Cần templates:read. limit tối đa 100, status thu hẹp về draft, active hoặc archived, và cursor là giá trị mờ, nên hãy truyền lại nextCursor bạn nhận được thay vì tự dựng.

curl
curl "$OE/templates?limit=25&status=active" -H "$AUTH"
Phản hồi
{  "object": "list",  "data": [    {      "object": "template",      "id": "tpl_9c1f0a4b7e05d3862c1f0a44",      "name": "Order shipped",      "slug": "order-shipped",      "description": null,      "status": "active",      "publishedVersion": 3,      "latestVersion": 4,      "createdAt": "2026-08-01T09:12:44.000Z",      "updatedAt": "2026-08-28T16:03:10.000Z"    }  ],  "hasMore": false,  "nextCursor": null}

publishedVersion là thứ một lần gửi không có version phân giải ra, còn latestVersion là bản nháp nằm trên nó. Hai giá trị khác nhau nghĩa là ai đó đã sửa mà chưa xuất bản. Đó không phải lỗi, và nó đáng được nêu ra trong nhật ký triển khai.

Một dòng chỉ là metadata. slotsprops đã khai báo được trả về từ lần truy xuất, và đó là lệnh gọi cần dùng khi bạn cần biết phải truyền gì.