TL;DR / Jawaban Singkat
API Sent.dm menyediakan satu titik integrasi untuk mengirim pesan bisnis lewat SMS dan WhatsApp. Jika digabungkan dengan Apidog, Anda bisa menyimpan kredensial di environment, menguji permintaan tanpa skrip sekali pakai, memvalidasi payload webhook, dan mendokumentasikan workflow pengiriman pesan di satu tempat.
Pendahuluan
Mayoritas proyek pengiriman pesan sering tersendat pada detail operasional: kunci API, identitas pengirim, ID template, keamanan webhook, aturan channel, dan cara testing tanpa mengirim pesan sungguhan.
Sent.dm menawarkan API pengiriman pesan terintegrasi untuk SMS dan WhatsApp. Dengan satu endpoint, developer bisa mengatur verifikasi akun, channel, pengiriman berbasis template, kontak, webhook, dan playground dashboard untuk testing.
💡 Jika ingin setup lebih efisien, Apidog bisa jadi alat pendamping ideal. Anda dapat mengimpor referensi API Sent, membuat environment reusable untuk x-api-key dan x-sender-id, membangun skenario pengujian (termasuk webhook), serta membagikan koleksi ke tim Anda.
Apa yang Diselesaikan oleh API Sent.dm
Sent.dm dibuat untuk tim yang ingin menjangkau pengguna di banyak channel tanpa perlu integrasi terpisah. Semua kompleksitas pengiriman pesan (SMS, WhatsApp, payload channel, monitoring) dikonsolidasikan dalam satu platform.
Dari dokumentasi resmi:
- Satu base URL API untuk workflow pesan
- Autentikasi header:
x-api-key - Model pengirim:
x-sender-id - Pengiriman pesan berbasis template
- Manajemen kontak & audiens
- Webhook untuk event pengiriman & template
- Routing cerdas & failover di tingkat platform
Ini penting karena sistem pengiriman pesan butuh:
- Payload konsisten
- Reusable template dengan keamanan
- Tracking event: delivered, failed, queued
- Pengujian tanpa membocorkan secret ke frontend
- Dokumentasi yang bisa digunakan developer & QA
Tantangan utamanya:
Aplikasi -> API Pesan -> Aturan Channel -> Event Delivery -> Retry/Status Logic
Jika tiap bagian di tool berbeda, debugging lambat. Solusinya: modelkan seluruh workflow di platform API seperti Apidog sejak awal.
Bagaimana API Sent.dm Bekerja
Sent.dm bertindak sebagai middleware cerdas antara aplikasi Anda dan channel downstream. Anda kirim satu permintaan, Sent memilih jalur terbaik (routing, recipient context, channel availability).
Fokus utama developer: urutan setup & model kredensial.
1. Penyiapan Akun & Kepatuhan
Mulai dengan pembuatan akun, verifikasi KYC, dan setup bisnis. Proses ini wajib karena menyangkut compliance, reputasi pengirim, dan batasan regional.
2. Penyiapan Channel
Ikuti panduan Sent untuk memilih nomor telepon dan menghubungkan WhatsApp Business. Dianjurkan menggunakan nomor sama untuk SMS & WhatsApp untuk konsistensi identitas merek.
3. Template
Template wajib dibuat sebelum mengirim pesan pertama. Artinya, pengiriman berbasis template adalah path utama, bukan edge case.
4. Kredensial API
Kredensial utama:
x-sender-id: YOUR_SENDER_ID
x-api-key: YOUR_API_KEY
Referensi API v3 menekankan x-api-key sebagai header wajib. Selalu verifikasi kebutuhan header untuk endpoint/versi yang Anda gunakan di dashboard Sent.
5. Permintaan Pesan
Endpoint:
POST https://api.sent.dm/v2/messages/phone
Payload contoh:
{
"phoneNumber": "RECIPIENT_PHONE_NUMBER",
"templateId": "TEMPLATE_ID"
}
Implementasi tercepat: setup pengiriman berbasis template, lalu perluas workflow setelah request & delivery bisa diamati dengan andal.
Kirim Permintaan API Sent.dm Pertama Anda
Bangun permintaan yang mudah diuji dan dipelihara.
Contoh cURL
curl -X POST "https://api.sent.dm/v2/messages/phone" \
-H "x-sender-id: YOUR_SENDER_ID" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "RECIPIENT_PHONE_NUMBER",
"templateId": "TEMPLATE_ID"
}'
Contoh JavaScript
const response = await fetch("https://api.sent.dm/v2/messages/phone", {
method: "POST",
headers: {
"x-sender-id": process.env.SENT_SENDER_ID,
"x-api-key": process.env.SENT_API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
phoneNumber: process.env.TEST_PHONE_NUMBER,
templateId: process.env.SENT_TEMPLATE_ID
})
});
if (!response.ok) {
throw new Error(`Sent request failed: ${response.status}`);
}
const data = await response.json();
console.log(data);
Contoh Python
import os
import requests
response = requests.post(
"https://api.sent.dm/v2/messages/phone",
headers={
"x-sender-id": os.environ["SENT_SENDER_ID"],
"x-api-key": os.environ["SENT_API_KEY"],
"Content-Type": "application/json",
},
json={
"phoneNumber": os.environ["TEST_PHONE_NUMBER"],
"templateId": os.environ["SENT_TEMPLATE_ID"],
},
timeout=30,
)
response.raise_for_status()
print(response.json())
Respons sukses: HTTP 200 dan messageId. Tangkap messageId untuk pengujian di Apidog, logging, support workflow, dan webhook reconciliation.
Uji API Sent.dm di Apidog
Apidog bukan hanya runner request; ia memudahkan pengelolaan permintaan, variabel, testing, dokumentasi, & kolaborasi dalam satu workspace.
Langkah 1: Buat Environment Sent
Buat environment di Apidog dengan variabel:
base_url = https://api.sent.dm
sender_id = YOUR_SENDER_ID
api_key = YOUR_API_KEY
template_id = YOUR_TEMPLATE_ID
test_phone = RECIPIENT_PHONE_NUMBER
Manfaat:
- Secret produksi tidak hardcoded.
- Mudah switching antar sandbox/staging/live.
- Tim bisa reuse koleksi dengan credential masing-masing.
Langkah 2: Bangun Permintaan Sekali Saja
Buat permintaan baru di Apidog:
-
Method:
POST -
URL:
{{base_url}}/v2/messages/phone -
Header:
x-sender-id: {{sender_id}}x-api-key: {{api_key}}Content-Type: application/json
- Body:
{
"phoneNumber": "{{test_phone}}",
"templateId": "{{template_id}}"
}
Langkah 3: Tambahkan Assertions
Tambahkan test untuk validasi response:
pm.test("Status is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Response contains a messageId", function () {
const json = pm.response.json();
pm.expect(json.messageId).to.exist;
});
Dengan ini, error halus langsung terdeteksi jika response berubah.
Langkah 4: Ubah Menjadi Skenario
Bangun workflow end-to-end:
- Kirim pesan
- Simpan
messageId - Cek status downstream (jika tersedia)
- Bandingkan event via webhook
Skenario ini memastikan workflow pesan Anda robust dan observable.
Langkah 5: Tambahkan Webhook ke Koleksi
Setelah pengiriman sukses, simpan contoh payload webhook. Dokumentasikan field penting:
{
"field": "message.status",
"messageId": "msg_123",
"status": "delivered",
"channel": "whatsapp"
}
Backend engineer, QA, & support dapat validasi logika hanya dengan membandingkan payload live dengan contoh tersimpan.
Langkah 6: Publikasikan Dokumen Internal
Apidog memungkinkan Anda mem-publish referensi internal yang clean, berisi:
- Header wajib
- Contoh payload
- Respons error
- Event webhook
- Catatan environment
Ini jauh lebih baik daripada share cURL snippet di chat.
Tangani Template, Kontak, & Webhook dengan Benar
Request pertama dengan HTTP 200 hanya awal. Berikut praktik penting:
Template
- Simpan ID template di environment/config
- Label setiap template (tujuan, lokal, status approval)
- Pisahkan template testing vs live
- Dokumentasikan mapping template ke user journey
Simpan contoh permintaan tiap template di Apidog.
Kontak
Walaupun user sudah disimpan internal, objek contact di Sent berguna untuk targeting, template, & history.
Dokumentasikan:
- Sumber kebenaran data
- Normalisasi nomor telepon
- Status opt-in/consent
- Skema perubahan channel
Webhook
Sent menggunakan verifikasi signature HMAC-SHA256 dengan header:
x-webhook-signaturex-webhook-idx-webhook-timestamp
Format: v1,{base64_signature}. Replay protection: window timestamp 5 menit.
Checklist implementasi:
- Baca body mentah
- Verifikasi signature sebelum parsing
- Tolak timestamp expired
- Proses event idempotent
- Ack cepat, kerja berat di background
Contoh Express.js:
import crypto from "crypto";
import express from "express";
const app = express();
app.post("/webhooks/sent", express.raw({ type: "*/*" }), (req, res) => {
const signature = req.header("x-webhook-signature");
const webhookId = req.header("x-webhook-id");
const timestamp = req.header("x-webhook-timestamp");
const secret = process.env.SENT_WEBHOOK_SECRET;
const rawBody = req.body.toString("utf8");
const signedContent = `${webhookId}.${timestamp}.${rawBody}`;
const expected = crypto
.createHmac("sha256", Buffer.from(secret.replace(/^whsec_/, ""), "base64"))
.update(signedContent)
.digest("base64");
if (signature !== `v1,${expected}`) {
return res.status(401).send("Unauthorized");
}
const event = JSON.parse(rawBody);
console.log("Received webhook event:", event.field);
return res.sendStatus(200);
});
Simpan contoh payload webhook di Apidog untuk sinkronisasi lintas tim.
Mengapa Apidog Cocok untuk Workflow Ini
Sent.dm = layer pengiriman pesan.
Apidog = layer workflow di atasnya.
| Tugas | Sent.dm | Apidog |
|---|---|---|
| Kirim SMS & WhatsApp | Ya | Tidak (tapi menguji API-nya) |
| Kelola template & sender setup | Ya | Dokumentasi & validasi permintaan |
| Uji permintaan autentikasi | Dasar | Request builder, environment, assertion, scenario |
| Share dokumen API ke tim | Ya | Koleksi & dokumen internal |
| Debug permintaan & alur respons | Sebagian | Inspeksi & kolaborasi repeatable |
| Bangun skenario pengujian end-to-end | Fokus delivery | Kuat untuk workflow multi-step & validasi |
Jika tim Anda menguji Sent untuk messaging, Apidog menambah lapisan desain, pengujian, debugging, mock, dan dokumentasi kolaboratif yang tidak ada di Sent.
Manfaat:
- Koleksi permintaan reusable untuk onboarding dev baru
- QA bisa validasi tanpa custom script
- Testing berulang perubahan versi/template/payload webhook
Tips Lanjutan & Kesalahan Umum
Praktik Terbaik
- Simpan kredensial hanya di server-side (jangan expose di client).
- Log
messageIddi aplikasi & support tool. - Pisahkan template staging vs production.
- Verifikasi setiap webhook sebelum proses.
- Gunakan environment Apidog untuk isolasi credential.
Kesalahan Umum
- Menganggap respons
200= sukses final (harusnya baru awal lifecycle event) - Hardcode ID template di banyak service
- Menunda setup sender ID
- Tidak menormalisasi nomor telepon
- Testing pakai credential asli di skrip ad-hoc
Troubleshooting
Jika gagal, cek urutan berikut:
- Apakah
x-api-keyvalid & aktif? - Sudahkah endpoint sesuai versi di dashboard Sent?
- Apakah
x-sender-iddibutuhkan di endpoint itu? - Template sudah approved & tersedia di channel?
- Format nomor telepon sudah benar?
Di Apidog, Anda bisa bandingkan permintaan gagal dengan request tersimpan hanya dalam hitungan detik.
Alternatif & Perbandingan Sent.dm
Pilihan lain:
| Opsi | Kekuatan | Tradeoff |
|---|---|---|
| SMS/WhatsApp provider langsung | Kontrol detail | Integrasi & maintenance lebih rumit |
| Ekosistem Twilio | Ekosistem luas | Orkestrasi multi-channel lebih kompleks |
| Sent.dm | Workflow unified, channel abstraction | Bergantung pada konvensi & struktur dokumen Sent |
| Sent.dm + Postman | Workflow testing familiar | Dokumentasi & kolaborasi workflow tetap terfragmentasi |
| Sent.dm + Apidog | Unified messaging + workflow API, dokumentasi tim | Butuh dua tools |
Gabungkan platform messaging dengan alat kolaborasi API yang kuat. Jika sudah pakai Postman, alasan pilih Apidog: environment, dokumen tersimpan, assertion, mock, & workflow tim di satu workspace.
Kesimpulan
Sent.dm cocok untuk tim yang mau satu platform untuk SMS & WhatsApp, tanpa integrasi channel terpisah. Value utama: Anda bisa membangun di sekitar template, pengirim, kontak, dan webhook secara terstruktur.
Mulai dari satu request Sent di Apidog, tambahkan assertion untuk messageId, dokumentasikan webhook contract, dan workflow Anda jadi jauh lebih repeatable dan siap produksi.
FAQ
Untuk apa API Sent.dm digunakan?
API Sent.dm digunakan untuk pengiriman pesan bisnis di channel SMS & WhatsApp dengan satu integrasi. Mendukung setup pengirim, template, kontak, dan webhook event.
Apakah Sent.dm mendukung WhatsApp dan SMS dalam satu API?
Ya. Sent adalah API unified yang mengabstraksi kompleksitas channel. Disarankan juga memakai nomor telepon yang sama untuk SMS & WhatsApp.
Header apa yang dibutuhkan untuk request API Sent.dm?
x-api-key wajib, x-sender-id juga digunakan di permintaan pesan. Periksa endpoint & versi di akun Sent Anda.
Apakah template wajib sebelum kirim pesan dengan Sent.dm?
Ya, sesuai panduan onboarding. Template harus dibuat dulu, lalu kirim pesan memakai templateId.
Bagaimana cara menguji API Sent.dm tanpa skrip custom?
Apidog sangat cocok: simpan credential sebagai variabel, build request, tambahkan assertion, buat skenario, dokumentasikan webhook, dan publish API doc ke tim.
Bagaimana mengamankan webhook Sent.dm?
Verifikasi HMAC signature, validasi timestamp, dan proses event idempotent. Gunakan header: x-webhook-signature, x-webhook-id, x-webhook-timestamp.
Apakah Sent.dm cukup sendiri untuk workflow API tim?
Sent menyediakan platform messaging, tapi untuk pengujian, dokumentasi, & validasi berulang, tim tetap butuh alat kolaborasi API seperti Apidog.
Apidog — Coba hari ini untuk workflow API pengiriman pesan yang lebih repeatable dan kolaboratif.


Top comments (0)