이메일 API

현재 API 래퍼를 아직 출시하지 않았지만, 가까운 시일 내에 출시할 계획입니다. 특정 프로그래밍 언어의 API 래퍼가 출시되면 알림을 받고 싶으시면 api@forwardemail.net으로 이메일을 보내주세요. 그동안에는 애플리케이션에서 아래 권장 HTTP 요청 라이브러리를 사용하거나, 아래 예제처럼 curl을 사용하실 수 있습니다.

언어 라이브러리
Ruby Faraday
Python requests
Java OkHttp
PHP guzzle
JavaScript superagent (우리가 유지관리자임)
Node.js superagent (우리가 유지관리자임)
Go net/http
.NET RestSharp

현재 HTTP 기본 URI 경로는: https://fe.tiamati.email입니다.

모든 엔드포인트는 기본 인증(Basic Authorization)을 사용한 인증이 필요합니다. 두 가지 인증 방법을 지원합니다:

API 키를 "username" 값으로 설정하고 비밀번호는 비워둡니다:

curl https://fe.tiamati.email/v1/account \
  -u API_TOKEN:

API 토큰 뒤의 콜론(:)에 주의하세요 – 이는 기본 인증 형식에서 비밀번호가 비어 있음을 나타냅니다.

별칭 자격 증명 인증 (발신 이메일용)

발신 SMTP 이메일 생성 엔드포인트는 별칭 이메일 주소와 생성된 별칭 비밀번호를 사용한 인증도 지원합니다:

curl -X POST https://fe.tiamati.email/v1/emails \
  -u "alias@yourdomain.com:your_generated_password" \
  -d "to=recipient@example.com" \
  -d "subject=Hello" \
  -d "text=Test email"

이 방법은 이미 SMTP 자격 증명을 사용하는 애플리케이션에서 이메일을 보낼 때 유용하며 SMTP에서 API로의 마이그레이션을 원활하게 합니다.

별칭 전용 엔드포인트

별칭 연락처, 별칭 캘린더, 별칭 메시지, 그리고 별칭 폴더 엔드포인트는 별칭 자격 증명이 필요하며 API 토큰 인증을 지원하지 않습니다.

걱정하지 마세요 – 아래에 예제가 제공되어 있으니 잘 모르실 경우 참고하세요.

오류가 발생하면 API 요청의 응답 본문에 자세한 오류 메시지가 포함됩니다.

코드 이름
200 정상
400 잘못된 요청
401 인증 실패
403 금지됨
404 찾을 수 없음
429 요청 과다
500 내부 서버 오류
501 구현되지 않음
502 잘못된 게이트웨이
503 서비스 이용 불가
504 게이트웨이 시간 초과

Tip

5xx 상태 코드가 발생하면(발생하지 않아야 하지만) api@forwardemail.net로 연락해 주시면 즉시 문제 해결을 도와드리겠습니다.

저희 서비스는 25개 이상의 언어로 번역되어 있습니다. 모든 API 응답 메시지는 API 요청을 하는 사용자의 마지막 감지된 로케일로 번역됩니다. Accept-Language 헤더를 전달하여 이를 재정의할 수 있습니다. 이 페이지 하단의 언어 드롭다운을 사용해 자유롭게 시도해 보세요.

Note

2024년 11월 1일부터 도메인 목록도메인 별칭 목록 API 엔드포인트는 기본적으로 페이지당 최대 결과 수가 1000으로 설정됩니다. 이 동작을 조기에 적용하려면 엔드포인트 쿼리 URL에 추가 쿼리스트링 매개변수로 ?paginate=true를 전달할 수 있습니다.

페이지네이션은 결과 목록을 반환하는 모든 API 엔드포인트에서 지원됩니다.

단순히 쿼리스트링 속성 page (선택적으로 limit)를 제공하세요.

page 속성은 1 이상인 숫자여야 합니다. limit을 제공하는 경우(역시 숫자) 최소값은 10, 최대값은 50입니다(별도 명시가 없는 한).

쿼리스트링 매개변수 필수 여부 타입 설명
page 아니요 숫자 반환할 결과 페이지. 지정하지 않으면 기본값은 1입니다. 1 이상인 숫자여야 합니다.
limit 아니요 숫자 페이지당 반환할 결과 수. 지정하지 않으면 기본값은 10입니다. 1 이상 50 이하의 숫자여야 합니다.
더 많은 결과가 있는지 여부를 결정하기 위해, 다음과 같은 HTTP 응답 헤더를 제공합니다(프로그래밍 방식으로 페이지네이션을 하기 위해 파싱할 수 있습니다):
HTTP Response Header Example Description
X-Page-Count X-Page-Count: 3 사용 가능한 총 페이지 수입니다.
X-Page-Current X-Page-Current: 1 반환된 결과의 현재 페이지입니다(예: page 쿼리스트링 매개변수를 기준으로 함).
X-Page-Size X-Page-Size: 10 반환된 페이지 내 결과의 총 개수입니다(예: limit 쿼리스트링 매개변수 및 실제 반환된 결과를 기준으로 함).
X-Item-Count X-Item-Count: 30 모든 페이지에 걸쳐 사용 가능한 총 항목 수입니다.
Link Link: <https://api.forwardemail.net/v1/emails?page=1>; rel="prev", <https://api.forwardemail.net/v1/emails?page=3>; rel="next", <https://api.forwardemail.net/v1/emails?page=3; rel="last", https://api.forwardemail.net/v1/emails?page=1; rel="first" 예제와 같이 파싱할 수 있는 Link HTTP 응답 헤더를 제공합니다. 이는 GitHub와 유사합니다 (예: 관련 없거나 사용 불가능한 경우 모든 값이 제공되지 않을 수 있습니다. 예를 들어, 다음 페이지가 없으면 "next"가 제공되지 않습니다).

