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"에서 확인할 수 있어요.

더 알아보기 (Learn more)