아래 수치는 애플리케이션이 현재 통합자에게 노출하는 내용을 반영합니다. HTTPS + JSON을 보낼 수 있는 모든 언어가 이러한 엔드포인트를 호출할 수 있으며, 페이지에는 복사-붙여넣기 예제 스택 여섯 개가 포함되어 있습니다.
5
통합 표면
6
예제 언어
6
사용 패턴
표면: (1) 트랜잭션 발송 REST, (2) 클라이언트 알림 수집 REST, (3) Deliverability Intel REST, (4) SMTP 릴레이(프로토콜, JSON 아님), (5) 아웃바운드 참여 웹훅(Sendarix의 HTTPS POST 수신). GET /api/keys와 같은 대시보드 세션 엔드포인트는 브라우저/세션 흐름이며 X-API-Key 자동화가 아닙니다.
| 표면 | 메커니즘 | 베이스 / 진입 |
|---|---|---|
| 트랜잭션 발송 | POST JSON, 계정 API 키 |
POST /v1/email/send (별칭 /v1/send) |
| 클라이언트 알림 | POST JSON, 발송과 동일한 키 미들웨어 |
POST /v1/alerts/ingest |
| Deliverability Intel | GET/POST JSON, 워크스페이스 전달성 API 키 |
/api/deliverability/v1/* (7개 경로) |
| SMTP 릴레이 | SMTP AUTH(대시보드의 호스트, 포트, 사용자 이름, 비밀번호) | SMTP 릴레이 참조 |
| 참여 웹훅 | HTTPS 엔드포인트가 서명된 POST 수신 | 앱에서 구성 → 웹훅 |
X-API-Key: … 또는 Authorization: Bearer …. 도구용 선택 쿼리 ?api_key=가 지원되지만 헤더를 권장합니다.X-API-Key(워크스코프; Intel/전달성 모니터용으로 발급).Idempotency-Key 헤더.키는 고객 대시보드(API 관리)에서 생성 및 순환됩니다. 제한된 키에 대한 범위 모드는 애플리케이션 내부 범위 정책에 설명되어 있습니다.
POST https://app.sendarix.com/v1/email/send
JSON 본문 필드(명시되지 않은 한 필수):
from — 검증된 발신 주소to — 문자열 또는 주소 배열subjecthtml 및/또는 text — 비어 있지 않은 본문이 하나 이상 필요(일반 텍스트는 HTML에서 파생 가능)to의 모든 주소를 검증하지만 현재 전송 경로는 첫 번째 수신자에게 전달합니다. 여러 고유 전달이 필요하면 수신자당 하나의 요청을 발행하거나(또는 multi-RCTP 워크플로에는 SMTP 사용).성공 응답에는 로그 및 웹훅과 상관관계를 위한 message_id, sx_trace_id 같은 식별자가 포함됩니다.
POST https://app.sendarix.com/v1/alerts/ingest
일반 JSON 필드: event_type, severity(info, warning, critical), source, message, 선택 entity_type, entity_id, context(객체). 전달은 대시보드에 구성된 알림 규칙에 따라 달라집니다.
베이스: /api/deliverability/v1/. 엔드포인트에는 워크스페이스, 클라이언트, 도메인, 블랙리스트 상태, 보고서 생성이 포함됩니다. 모두 전달성 워크스페이스 API 키가 필요합니다.
GET | /workspaces |
GET | /clients |
POST | /clients |
GET | /domains |
POST | /domains |
GET | /blacklists/status |
POST | /reports/generate |
SMTP는 대시보드 자격 증명으로 표준 메일 제출을 사용합니다—레거시 앱 및 MTA에 적합합니다. 참여 웹훅은 전달 및 참여 이벤트를 위해 Sendarix에서 URL로 아웃바운드됩니다(페이로드 및 보안은 제품 페이지 참조).
제공업체 대면 인바운드 웹훅(예: Postal)은 인프라 엔드포인트이며 고객 통합 대상이 아닙니다.
YOUR_API_KEY와 주소를 바꾸세요. 모든 스택에 동일한 JSON.
# Bash — 트랜잭션 발송
curl -sS -X POST 'https://app.sendarix.com/v1/email/send' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Idempotency-Key: order-10042-reset' \
-d '{
"from": "noreply@example.com",
"to": "user@example.com",
"subject": "\ube44\ubc00\ubc88\ud638 \uc7ac\uc124\uc815",
"text": "\uc774 \ub9c1\ud06c\ub97c \uc0ac\uc6a9\ud558\uc5ec \ube44\ubc00\ubc88\ud638\ub97c \uc7ac\uc124\uc815\ud558\uc138\uc694.",
"html": "<p>\uc774 \ub9c1\ud06c\ub97c \uc0ac\uc6a9\ud558\uc5ec \ube44\ubc00\ubc88\ud638\ub97c \uc7ac\uc124\uc815\ud558\uc138\uc694.</p>"
}'// Node 18+ (global fetch)
const res = await fetch('https://app.sendarix.com/v1/email/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'YOUR_API_KEY',
'Idempotency-Key': 'order-10042-reset',
},
body: JSON.stringify({
from: 'noreply@example.com',
to: 'user@example.com',
subject: "비밀번호 재설정",
text: "이 링크를 사용하여 비밀번호를 재설정하세요.",
html: "<p>이 링크를 사용하여 비밀번호를 재설정하세요.<\/p>",
}),
});
console.log(await res.json());# Python 3
import json, urllib.request
req = urllib.request.Request(
'https://app.sendarix.com/v1/email/send',
data=json.dumps({
'from': 'noreply@example.com',
'to': 'user@example.com',
'subject': "비밀번호 재설정",
'text': "이 링크를 사용하여 비밀번호를 재설정하세요.",
'html': "<p>이 링크를 사용하여 비밀번호를 재설정하세요.<\/p>",
}).encode(),
headers={
'Content-Type': 'application/json',
'X-API-Key': 'YOUR_API_KEY',
'Idempotency-Key': 'order-10042-reset',
},
method='POST',
)
with urllib.request.urlopen(req) as r:
print(r.read().decode())<?php
$ch = curl_init('https://app.sendarix.com/v1/email/send');
$payload = json_encode([
'from' => 'noreply@example.com',
'to' => 'user@example.com',
'subject' => '비밀번호 재설정',
'text' => '이 링크를 사용하여 비밀번호를 재설정하세요.',
'html' => '<p>이 링크를 사용하여 비밀번호를 재설정하세요.</p>',
]);\ncurl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: YOUR_API_KEY',
'Idempotency-Key: order-10042-reset',
],
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);// Go
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"from": "noreply@example.com",
"to": "user@example.com",
"subject": "비밀번호 재설정",
"text": "이 링크를 사용하여 비밀번호를 재설정하세요.",
"html": "<p>이 링크를 사용하여 비밀번호를 재설정하세요.<\/p>",
})
req, _ := http.NewRequest("POST", "https://app.sendarix.com/v1/email/send", bytes.NewReader(body))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
req.Header.Set("Idempotency-Key", "order-10042-reset")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
}# Ruby — net/http
require 'json'
require 'net/http'
uri = URI('https://app.sendarix.com/v1/email/send')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req['X-API-Key'] = 'YOUR_API_KEY'
req['Idempotency-Key'] = 'order-10042-reset'
req.body = {
from: 'noreply@example.com',
to: 'user@example.com',
subject: "비밀번호 재설정",
text: "이 링크를 사용하여 비밀번호를 재설정하세요.",
html: "<p>이 링크를 사용하여 비밀번호를 재설정하세요.<\/p>",
}.to_json
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.bodyIdempotency-Key + 본문.X-API-Key를 Authorization: Bearer YOUR_API_KEY로 교체./v1/alerts/ingest로 POST; 라우팅은 UI에서 정책 기반./api/deliverability/v1/*에서 Intel 리소스를 폴링 또는 변경.