예시 요청:

curl https://fe.tiamati.email/v1/domains/example.com/aliases?page=2&pagination=true \
  -u API_TOKEN:

로그 가져오기

저희 API는 계정의 로그를 프로그래밍 방식으로 다운로드할 수 있도록 합니다. 이 엔드포인트에 요청을 제출하면 계정의 모든 로그를 처리하여 완료 시 첨부파일(Gzip 압축된 CSV 스프레드시트 파일)로 이메일로 보내드립니다.

이를 통해 Cron job이나 저희 Node.js 작업 스케줄링 소프트웨어 Bree를 사용하여 원하는 시점에 로그를 받을 수 있는 백그라운드 작업을 생성할 수 있습니다. 이 엔드포인트는 하루에 10회 요청으로 제한됩니다.

첨부파일 이름은 소문자 형태의 email-deliverability-logs-YYYY-MM-DD-h-mm-A-z.csv.gz이며, 이메일 본문에는 가져온 로그의 간략한 요약이 포함되어 있습니다. 또한 언제든지 내 계정 → 로그에서 로그를 다운로드할 수 있습니다.

GET /v1/logs/download

쿼리스트링 매개변수 필수 타입 설명
domain 아니오 문자열 (FQDN) 완전한 도메인 이름("FQDN")으로 로그를 필터링합니다. 제공하지 않으면 모든 도메인의 모든 로그가 검색됩니다.
q 아니오 문자열 이메일, 도메인, 별칭 이름, IP 주소 또는 날짜(M/Y, M/D/YY, M-D, M-D-YY, 또는 M.D.YY 형식)로 로그를 검색합니다.
bounce_category 아니오 문자열 특정 반송 카테고리(예: blocklist)로 로그를 검색합니다.
response_code 아니오 숫자 특정 오류 응답 코드(예: 421 또는 550)로 로그를 검색합니다.

예시 요청:

curl https://fe.tiamati.email/v1/logs/download \
  -u API_TOKEN:

예시 Cron 작업 (매일 자정):

0 0 * * * /usr/bin/curl https://fe.tiamati.email/v1/logs/download -u API_TOKEN: &>/dev/null

Cron 작업 표현식 구문을 검증하려면 Crontab.guru와 같은 서비스를 사용할 수 있습니다.

예시 Cron 작업 (매일 자정 및 전날 로그 포함):

MacOS용:

0 0 * * * /usr/bin/curl https://fe.tiamati.email/v1/logs/download?q=`date -v-1d -u "+%-m/%-d/%y"` -u API_TOKEN: &>/dev/null

Linux 및 Ubuntu용:

0 0 * * * /usr/bin/curl https://fe.tiamati.email/v1/logs/download?q=`date --date "-1 days" -u "+%-m/%-d/%y"` -u API_TOKEN: &>/dev/null

계정 생성

POST /v1/account

본문 매개변수 필수 타입 설명
email 문자열 (이메일) 이메일 주소
password 문자열 비밀번호

예시 요청:

curl -X POST https://fe.tiamati.email/v1/account \
  -u API_TOKEN: \
  -d "email=user%40gmail.com"

계정 조회

GET /v1/account

예시 요청:

curl https://fe.tiamati.email/v1/account \
  -u API_TOKEN:

계정 업데이트

PUT /v1/account

본문 매개변수 필수 타입 설명
email 아니오 문자열 (이메일) 이메일 주소
given_name 아니오 문자열 이름
family_name 아니오 문자열
avatar_url 아니오 문자열 (URL) 아바타 이미지 링크

예시 요청:

curl -X PUT https://fe.tiamati.email/v1/account \
  -u API_TOKEN: \
  -d "email=user%40gmail.com"

Note

다른 API 엔드포인트와 달리, 이들은 인증에서 "username"이 별칭 사용자 이름과 같고 "password"가 별칭 생성 비밀번호와 같은 Basic Authorization 헤더를 요구합니다. [!WARNING] 이 엔드포인트 섹션은 진행 중이며 (희망컨대) 2024년에 출시될 예정입니다. 그동안은 웹사이트 내비게이션의 "Apps" 드롭다운에서 IMAP 클라이언트를 사용해 주세요.

연락처 목록

GET /v1/contacts

곧 출시 예정

연락처 생성

POST /v1/contacts

곧 출시 예정

연락처 조회

GET /v1/contacts/:id

곧 출시 예정

연락처 업데이트

PUT /v1/contacts/:id

곧 출시 예정

연락처 삭제

DELETE /v1/contacts/:id

곧 출시 예정

Note

다른 API 엔드포인트와 달리, 이들은 인증에서 "username"이 별칭 사용자 이름과 같고 "password"가 별칭 생성 비밀번호와 같은 Basic Authorization 헤더를 요구합니다.

Warning

이 엔드포인트 섹션은 진행 중이며 (희망컨대) 2024년에 출시될 예정입니다. 그동안은 웹사이트 내비게이션의 "Apps" 드롭다운에서 IMAP 클라이언트를 사용해 주세요.

캘린더 목록

GET /v1/calendars

곧 출시 예정

캘린더 생성

POST /v1/calendars

곧 출시 예정

캘린더 조회

GET /v1/calendars/:id

곧 출시 예정

캘린더 업데이트

PUT /v1/calendars/:id

곧 출시 예정

캘린더 삭제

DELETE /v1/calendars/:id

곧 출시 예정

Note

