REST API & OpenAPI 3.1 Hub
Koneksikan backend, CRM, bot pesan instan, atau otomasi kustom Anda ke server NextPost. Mendukung pembuatan postingan, penjadwalan multi-platform, analitik, serta webhook status pengiriman real-time.
Endpoints Explorer & Interactive Test Console
Pilih endpoint di bawah, sesuaikan parameter, dan jalankan request langsung dari browser.
/api/postsDaftar semua post
Ambil semua post milik user yang sedang login. Mendukung filter berdasarkan status, platform, dan rentang tanggal.
Authorization: Bearer npk_... pada setiap request. Token dapat dibuat di Dashboard β Setting β API.statusquerystringFilter status: draft | scheduled | processing | published | failed | cancelled
platformquerystringFilter platform: twitter | instagram | facebook | linkedin | pinterest | tiktok | youtube | threads
from_datequerydatetimeFilter dari tanggal (ISO 8601)
to_datequerydatetimeFilter sampai tanggal (ISO 8601)
limitquerynumberJumlah data per halaman (default: 50, max: 100)
offsetquerynumberOffset untuk paginasi (default: 0)
curl -X GET "https://api.nextpost.id/api/posts" \
-H "Authorization: Bearer npk_YOUR_API_KEY"{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"user_id": "user_xxx",
"content": "Halo dari NextPost! π #socialmedia",
"media_urls": [],
"platform": "instagram",
"social_account_id": "660e8400-e29b-41d4-a716-446655440111",
"scheduled_at": "2026-04-01T08:00:00.000Z",
"published_at": null,
"status": "scheduled",
"platform_options": {},
"retry_count": 0,
"created_at": "2026-03-25T09:00:00.000Z"
}
],
"meta": { "total": 1, "limit": 50, "offset": 0 }
}Opsi Parameter Spesifik Platform (platform_options)
Kirim objek ini di field platform_options saat membuat postingan untuk mengaktifkan fitur khusus platform (Reels, Threads, Polls, dll.).
Twitter / X
TWEET, THREADpost_type:Tipe postreply_to:Tweet ID yang akan dibalasthread_tweets:List teks tweet untuk thread (jika post_type = THREAD)"platform_options": {
"twitter": {
"post_type": "THREAD",
"thread_tweets": [
"1/ Konsistensi adalah kunci utama.",
"2/ Gunakan visual yang menarik.",
"3/ Jadwalkan di waktu prime time."
]
}
}post_type:Tipe postlocation_id:ID lokasi Facebook/Instagramlocation_name:Nama lokasi untuk ditampilkan"platform_options": {
"instagram": {
"post_type": "REEL",
"location_name": "Jakarta, Indonesia"
}
}post_type:Tipe postpage_id:ID Facebook Page tujuantarget_audience:Visibilitas post"platform_options": {
"facebook": {
"post_type": "FEED",
"page_id": "123456789012345",
"target_audience": "PUBLIC"
}
}TikTok
VIDEOpost_type:Tipe postpublish_type:DIRECT_POST = publish langsung Β· UPLOAD_CONTENT = simpan sebagai draft di TikTok Creator Studiotitle:Judul video (max 150 karakter)"platform_options": {
"tiktok": {
"post_type": "VIDEO",
"publish_type": "DIRECT_POST",
"title": "Tutorial NextPost",
"privacy_level": "PUBLIC",
"disable_comment": false,
"ai_generated": false,
"brand_content": false
}
}YouTube
VIDEO, SHORTpost_type:Tipe posttitle:Judul video (wajib untuk YouTube)description:Deskripsi video"platform_options": {
"youtube": {
"post_type": "VIDEO",
"title": "Tutorial Social Media Marketing 2026",
"description": "Di video ini kita bahas strategi...",
"tags": ["social media", "marketing"],
"privacy_status": "public",
"made_for_kids": false
}
}Threads
POSTpost_type:Tipe postlink:URL link yang dilampirkan ke postreply_control:Siapa yang bisa membalas"platform_options": {
"threads": {
"post_type": "POST",
"link": "https://nextpost.id",
"reply_control": "EVERYONE"
}
}Keamanan Webhook & Verifikasi Signature HMAC-SHA256
Setiap notifikasi webhook yang dikirimkan NextPost menyertakan header X-NextPost-Signature untuk memastikan request berasal dari server resmi.
Gunakan kode berikut di backend Node.js / Express Anda untuk memverifikasi keaslian payload secara aman dari timing-attacks:
import crypto from "crypto";
function verifyWebhookSignature(rawBodyBuffer: Buffer, signatureHeader: string, secret: string) {
const expected = "sha256=" + crypto
.createHmac("sha256", secret)
.update(rawBodyBuffer)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signatureHeader),
Buffer.from(expected)
);
}
// Endpoint Express receiver
app.post("/webhooks/nextpost", express.raw({ type: "application/json" }), (req, res) => {
const sig = req.headers["x-nextpost-signature"];
if (!verifyWebhookSignature(req.body, sig, process.env.NEXTPOST_WEBHOOK_SECRET)) {
return res.status(401).json({ error: "Invalid signature" });
}
const event = JSON.parse(req.body);
console.log("Event diterima:", event.event, "Post ID:", event.post_id);
res.json({ received: true });
});