Dokumentasi Resmi NextPost REST API v1.0

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.

Base URL:https://api.nextpost.id
Auth:Authorization: Bearer npk_...
Download OpenAPI 3.1 Spec (JSON)

Endpoints Explorer & Interactive Test Console

Pilih endpoint di bawah, sesuaikan parameter, dan jalankan request langsung dari browser.

πŸ“Posts
πŸ””Webhooks
πŸ‘₯Social Accounts
πŸ“ŠAnalytics
πŸ’³Subscription & Pricing
πŸͺ™Credits
πŸ–ΌοΈMedia Upload
πŸ”‘Developer API Keys
βš™οΈLainnya
REST APIPostsDaftar semua post
GET/api/posts

Daftar semua post

Ambil semua post milik user yang sedang login. Mendukung filter berdasarkan status, platform, dan rentang tanggal.

πŸ”’ Wajib Bearer Token (npk_...)
Autentikasi Diperlukan
Sertakan header Authorization: Bearer npk_... pada setiap request. Token dapat dibuat di Dashboard β†’ Setting β†’ API.
Parameter Request
statusquerystring

Filter status: draft | scheduled | processing | published | failed | cancelled

platformquerystring

Filter platform: twitter | instagram | facebook | linkedin | pinterest | tiktok | youtube | threads

from_datequerydatetime

Filter dari tanggal (ISO 8601)

to_datequerydatetime

Filter sampai tanggal (ISO 8601)

limitquerynumber

Jumlah data per halaman (default: 50, max: 100)

offsetquerynumber

Offset untuk paginasi (default: 0)

Contoh Kode Pemanggilan
curl -X GET "https://api.nextpost.id/api/posts" \
  -H "Authorization: Bearer npk_YOUR_API_KEY"
Skema Respon
{
  "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, THREAD
post_type:Tipe post
reply_to:Tweet ID yang akan dibalas
thread_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."
    ]
  }
}

Instagram

FEED, STORY, REEL
post_type:Tipe post
location_id:ID lokasi Facebook/Instagram
location_name:Nama lokasi untuk ditampilkan
"platform_options": {
  "instagram": {
    "post_type": "REEL",
    "location_name": "Jakarta, Indonesia"
  }
}

Facebook

FEED, REEL, STORY
post_type:Tipe post
page_id:ID Facebook Page tujuan
target_audience:Visibilitas post
"platform_options": {
  "facebook": {
    "post_type": "FEED",
    "page_id": "123456789012345",
    "target_audience": "PUBLIC"
  }
}

TikTok

VIDEO
post_type:Tipe post
publish_type:DIRECT_POST = publish langsung Β· UPLOAD_CONTENT = simpan sebagai draft di TikTok Creator Studio
title: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, SHORT
post_type:Tipe post
title: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

POST
post_type:Tipe post
link:URL link yang dilampirkan ke post
reply_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 });
});
Dokumentasi & Panduan Lengkap β€” NextPost