다른 API 엔드포인트와 달리, 이들은 인증에서 "username"이 별칭 사용자 이름과 같고 "password"가 별칭 생성 비밀번호와 같은 Basic Authorization 헤더를 요구합니다.

Warning

이 엔드포인트 섹션은 진행 중이며 (희망컨대) 2024년에 출시될 예정입니다. 그동안은 웹사이트 내비게이션의 "Apps" 드롭다운에서 IMAP 클라이언트를 사용해 주세요.

도메인 설정 지침을 반드시 따르셨는지 확인해 주세요.

이 지침은 FAQ 섹션 IMAP으로 이메일 수신을 지원하나요?에서 확인할 수 있습니다.

메시지 목록 및 검색

GET /v1/messages

곧 출시 예정

메시지 생성

Note

이 작업은 이메일을 전송하지 않습니다 – 단순히 메시지를 메일박스 폴더에 추가하는 것뿐입니다 (예: IMAP APPEND 명령과 유사합니다). 이메일을 보내고 싶다면 아래 아웃바운드 SMTP 이메일 생성을 참조하세요. 아웃바운드 SMTP 이메일을 생성한 후, 이 엔드포인트를 사용해 별칭 메일박스에 복사본을 추가하여 저장할 수 있습니다.

POST /v1/messages

곧 출시 예정

메시지 조회

GET /v1/messages/:id

곧 출시 예정

메시지 업데이트

PUT /v1/messages/:id

곧 출시 예정

메시지 삭제

DELETE /v1/messages:id

곧 출시 예정

Tip

폴더 엔드포인트는 폴더 경로 /v1/folders/:path와 폴더 ID :id를 상호 교환하여 사용할 수 있습니다. 즉, 폴더를 path 또는 id 값으로 참조할 수 있습니다.

Warning

이 엔드포인트 섹션은 진행 중이며 (희망컨대) 2024년에 출시될 예정입니다. 그동안은 웹사이트 내비게이션의 "Apps" 드롭다운에서 IMAP 클라이언트를 사용해 주세요.

폴더 목록

GET /v1/folders

곧 출시 예정

폴더 생성

POST /v1/folders

곧 출시 예정

폴더 조회

GET /v1/folders/:id

곧 출시 예정

폴더 업데이트

PUT /v1/folders/:id

곧 출시 예정

폴더 삭제

DELETE /v1/folders/:id

곧 출시 예정

폴더 복사

POST /v1/folders/:id/copy

곧 출시 예정

도메인 설정 지침을 반드시 따르셨는지 확인해 주세요.

이 지침은 내 계정 → 도메인 → 설정 → 아웃바운드 SMTP 구성에서 확인할 수 있습니다. 도메인으로 아웃바운드 SMTP를 보내려면 DKIM, Return-Path, DMARC 설정이 필요합니다.

발신 SMTP 이메일 한도 조회

이 엔드포인트는 계정별 일일 SMTP 발신 메시지 수에 대한 countlimit을 포함하는 JSON 객체를 반환하는 간단한 엔드포인트입니다.

GET /v1/emails/limit

요청 예시:

curl https://fe.tiamati.email/v1/emails/limit \
  -u API_TOKEN:

발신 SMTP 이메일 목록

이 엔드포인트는 이메일의 message, headers, 또는 rejectedErrors 속성 값을 반환하지 않습니다.

해당 속성과 값을 반환하려면 이메일 ID와 함께 이메일 조회 엔드포인트를 사용하세요.

GET /v1/emails

쿼리스트링 매개변수 필수 여부 타입 설명
q 아니요 문자열 (정규식 지원) 메타데이터로 이메일 검색
domain 아니요 문자열 (정규식 지원) 도메인 이름으로 이메일 검색
sort 아니요 문자열 특정 필드로 정렬 (해당 필드의 역순 정렬은 단일 하이픈 - 접두사 사용). 설정하지 않으면 기본값은 created_at 입니다.
page 아니요 숫자 자세한 내용은 페이지네이션 참고
limit 아니요 숫자 자세한 내용은 페이지네이션 참고

요청 예시:

curl https://fe.tiamati.email/v1/emails?limit=1 \
  -u API_TOKEN:

발신 SMTP 이메일 생성

이메일 생성 API는 Nodemailer의 메시지 옵션 구성을 참고하고 활용합니다. 아래 본문 파라미터에 대해서는 Nodemailer 메시지 구성을 참고하세요.

envelopedkim을 제외하고(이 두 옵션은 자동 설정됨) 모든 Nodemailer 옵션을 지원합니다. 보안상 disableFileAccessdisableUrlAccess 옵션은 자동으로 true로 설정됩니다.

헤더를 포함한 전체 원시 이메일을 raw 단일 옵션으로 전달하거나, 아래 개별 본문 파라미터 옵션을 전달해야 합니다.

이 API 엔드포인트는 헤더에 이모지가 포함된 경우 자동으로 인코딩합니다(예: Subject: 🤓 Hello는 자동으로 Subject: =?UTF-8?Q?=F0=9F=A4=93?= Hello로 변환). 개발자 친화적이고 실수 방지에 중점을 둔 이메일 API를 목표로 합니다.

인증: 이 엔드포인트는 API 토큰 인증별칭 자격 증명 인증을 모두 지원합니다. 자세한 내용은 위의 인증 섹션을 참고하세요.

POST /v1/emails

