템플릿 목록 조회
connection의 모든 템플릿을 최신순으로, 키셋 페이지네이션으로 돌려줍니다.
본인 키로 워크스페이스에 실제 호출을 실행합니다.
GET /templates
connection의 모든 템플릿을 최신순으로, 키셋 페이지네이션으로 돌려줍니다.
두 가지 엔진
export OE=https://api.openemail.ukexport AUTH="Authorization: Bearer $OPENEMAIL_API_KEY"템플릿은 한 번 저장해 여러 번 보내는 본문이며, 작성자가 아니라 connection에 속합니다. 워크스페이스 키는 동료와 같은 템플릿을 보고, 작성자의 계정을 삭제해도 템플릿은 함께 사라지지 않습니다.
engine: "blocks"는 노드 종류가 @react-email/components의 export(Section, Row, Column, Container, Text, Heading, Button, Link, Img, Hr, Markdown, CodeBlock, CodeInline)이고 props가 해당 컴포넌트 자체의 props인 트리를 저장합니다. 입력 시점에 검증되므로, 잘못된 노드는 나중에 깨진 이메일이 아니라 그것을 쓴 호출에서 422로 드러납니다.
engine: "html"은 이미 가지고 있는 마크업을 저장하며, 버전이 게시될 때 한 번 살균 처리합니다. 템플릿이 자체 저장소에 있는 react-email 컴포넌트라면 이쪽을 쓰세요. 자체 빌드에서 @react-email/render로 컴포넌트를 렌더링한 뒤 그 결과를 POST하면 됩니다. JSX 엔드포인트는 없고 앞으로도 없을 것입니다. 메일 클라이언트가 읽는 것이 HTML이기 때문에 이 API는 HTML을 받으며, 호출자의 컴포넌트를 실행한다면 아무도 필요로 하지 않는 샌드박스를 떠안게 됩니다.
| 선언 위치 | 채우는 주체 | 발송 시 누락되면 |
|---|---|---|
| `slots` | 템플릿을 편집하는 사람 | 슬롯 자체의 default가 렌더링됩니다 |
| `props` | 발송하는 주체 | missing_template_prop, 422이며 메일은 나가지 않습니다 |
둘 다 본문과 제목에서 {{key}} 형태로 적으며, 둘 다 kind(text, url, image)를 가지고 이 값이 치환될 때의 이스케이프 방식을 결정합니다. 아무 데서도 선언하지 않은 키는 게시 시점에 실패하고, 스킴이 http, https, mailto가 아닌 url 값은 렌더링되지 않고 거부됩니다.
게시된 버전은 고정됩니다. 게시된 템플릿의 본문을 편집하면 실제 발송이 해석하는 내용을 바꾸는 대신 새 초안이 만들어지므로, 동료가 문구를 고쳐 써도 이미 코드가 보내고 있는 내용은 달라지지 않고, version을 고정해 두면 그 동료가 게시하더라도 달라지지 않습니다.
예시
templates:read가 필요합니다. limit은 100까지이고, status는 draft, active, archived로 범위를 좁히며, cursor는 불투명한 값이므로 직접 만들지 말고 받은 nextCursor를 그대로 돌려보내세요.
curl "$OE/templates?limit=25&status=active" -H "$AUTH"{ "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은 version 없이 발송할 때 해석되는 버전이고, latestVersion은 그 위에 얹힌 초안입니다. 두 값이 다르다는 것은 누군가 편집만 하고 게시하지 않았다는 뜻입니다. 오류는 아니지만 배포 로그에 드러낼 가치가 있습니다.
목록의 행은 메타데이터입니다. 선언된 slots와 props는 단건 조회에서 돌아오므로, 무엇을 넘겨야 하는지 알아야 할 때는 그 호출을 쓰세요.