domains
Resend API 도메인
Resend API로 메일을 보내기 전에, 보내는 주소로 쓸 **도메인(Domain)**을 먼저 등록해야 해요. 이 문서에서는 POST /domains 엔드포인트로 도메인을 생성하고, 응답으로 돌아오는 SPF·DKIM·트래킹 DNS 레코드를 실제 DNS에 반영해 도메인을 인증(검증)하는 흐름을 다룰게요. 도메인을 인증해야 이메일이 스팸으로 분류되지 않고 정상적으로 발송돼요.
출처: 문서
본문
도메인 생성 API는 POST https://api.resend.com/domains로 호출해요. 최소한 name만 지정하면 되고, 필요에 따라 발송 리전·TLS 정책·수신/발신 기능을 설정할 수 있어요.
1. 도메인 생성하기
cURL로 요청하면 다음과 같아요. Authorization 헤더에 API 키를 넣는 걸 잊지 마세요.
curl -X POST 'https://api.resend.com/domains' \
-H 'Authorization: Bearer ***' \
-H 'Content-Type: application/json' \
-d '{
"name": "example.com"
}'
CLI를 쓴다면 이렇게도 가능해요.
resend domains create --name example.com --region us-east-1
Node.js SDK로는 이렇게 호출해요.
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.domains.create({ name: 'example.com' });
2. 생성 응답과 DNS 레코드
도메인을 만들면 생성된 도메인이 status: "not_started" 상태로 돌아오고, 인증에 필요한 DNS 레코드 목록이 함께 포함되어 있어요. 응답 예시는 이렇습니다.
{
"id": "4dd369bc-aa82-4ff3-97de-514ae3000ee0",
"name": "example.com",
"created_at": "2026-03-28 17:12:02.059593+00",
"status": "not_started",
"open_tracking": true,
"click_tracking": false,
"tracking_subdomain": "links",
"capabilities": {
"sending": "enabled",
"receiving": "disabled"
},
"records": [
{
"record": "SPF",
"name": "send",
"type": "MX",
"ttl": "Auto",
"status": "not_started",
"value": "feedback-smtp.us-east-1.amazonses.com",
"priority": 10
},
{
"record": "SPF",
"name": "send",
"value": "\"v=spf1 include:amazonses.com ~all\"",
"type": "TXT",
"ttl": "Auto",
"status": "not_started"
},
{
"record": "DKIM",
"name": "nhapbbryle57yxg3fbjytyodgbt2kyyg._domainkey",
"value": "nhapbbryle57yxg3fbjytyodgbt2kyyg.dkim.amazonses.com.",
"type": "CNAME",
"status": "not_started",
"ttl": "Auto"
},
{
"record": "DKIM",
"name": "xbakwbe5fcscrhzshpap6kbxesf6pfgn._domainkey",
"value": "xbakwbe5fcscrhzshpap6kbxesf6pfgn.dkim.amazonses.com.",
"type": "CNAME",
"status": "not_started",
"ttl": "Auto"
},
{
"record": "DKIM",
"name": "txrcreso3dqbvcve45tqyosxwaegvhgn._domainkey",
"value": "txrcreso3dqbvcve45tqyosxwaegvhgn.dkim.amazonses.com.",
"type": "CNAME",
"status": "not_started",
"ttl": "Auto"
},
{
"record": "Tracking",
"name": "links.example.com",
"type": "CNAME",
"value": "links1.resend-dns.com",
"ttl": "Auto",
"status": "not_started"
}
],
"region": "us-east-1"
}
응답의 records 배열이 곧 DNS에 등록해야 할 값이에요.
- SPF (MX/TXT) — 이 도메인에서 메일 발송을 승인하는 레코드예요.
send서브도메인의 MX와 TXT 값을 등록하면 돼요. - DKIM (CNAME) — 이메일이 위조되지 않았음을 검증해주는 서명 레코드예요. 총 3개의 CNAME(각각
_domainkey)을 등록해야 해요. - Tracking (CNAME) — 링크/오픈 트래킹용 서브도메인(
links)의 CNAME이에요.
생성한 도메인의 DNS 레코드를 등록했다면, POST /domains/{id}/verify로 **검증(Verify Domain)**을 호출해 인증을 완료할 수 있어요. 모든 레코드가 정상 반영되면 도메인 상태가 verified로 바뀌고 실제 메일 발송을 시작할 수 있어요.
3. Body 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
name |
string (필수) | 생성할 도메인의 이름이에요. |
region |
string | 메일 발송 리전이에요. 기본값은 "us-east-1"이고, 'us-east-1' | 'eu-west-1' | 'sa-east-1' | 'ap-northeast-1' 중에서 선택해요. |
tls |
string | TLS 정책이에요. 기본값은 "opportunistic"이에요. opportunistic은 가능하면 보안 연결을 시도하다가 실패하면 암호화 없이 보내는 방식이고, enforced는 수신 서버가 TLS를 지원하지 않으면 보내지 않는 방식이에요. |
capabilities |
object | 도메인의 발송/수신 기능을 설정해요. 최소 하나는 활성화해야 해요. sending(기본 "enabled")과 receiving(기본 "disabled") 값을 'enabled' | 'disabled'로 지정하면 돼요. |
도메인 상태 타입 전체 목록은 공식 문서의 "See all available domain status types"에서 확인할 수 있어요.