본문 파라미터 필수 여부 타입 설명
from 아니요 문자열 (이메일) 발신자 이메일 주소 (도메인의 별칭으로 존재해야 함).
to 아니요 문자열 또는 배열 "To" 헤더의 수신자 목록 (쉼표로 구분된 문자열 또는 배열).
cc 아니요 문자열 또는 배열 "Cc" 헤더의 수신자 목록 (쉼표로 구분된 문자열 또는 배열).
bcc 아니요 문자열 또는 배열 "Bcc" 헤더의 수신자 목록 (쉼표로 구분된 문자열 또는 배열).
subject 아니요 문자열 이메일 제목.
text 아니요 문자열 또는 버퍼 메시지의 일반 텍스트 버전.
html 아니요 문자열 또는 버퍼 메시지의 HTML 버전.
attachments 아니요 배열 첨부파일 객체 배열 (Nodemailer의 공통 필드 참고).
sender 아니요 문자열 "Sender" 헤더의 이메일 주소 (Nodemailer의 고급 필드 참고).
replyTo 아니요 문자열 "Reply-To" 헤더의 이메일 주소.
inReplyTo 아니요 문자열 메시지가 회신하는 Message-ID.
references 아니요 문자열 또는 배열 공백으로 구분된 Message-ID 목록 또는 배열.
attachDataUrls 아니요 불리언 true일 경우 메시지 HTML 내용 내 data: 이미지들을 임베디드 첨부파일로 변환.
watchHtml 아니요 문자열 Apple Watch 전용 HTML 메시지 버전 (Nodemailer 문서 기준, 최신 워치는 설정 불필요).
amp 아니요 문자열 AMP4EMAIL 전용 HTML 메시지 버전 (Nodemailer 예시 참고).
icalEvent 아니요 객체 대체 메시지 콘텐츠로 사용할 iCalendar 이벤트 (Nodemailer 캘린더 이벤트 참고).
alternatives 아니요 배열 대체 메시지 콘텐츠 배열 (Nodemailer 대체 콘텐츠 참고).
encoding 아니요 문자열 텍스트 및 HTML 문자열 인코딩 (기본값은 "utf-8", "hex""base64" 인코딩도 지원).
raw 아니요 문자열 또는 버퍼 Nodemailer가 생성하는 메시지 대신 사용할 맞춤형 RFC822 형식 메시지 (Nodemailer 맞춤 소스 참고).
textEncoding 아니요 문자열 텍스트 값에 강제 적용할 인코딩 ("quoted-printable" 또는 "base64" 중 하나). 기본값은 감지된 가장 근접한 값 (ASCII의 경우 "quoted-printable" 사용).
priority 아니요 문자열 이메일 우선순위 ("high", "normal" (기본값), "low" 중 하나). "normal" 값은 우선순위 헤더를 설정하지 않음 (기본 동작). "high" 또는 "low" 설정 시 X-Priority, X-MSMail-Priority, Importance 헤더가 적절히 설정됨.
headers 아니요 객체 또는 배열 추가로 설정할 헤더 필드 객체 또는 배열 (Nodemailer 맞춤 헤더 참고).
messageId 아니요 문자열 "Message-ID" 헤더에 사용할 선택적 Message-ID 값 (설정하지 않으면 기본값이 자동 생성됨 – 값은 RFC2822 규격을 준수해야 함).
date 아니요 문자열 또는 날짜 파싱 후 Date 헤더가 없으면 사용할 선택적 날짜 값, 설정하지 않으면 현재 UTC 문자열 사용. 날짜 헤더는 현재 시간보다 30일 이상 미래일 수 없음.
list 아니요 객체 선택적 List-* 헤더 객체 (Nodemailer 리스트 헤더 참고).

예제 요청 (API 토큰):

curl -X POST https://fe.tiamati.email/v1/emails \
  -u API_TOKEN: \
  -d "from=alias@example.com" \
  -d "to=user%40gmail.com" \
  -d "subject=test" \
  -d "text=test"

예제 요청 (별칭 자격 증명):

curl -X POST https://fe.tiamati.email/v1/emails \
  -u "alias@example.com:GENERATED_PASSWORD" \
  -d "from=alias@example.com" \
  -d "to=user%40gmail.com" \
  -d "subject=test" \
  -d "text=test"

예제 요청 (원시 이메일):

curl -X POST https://fe.tiamati.email/v1/emails \
  -u API_TOKEN: \
  -d "raw=`cat file.eml`"

발신 SMTP 이메일 조회

GET /v1/emails/:id

예제 요청:

curl https://fe.tiamati.email/v1/emails/:id \
  -u API_TOKEN:

발신 SMTP 이메일 삭제

이메일 삭제는 현재 상태가 "pending", "queued", 또는 "deferred" 중 하나일 경우에만 상태를 "rejected"로 설정하며(그 후 큐에서 처리하지 않음) 수행됩니다. 이메일은 생성 및/또는 발송 후 30일이 지나면 자동으로 삭제될 수 있으므로, 클라이언트, 데이터베이스 또는 애플리케이션에 발신 SMTP 이메일 사본을 보관해야 합니다. 원하시면 데이터베이스에서 이메일 ID 값을 참조할 수 있으며, 이 값은 이메일 생성이메일 조회 엔드포인트 모두에서 반환됩니다.

DELETE /v1/emails/:id

예제 요청:

curl -X DELETE https://fe.tiamati.email/v1/emails/:id \
  -u API_TOKEN:

Tip

도메인 이름 /v1/domains/:domain_name을 사용하는 도메인 엔드포인트는 도메인 ID :domain_id와 상호 교환 가능합니다. 즉, 도메인을 name 또는 id 값으로 참조할 수 있습니다.

도메인 목록

Note

2024년 11월 1일부터 도메인 목록도메인 별칭 목록 API 엔드포인트는 페이지당 최대 결과 수가 기본적으로 1000으로 설정됩니다. 이 동작을 조기에 적용하려면 엔드포인트 쿼리 URL에 추가 쿼리 문자열 매개변수로 ?paginate=true를 전달할 수 있습니다. 자세한 내용은 페이지네이션을 참조하세요.

