Resend CLI 소개
Resend CLI는 개발자를 위해 만들어진 이메일 플랫폼 Resend의 공식 명령줄 도구입니다. 다음 명령어로 설치할 수 있습니다:
npm install -g resend-cli
또는
brew install resend/cli/resend
설치 후, 아래와 같이 인증을 진행하세요:
resend login
이후 터미널이나 CI/CD 파이프라인에서 이메일을 발송하고, 도메인을 관리하며, 전체 이메일 인프라를 자동화할 수 있습니다.
Resend란 무엇인가요?
Resend는 개발자를 위한 이메일 API입니다. 도메인을 연결하고 API 키를 받아 애플리케이션에서 트랜잭션 이메일(비밀번호 재설정, 주문 확인, 온보딩 등)을 쉽게 발송할 수 있습니다.
2026년 3월 13일, 설립자 Zeno Rocha가 Resend CLI를 출시하여 동일한 인프라를 터미널에 제공합니다. CLI는 13개 리소스, 53개 명령을 지원하며, TypeScript로 작성되어 MIT 라이선스 하에 오픈 소스입니다.
CLI 활용 대상별 특징
- 사람: 대화형 프롬프트, 테이블 출력, 자연어 스케줄링(예: "내일 오전 9시")
- AI 에이전트: JSON 출력, 멱등성 키, 자동 에이전트 감지
- CI/CD: 환경 변수 인증, 스크립트 플래그, 일관된 종료 코드
💡 이메일을 보내는 앱을 개발 중이라면, 실제 프로덕션 이전에 API 호출을 테스트해야 합니다. Apidog는 Resend 이메일 API 등 REST API를 별도의 코드 없이 시각적으로 테스트할 수 있는 무료 툴입니다. OpenAPI 사양을 가져오고, 환경을 구성해 테스트 스위트를 간편하게 실행할 수 있습니다.
Resend CLI 설치하기
환경에 따라 다음 네 가지 설치 방법 중 하나를 선택하세요.
cURL을 통한 설치 (독립 실행형 / Node.js 불필요)
curl -fsSL https://resend.com/install.sh | bash
- OS별 바이너리를 자동 다운로드 및 PATH에 추가합니다.
- Node.js 불필요.
npm을 통한 설치
npm install -g resend-cli
- Node.js 20 이상 필요.
- 설치 후 동작 확인:
resend --version
Homebrew를 통한 설치 (macOS, Linux)
brew install resend/cli/resend
- macOS에서 가장 권장되는 방식.
- Homebrew가 자동으로 업데이트 관리.
PowerShell을 통한 설치 (Windows)
irm https://resend.com/install.ps1 | iex
- 또는 GitHub 릴리스 페이지에서
.exe바이너리 직접 다운로드.
로컬 개발 및 기여
Node.js 20+와 pnpm 필요. 소스 코드에서 직접 빌드하려면:
git clone https://github.com/resend/resend-cli.git
cd resend-cli
pnpm install
pnpm build # ./dist/cli.cjs 생성
pnpm build:bin # 네이티브 바이너리 ./dist/resend
계정 인증하기
CLI에서 계정 연결을 위해 다음을 실행하세요.
resend login
- 브라우저가 열리며, Resend 대시보드에서 API 키 생성 안내.
- 자격 증명은
~/.config/resend/credentials.json에 0600 권한으로 저장.
비대화형 환경(CI/CD 등)
브라우저 인증 없이 키를 직접 전달:
resend login --key re_xxxxxxxxxxxxx
- 인증 후, 모든 명령에서 재인증 필요 없음.
- API 키 확인 순서:
-
--api-key플래그 -
RESEND_API_KEY환경 변수 - 저장된 자격 증명 파일
-
CI에서 환경 변수 활용:
RESEND_API_KEY=re_xxx resend emails send --from builds@yourco.com --to dev@yourco.com --subject "Build passed" --text "All tests green."
다중 계정 지원
여러 조직/팀 간 전환:
resend auth switch
또는 특정 프로필 사용:
resend <command> --profile production
첫 이메일 보내기
이메일 전송 기본 명령은 resend emails send 입니다.
일반 텍스트 이메일 보내기
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."
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>"
또는 로컬 HTML 파일 지정:
resend emails send \
--from "team@yourco.com" \
--to user@example.com \
--subject "Welcome aboard" \
--html-file ./templates/welcome.html
전송 예약하기
자연어 시간 또는 ISO 8601 지원:
resend emails send \
--from "you@yourco.com" \
--to user@example.com \
--subject "Scheduled check-in" \
--text "Just checking in." \
--schedule "tomorrow at 9am"
- "1시간 후", "다음 주 월요일 오후 3시" 등도 가능.
이메일 ID 캡처
파이프 시 JSON 출력. jq로 후처리:
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"
예약 이메일 취소/업데이트
resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "next Monday at 10am"
최근 이메일 목록 확인
resend emails list
최대 100개 이메일 일괄 전송
- 이메일 객체 배열을 emails.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!" }
]
- 일괄 전송:
resend emails send-batch --file emails.json
- 한 번의 API 호출로 100개까지 전송(요율 제한에 유리).
도메인 및 API 키 관리
도메인 추가
resend domains create --name yourdomain.com --region us-east-1
- 지원 리전:
us-east-1,eu-west-1,sa-east-1,ap-northeast-1.
DNS 레코드 확인/검증
도메인 등록 후, DNS(SPF, DKIM, DMARC) 추가 → 검증:
resend domains verify --id <domain-id>
상태 확인:
resend domains get --id <domain-id>
추적 및 TLS 설정
resend domains configure --id <domain-id>
- 오픈/클릭 추적, 사용자 지정 DKIM 설정 가능.
등록된 도메인 목록
resend domains list
API 키 관리
각 서비스/환경별 범위 지정 키 생성 권장:
resend api-keys create # 대화형 생성 및 범위 지정
resend api-keys list
resend api-keys delete --id <key-id>
- 한 도메인에 범위 지정된 키는 다른 도메인/계정 설정 접근 불가.
고급 기능: 브로드캐스트, 웹훅, 템플릿
브로드캐스트
대량 이메일 발송 워크플로:
resend broadcasts create # 초안 생성(대화형)
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "next Monday at 10am"
웹훅
실시간 이메일 이벤트 수신:
resend webhooks create
resend webhooks list
로컬에서 웹훅 테스트:
resend webhooks listen --forward-to http://localhost:3000/webhooks/resend
- email.sent 등 17종 이벤트 지원.
템플릿
반복적으로 쓰는 이메일을 동적 변수와 함께 작성:
resend templates create # 대화형 템플릿 빌더
- 변수:
{{variable_name}}문법.
연락처 및 대상 관리
마케팅 이메일용 연락처 관리:
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
진단 실행
환경 진단:
resend doctor
- CLI 버전, API 키, 도메인 인증, AI 코딩 에이전트 감지 등 체크.
CI/CD 파이프라인에서 Resend CLI 사용하기
자동화 환경에서 CLI 활용을 위한 주요 패턴:
기계 판독 가능한 출력
JSON 출력 사용:
resend emails send --from a@co.com --to b@co.com --subject "Deploy" --text "Done" --json
--quiet 플래그로 비데이터 출력 억제:
resend emails list --quiet | jq '.[0].id'
파괴적 작업 자동 확인
스크립트에서 확인 프롬프트 생략:
resend api-keys delete --id <key-id> --yes
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."
요율 제한
- 초당 2회 요청 (팀 전체 API 키 기준)
- 대량 전송은
send-batch로 처리 권장.
Apidog로 이메일 API 테스트하기
Resend CLI는 빠른 대화형 테스트에 적합하지만, REST API 직접 연동 시 Apidog 무료 API 클라이언트를 활용하면 다음과 같이 생산성을 높일 수 있습니다.
- API 사양 가져오기: Resend 문서에서 OpenAPI 사양을 Apidog로 임포트
-
환경 설정: 개발/운영 환경별로
RESEND_API_KEY등 변수 관리, 요청 시{{RESEND_API_KEY}}참조 -
전송 로직 테스트:
POST /emails에 정확한 페이로드로 요청, 응답/오류 검증 - 테스트 자동화: 테스트 러너로 여러 API 호출 시나리오 작성, 코드 없이 상태 확인
Apidog와 Resend CLI를 연동해 빠른 터미널 작업과 체계적인 API 테스트 환경을 동시에 구축할 수 있습니다.
Resend 가격 정책
CLI는 무료/오픈 소스입니다. Resend 플랫폼 요금제는 다음과 같습니다:
| 플랜 | 가격 | 월별 이메일 | 일일 제한 | 로그 보존 |
|---|---|---|---|---|
| 무료 | $0/월 | 3,000 | 100/일 | 1일 |
| Pro | $20/월 | 50,000 | 제한 없음 | 3일 |
| Scale | $90/월 | 100,000 | 제한 없음 | 7일 |
| Enterprise | 맞춤형 | 맞춤형 | 맞춤형 | 맞춤형 |
무료 등급 주의사항:
- 일 100개 제한: 테스트, 소규모용. 프로덕션용은 Pro 이상 필요.
- 분석(열림/클릭 추적): 유료 플랜에서만 지원.
- 로그 보존 1일: 24시간 이후 이메일 상태 조회 불가.
- 모든 플랜 요율 제한: 초당 2회(팀 전체 공유).
- 유료 플랜 초과 사용: 월 한도의 5배로 제한.
전용 IP는 Scale 플랜에서 월 $30 추가, 일일 500개 이상 발송 시 사용 가능.
자주 묻는 질문
Q: Resend CLI 설치에 Node.js가 필수인가요?
A: cURL/Homebrew 설치는 Node.js 불필요. npm 설치만 Node.js 20+ 필요.
Q: 아무 이메일 주소에서나 발송할 수 없는 이유?
A: 인증된 도메인만 허용. 도메인 소유, DNS(SPF, DKIM, DMARC) 등록 필수. Gmail 등 무료 메일 불가.
Q: 무료 플랜에서도 모든 주소로 보낼 수 있나요?
A: 네. 수신자 제한 없음. 월 3,000건/일 100건 제한.
Q: 자연어 스케줄링 방식은?
A: "내일 오전 9시", "2시간 후" 등 문구나 ISO 8601 포맷 인식. 별도 지정 없으면 시스템 로컬 타임존.
Q: 출력을 파이프하면?
A: 파이프 감지 시 자동으로 JSON 전용 출력. --json 명시 불필요.
Q: 여러 Resend 계정 CLI 사용법?
A: 여러번 resend login(다른 프로필 저장), resend auth switch로 전환하거나, 각 명령에 --profile <name> 지정.
Q: Resend CLI 오픈 소스 여부?
A: 네, MIT 라이선스, github.com/resend/resend-cli에서 확인 가능.
Q: --quiet와 --json 차이?
A: 둘 다 JSON 출력. --json은 JSON 강제, --quiet는 스피너/진행 표시 등 비데이터 출력 억제. 실제 출력은 동일.
Top comments (0)