GET /v1/domains

쿼리 문자열 매개변수 필수 유형 설명
q 아니요 문자열 (정규식 지원) 도메인 이름으로 검색
name 아니요 문자열 (정규식 지원) 도메인 이름으로 검색
sort 아니요 문자열 특정 필드로 정렬 (해당 필드의 역순 정렬은 접두사로 단일 하이픈 - 사용). 설정하지 않으면 기본값은 created_at입니다.
page 아니요 숫자 자세한 내용은 페이지네이션 참조
limit 아니요 숫자 자세한 내용은 페이지네이션 참조

예제 요청:

curl https://fe.tiamati.email/v1/domains \
  -u API_TOKEN:

도메인 생성

POST /v1/domains

본문 매개변수 필수 유형 설명
domain 문자열 (FQDN 또는 IP) 완전한 도메인 이름("FQDN") 또는 IP 주소
team_domain 아니요 문자열 (도메인 ID 또는 도메인 이름; FQDN) 이 도메인을 다른 도메인과 동일한 팀에 자동 할당합니다. 즉, 이 도메인의 모든 구성원이 팀 멤버로 할당되며, plan도 자동으로 team으로 설정됩니다. 필요 시 명시적으로 비활성화하려면 "none"으로 설정할 수 있지만, 일반적으로 필요하지 않습니다.
plan 아니요 문자열 (열거형) 플랜 유형 (반드시 "free", "enhanced_protection", 또는 "team" 중 하나여야 하며, 기본값은 "free" 또는 사용자의 현재 유료 플랜)
catchall 아니요 문자열 (구분된 이메일 주소) 또는 불리언 기본 캐치올 별칭 생성 여부, 기본값은 true (true일 경우 API 사용자 이메일 주소를 수신자로 사용, false일 경우 캐치올 생성 안 함). 문자열이 전달되면 줄 바꿈, 공백, 쉼표로 구분된 이메일 주소 목록을 수신자로 사용
has_adult_content_protection 아니요 불리언 이 도메인에서 스팸 스캐너 성인 콘텐츠 보호 기능 활성화 여부
has_phishing_protection 아니요 불리언 이 도메인에서 스팸 스캐너 피싱 보호 기능 활성화 여부
has_executable_protection 아니요 불리언 이 도메인에서 스팸 스캐너 실행 파일 보호 기능 활성화 여부
has_virus_protection 아니요 불리언 이 도메인에서 스팸 스캐너 바이러스 보호 기능 활성화 여부
has_recipient_verification 아니요 불리언 별칭 수신자가 이메일 흐름을 위해 이메일 인증 링크를 클릭해야 하는지 여부에 대한 전역 도메인 기본값
ignore_mx_check 아니요 불리언 도메인 검증 시 MX 레코드 검사를 무시할지 여부. 주로 고급 MX 교환 구성 규칙이 있고 기존 MX 교환을 유지하며 당사로 전달해야 하는 사용자를 위한 옵션
retention_days 아니요 숫자 성공적으로 전달되거나 영구 오류가 발생한 후 발신 SMTP 이메일을 저장할 보존 일수 (0~30 사이 정수). 기본값은 0이며, 이는 보안을 위해 발신 SMTP 이메일이 즉시 삭제 및 편집됨을 의미
bounce_webhook 아니요 문자열 (URL) 또는 불리언 (false) 반송 웹훅을 전송할 선택한 http:// 또는 https:// 웹훅 URL. 발신 SMTP 실패(예: 소프트 또는 하드 실패)에 대한 정보를 포함하는 POST 요청을 이 URL로 전송하여 구독자를 관리하고 발신 이메일을 프로그래밍 방식으로 관리할 수 있음
max_quota_per_alias 아니요 문자열 이 도메인 이름의 별칭에 대한 저장 최대 할당량. bytes에서 파싱할 수 있는 "1 GB"와 같은 값을 입력하세요.

예제 요청:

curl -X POST https://fe.tiamati.email/v1/domains \
  -u API_TOKEN: \
  -d domain=example.com \
  -d plan=free

도메인 조회

GET /v1/domains/example.com

예제 요청:

curl https://fe.tiamati.email/v1/domains/example.com \
  -u API_TOKEN:

도메인 레코드 검증

GET /v1/domains/example.com/verify-records

예제 요청:

curl https://fe.tiamati.email/v1/domains/example.com/verify-records \
  -u API_TOKEN:

도메인 SMTP 레코드 검증

GET /v1/domains/example.com/verify-smtp

예제 요청:

curl https://fe.tiamati.email/v1/domains/example.com/verify-smtp \
  -u API_TOKEN:

도메인 전체 수신 비밀번호 목록

GET /v1/domains/example.com/catch-all-passwords

예제 요청:

curl https://fe.tiamati.email/v1/domains/example.com/catch-all-passwords \
  -u API_TOKEN:

도메인 전체 수신 비밀번호 생성

POST /v1/domains/example.com/catch-all-passwords

Body Parameter 필수 타입 설명
new_password 아니오 String 도메인 전체 수신 비밀번호로 사용할 사용자 지정 새 비밀번호입니다. API 요청 본문에서 이 값을 비워두거나 아예 생략하면 무작위로 생성된 강력한 비밀번호가 발급됩니다.
description 아니오 String 조직 목적의 설명입니다.

예제 요청:

curl BASE_URL/v1/domains/example.com/catch-all-passwords \
  -u API_TOKEN:

도메인 전체 수신 비밀번호 삭제

DELETE /v1/domains/example.com/catch-all-passwords/:token_id

예제 요청:

curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/catch-all-passwords/:token_id \
  -u API_TOKEN:

도메인 업데이트

PUT /v1/domains/example.com

Body Parameter 필수 타입 설명
smtp_port 아니오 String 또는 Number SMTP 포워딩에 사용할 사용자 지정 포트 (기본값은 "25")
has_adult_content_protection 아니오 Boolean 이 도메인에서 스팸 스캐너의 성인 콘텐츠 보호 기능 활성화 여부
has_phishing_protection 아니오 Boolean 이 도메인에서 스팸 스캐너의 피싱 보호 기능 활성화 여부
has_executable_protection 아니오 Boolean 이 도메인에서 스팸 스캐너의 실행 파일 보호 기능 활성화 여부
has_virus_protection 아니오 Boolean 이 도메인에서 스팸 스캐너의 바이러스 보호 기능 활성화 여부
has_recipient_verification 아니오 Boolean 별칭 수신자가 이메일 흐름을 위해 이메일 인증 링크를 클릭해야 하는지 여부에 대한 전역 도메인 기본값
ignore_mx_check 아니오 Boolean 도메인 검증 시 MX 레코드 검사를 무시할지 여부. 주로 고급 MX 교환 구성 규칙이 있고 기존 MX 교환을 유지하며 당사로 포워딩해야 하는 사용자를 위한 설정입니다.
retention_days 아니오 Number 성공적으로 전달되거나 영구 오류가 발생한 후 보관할 아웃바운드 SMTP 이메일의 보관 일수로 0에서 30 사이의 정수입니다. 기본값은 0이며, 이는 아웃바운드 SMTP 이메일이 즉시 삭제 및 편집됨을 의미합니다.
bounce_webhook 아니오 String (URL) 또는 Boolean (false) 반송 웹훅을 보낼 선택한 http:// 또는 https:// 웹훅 URL입니다. 아웃바운드 SMTP 실패(예: 소프트 또는 하드 실패)에 대한 정보를 이 URL로 POST 요청하여 구독자를 관리하고 아웃바운드 이메일을 프로그래밍 방식으로 관리할 수 있습니다.
max_quota_per_alias 아니오 String 이 도메인 이름의 별칭에 대한 최대 저장 용량 할당량입니다. bytes에서 파싱할 수 있는 "1 GB"와 같은 값을 입력하세요.

Example Request:

curl -X PUT https://fe.tiamati.email/v1/domains/example.com \
  -u API_TOKEN:

도메인 삭제

DELETE /v1/domains/:domain_name

Example Request:

curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name \
  -u API_TOKEN:

도메인 초대 수락

GET /v1/domains/:domain_name/invites

Example Request:

curl https://fe.tiamati.email/v1/domains/:domain_name/invites \
  -u API_TOKEN:

도메인 초대 생성

POST /v1/domains/example.com/invites

Body Parameter 필수 유형 설명
email 문자열 (이메일) 도메인 멤버 목록에 초대할 이메일 주소
group 문자열 (열거형) 도메인 멤버십에 사용자를 추가할 그룹 ( "admin" 또는 "user" 중 하나일 수 있음)

Example Request:

curl -X POST https://fe.tiamati.email/v1/domains/example.com/invites \
  -u API_TOKEN: \
  -d "email=user%40gmail.com" \
  -d group=admin

Important

초대받는 사용자가 이미 관리자가 속한 다른 도메인의 승인된 멤버인 경우, 초대는 자동으로 수락되며 이메일이 전송되지 않습니다.

도메인 초대 제거

DELETE /v1/domains/:domain_name/invites

Body Parameter 필수 유형 설명
email 문자열 (이메일) 도메인 멤버 목록에서 제거할 이메일 주소

Example Request:

curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/invites \
  -u API_TOKEN:

도메인 멤버 업데이트

PUT /v1/domains/example.com/members/:member_id

Body Parameter 필수 유형 설명
group 문자열 (열거형) 도메인 멤버십에서 사용자를 업데이트할 그룹 ( "admin" 또는 "user" 중 하나일 수 있음)

Example Request:

curl -X PUT https://fe.tiamati.email/v1/domains/example.com/members/:member_id \
  -u API_TOKEN:

도메인 멤버 제거

DELETE /v1/domains/:domain_name/members/:member_id

Example Request:

curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/members/:member_id \
  -u API_TOKEN:

별칭 비밀번호 생성

이메일로 안내를 보내지 않으면, 성공적인 요청의 JSON 응답 본문에 { username: 'alias@yourdomain.com', password: 'some-generated-password' } 형식으로 사용자 이름과 비밀번호가 포함됩니다.

POST /v1/domains/example.com/aliases/:alias_id/generate-password

Body Parameter 필수 유형 설명
new_password 아니오 문자열 별칭에 사용할 사용자 지정 새 비밀번호입니다. 무작위로 생성된 강력한 비밀번호를 원하면 API 요청 본문에서 이 값을 비워두거나 생략할 수 있습니다.
password 아니오 문자열 기존 IMAP 메일박스 저장소를 삭제하지 않고 비밀번호를 변경할 때 사용하는 기존 별칭 비밀번호입니다 (is_override 옵션을 참조하세요, 기존 비밀번호를 모를 경우).
is_override 아니오 불리언 주의해서 사용하세요: 기존 별칭 비밀번호와 데이터베이스를 완전히 덮어쓰며, 기존 IMAP 저장소를 영구 삭제하고 별칭의 SQLite 이메일 데이터베이스를 완전히 초기화합니다. 기존 메일박스가 연결되어 있다면 가능하면 백업을 하세요.
emailed_instructions 아니오 문자열 별칭 비밀번호와 설정 안내를 보낼 이메일 주소입니다.

Example Request:

curl -X POST https://fe.tiamati.email/v1/domains/example.com/aliases/:alias_id/generate-password \
  -u API_TOKEN:

도메인 별칭 목록

Note

2024년 11월 1일부터 도메인 목록도메인 별칭 목록 API 엔드포인트는 페이지당 최대 결과 수가 기본값으로 1000이 됩니다. 이 동작을 조기에 사용하려면, 엔드포인트 쿼리 URL에 추가 쿼리스트링 매개변수로 ?paginate=true를 전달할 수 있습니다. 자세한 내용은 페이지네이션을 참조하세요.

GET /v1/domains/example.com/aliases

쿼리스트링 매개변수 필수 여부 타입 설명
q 아니요 문자열 (정규식 지원) 이름, 라벨 또는 수신자로 도메인 내 별칭 검색
name 아니요 문자열 (정규식 지원) 이름으로 도메인 내 별칭 검색
recipient 아니요 문자열 (정규식 지원) 수신자로 도메인 내 별칭 검색
sort 아니요 문자열 특정 필드로 정렬 (해당 필드의 역순 정렬은 접두사로 단일 하이픈 - 사용). 설정하지 않으면 기본값은 created_at 입니다.
page 아니요 숫자 자세한 내용은 페이지네이션 참조
limit 아니요 숫자 자세한 내용은 페이지네이션 참조

Example Request:

curl https://fe.tiamati.email/v1/domains/example.com/aliases?pagination=true \
  -u API_TOKEN:

새 도메인 별칭 생성

POST /v1/domains/example.com/aliases

본문 매개변수 필수 여부 타입 설명
name 아니요 문자열 별칭 이름 (제공하지 않거나 빈 값일 경우, 무작위 별칭이 생성됩니다)
recipients 아니요 문자열 또는 배열 수신자 목록 (유효한 이메일 주소, 완전한 도메인 이름("FQDN"), IP 주소 및/또는 웹훅 URL이 줄바꿈/공백/쉼표로 구분된 문자열 또는 배열이어야 하며, 제공하지 않거나 빈 배열일 경우 API 요청을 하는 사용자의 이메일이 수신자로 설정됩니다)
description 아니요 문자열 별칭 설명
labels 아니요 문자열 또는 배열 라벨 목록 (줄바꿈/공백/쉼표로 구분된 문자열 또는 배열이어야 합니다)
has_recipient_verification 아니요 불리언 이메일 흐름을 위해 수신자가 이메일 인증 링크를 클릭하도록 요구 (요청 본문에 명시적으로 설정하지 않으면 도메인 설정을 기본값으로 사용)
is_enabled 아니요 불리언 이 별칭을 활성화 또는 비활성화 여부 (비활성화 시 이메일은 어디로도 라우팅되지 않고 성공 상태 코드를 반환). 값이 전달되면 boolean을 사용해 불리언으로 변환됩니다.
error_code_if_disabled 아니요 숫자 (250, 421, 또는 550) is_enabledfalse일 때 이 별칭으로 들어오는 이메일을 거부하는 코드. 250 (조용히 어디에도 전달하지 않음, 예: 블랙홀 또는 /dev/null), 421 (소프트 거부; 약 5일간 재시도), 550 (영구 실패 및 거부) 중 하나를 선택. 기본값은 250입니다.
has_imap 아니요 불리언 이 별칭에 대해 IMAP 저장소 활성화 여부 (비활성화 시 수신된 이메일은 IMAP 저장소에 저장되지 않음). 값이 전달되면 boolean을 사용해 불리언으로 변환됩니다.
has_pgp 아니요 불리언 별칭의 public_key를 사용하여 IMAP/POP3/CalDAV/CardDAV 암호화 이메일 저장소에 대해 OpenPGP 암호화를 활성화 또는 비활성화 여부
public_key 아니요 문자열 ASCII Armor 형식의 OpenPGP 공개 키 (예시 보기; 예: support@forwardemail.net의 GPG 키). has_pgptrue로 설정된 경우에만 적용됩니다. FAQ에서 종단 간 암호화에 대해 자세히 알아보기.
max_quota 아니요 문자열 이 별칭의 저장소 최대 할당량. 비워두면 도메인의 현재 최대 할당량으로 재설정되며, "1 GB"와 같이 bytes로 파싱 가능한 값을 입력할 수 있습니다. 이 값은 도메인 관리자만 조정할 수 있습니다.
vacation_responder_is_enabled 아니요 불리언 자동 부재중 응답기 활성화 여부
vacation_responder_start_date 아니요 문자열 부재중 응답기 시작 날짜 (활성화되어 있고 시작 날짜가 설정되지 않은 경우 이미 시작된 것으로 간주). MM/DD/YYYY, YYYY-MM-DD 등과 같은 날짜 형식 및 dayjs를 사용한 스마트 파싱을 지원합니다.
vacation_responder_end_date 아니요 문자열 부재중 응답기 종료 날짜 (활성화되어 있고 종료 날짜가 설정되지 않은 경우 종료되지 않고 계속 응답하는 것으로 간주). MM/DD/YYYY, YYYY-MM-DD 등과 같은 날짜 형식 및 dayjs를 사용한 스마트 파싱을 지원합니다.
vacation_responder_subject 아니요 문자열 부재중 응답기 제목(평문), 예: "부재중". 여기서는 striptags를 사용해 모든 HTML을 제거합니다.
vacation_responder_message 아니요 문자열 부재중 응답기 메시지(평문), 예: "2월까지 부재중입니다.". 여기서는 striptags를 사용해 모든 HTML을 제거합니다.

Example Request:

curl -X POST https://fe.tiamati.email/v1/domains/example.com/aliases \
  -u API_TOKEN:

도메인 별칭 조회

도메인 별칭은 id 또는 name 값으로 조회할 수 있습니다.

GET /v1/domains/:domain_name/aliases/:alias_id

Example Request:

curl https://fe.tiamati.email/v1/domains/:domain_name/aliases/:alias_id \
  -u API_TOKEN:

GET /v1/domains/:domain_name/aliases/:alias_name

Example Request:

curl https://fe.tiamati.email/v1/domains/:domain_name/aliases/:alias_name \
  -u API_TOKEN:

도메인 별칭 업데이트

PUT /v1/domains/example.com/aliases/:alias_id

Body Parameter 필수 여부 타입 설명
name 아니요 문자열 별칭 이름
recipients 아니요 문자열 또는 배열 수신자 목록 (유효한 이메일 주소, 완전한 도메인 이름("FQDN"), IP 주소 및/또는 웹훅 URL이 줄바꿈/공백/쉼표로 구분된 문자열 또는 배열이어야 함)
description 아니요 문자열 별칭 설명
labels 아니요 문자열 또는 배열 라벨 목록 (줄바꿈/공백/쉼표로 구분된 문자열 또는 배열이어야 함)
has_recipient_verification 아니요 불리언 이메일이 정상적으로 전달되기 위해 수신자가 이메일 인증 링크를 클릭하도록 요구 (요청 본문에 명시적으로 설정하지 않으면 도메인 설정을 기본값으로 사용)
is_enabled 아니요 불리언 이 별칭을 활성화 또는 비활성화할지 여부 (비활성화 시 이메일은 어디로도 라우팅되지 않고 성공 상태 코드만 반환). 값이 전달되면 boolean을 사용해 불리언으로 변환됨
error_code_if_disabled 아니요 숫자 (250, 421, 또는 550) is_enabledfalse일 때 이 별칭으로 들어오는 이메일을 거부하는 코드. 250 (조용히 어디에도 전달하지 않음, 예: 블랙홀 또는 /dev/null), 421 (소프트 거부; 약 5일간 재시도), 550 (영구 실패 및 거부) 중 하나. 기본값은 250
has_imap 아니요 불리언 이 별칭에 대해 IMAP 저장소를 활성화 또는 비활성화할지 여부 (비활성화 시 수신된 이메일은 IMAP 저장소에 저장되지 않음). 값이 전달되면 boolean을 사용해 불리언으로 변환됨
has_pgp 아니요 불리언 별칭의 public_key를 사용하여 IMAP/POP3/CalDAV/CardDAV 암호화 이메일 저장소에 대해 OpenPGP 암호화를 활성화 또는 비활성화할지 여부
public_key 아니요 문자열 ASCII Armor 형식의 OpenPGP 공개 키 (예시 보기; 예: support@forwardemail.net의 GPG 키). has_pgptrue로 설정된 경우에만 적용됨. FAQ에서 종단 간 암호화에 대해 자세히 알아보기
max_quota 아니요 문자열 이 별칭의 저장 용량 최대 할당량. 비워두면 도메인의 현재 최대 할당량으로 재설정되며, "1 GB"와 같이 bytes로 파싱 가능한 값을 입력할 수 있음. 이 값은 도메인 관리자만 조정 가능
vacation_responder_is_enabled 아니요 불리언 자동 부재중 응답기 활성화 또는 비활성화 여부
vacation_responder_start_date 아니요 문자열 부재중 응답기 시작 날짜 (활성화되어 있고 시작 날짜가 설정되지 않은 경우 이미 시작된 것으로 간주). MM/DD/YYYY, YYYY-MM-DD 등 다양한 날짜 형식을 dayjs를 사용해 스마트하게 파싱하여 지원
vacation_responder_end_date 아니요 문자열 부재중 응답기 종료 날짜 (활성화되어 있고 종료 날짜가 설정되지 않은 경우 종료되지 않고 계속 응답하는 것으로 간주). MM/DD/YYYY, YYYY-MM-DD 등 다양한 날짜 형식을 dayjs를 사용해 스마트하게 파싱하여 지원
vacation_responder_subject 아니요 문자열 부재중 응답기 제목 (평문), 예: "부재중". 모든 HTML은 striptags를 사용해 제거됨
vacation_responder_message 아니요 문자열 부재중 응답기 메시지 (평문), 예: "2월까지 부재중입니다.". 모든 HTML은 striptags를 사용해 제거됨

Example Request:

curl -X PUT https://fe.tiamati.email/v1/domains/example.com/aliases/:alias_id \
  -u API_TOKEN:

도메인 별칭 삭제

DELETE /v1/domains/:domain_name/aliases/:alias_id

Example Request:

curl -X DELETE https://fe.tiamati.email/v1/domains/:domain_name/aliases/:alias_id \
  -u API_TOKEN:

무료 플랜에서도 비용 없이 레코드를 암호화할 수 있습니다. 개인정보 보호는 기능이 아니라 제품의 모든 측면에 본질적으로 내장되어야 합니다. Privacy Guides 토론저희 GitHub 이슈에서 많은 요청을 받아 이를 추가했습니다.

TXT 레코드 암호화

POST /v1/encrypt

Body Parameter 필수 유형 설명
input 문자열 유효한 Forward Email 일반 텍스트 TXT 레코드

Example Request:

curl -X POST https://fe.tiamati.email/v1/encrypt \
  -d "input=user@gmail.com"