Social Media Publishing API

June 14, 2026

Social Media Publishing API

Gunakan Social Media Publishing API untuk menghubungkan akun media sosial dan mempublikasikan klip WayinVideo langsung ke akun tersebut.

API ini ditujukan untuk klip yang sudah diekspor dari AI Clipping dan Find Moments. Buat klip dengan salah satu API tersebut terlebih dahulu, dan pastikan project awal dikirim dengan enable_export = true. Setelah itu gunakan project_id dan idx klip saat membuat tugas publikasi.

Alur umum:

  1. Buat URL otorisasi OAuth untuk platform yang ingin dihubungkan.
  2. Buka auth_url yang dikembalikan di browser dan selesaikan otorisasi.
  3. Panggil endpoint akun untuk memastikan akun sudah terhubung dan salin id-nya.
  4. Buat tugas publikasi dengan klip target dan konfigurasi publikasi untuk akun tersebut.

Semua endpoint memerlukan:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
x-wayinvideo-api-version: v2

Billing: Selama periode promosi terbatas, berhasil menghubungkan satu akun media sosial saat ini menggunakan 10 API Units. Jika otorisasi tidak berhasil diselesaikan, API Units tidak akan dipotong.


Endpoint

MethodPathDeskripsi
POST/api/v2/social-media/oauth/{platform}Membuat URL otorisasi OAuth sekali pakai untuk platform media sosial
GET/api/v2/social-media/accountsMenampilkan daftar akun media sosial yang terhubung
POST/api/v2/social-media/publishMembuat tugas untuk mempublikasikan klip ke satu atau beberapa akun

Menghubungkan Akun Media Sosial

Buat URL otorisasi OAuth untuk platform yang ingin dihubungkan.

POST https://wayinvideo-api.wayin.ai/api/v2/social-media/oauth/{platform}

Path Parameters

ParameterTypeRequiredDeskripsi
platformstringYaPlatform media sosial. Nilai yang didukung: youtube, tiktok, twitter, instagram, facebook, linkedin.

Request Body

Request body tidak diperlukan.

Contoh Request

curl -X POST https://wayinvideo-api.wayin.ai/api/v2/social-media/oauth/youtube \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "x-wayinvideo-api-version: v2" \
  --data ''

Contoh Response

{
  "data": {
    "auth_url": "https://example.com/oauth2/auth?xxxxxx",
    "state": "a49bc736-xxxxx"
  }
}

Field Response

FieldTypeDeskripsi
auth_urlstringURL halaman otorisasi OAuth pihak ketiga. Buka URL ini di browser untuk memberi otorisasi.
statestringIdentifier status otorisasi.

Catatan

  • Setiap auth_url hanya dapat digunakan sekali. Jika otorisasi gagal atau URL kedaluwarsa, panggil endpoint ini lagi untuk membuat URL baru.
  • Setelah otorisasi berhasil, panggil Daftar Akun Media Sosial untuk memastikan akun tersedia untuk publikasi.
  • Anda dapat menghubungkan beberapa akun pada platform yang sama. Misalnya, panggil endpoint OAuth YouTube beberapa kali untuk menghubungkan beberapa channel YouTube.
  • Jika akun tidak berhasil dihubungkan, API Units tidak akan dipotong.

Daftar Akun Media Sosial

Dapatkan semua akun media sosial yang terhubung untuk pemilik API key saat ini. Gunakan endpoint ini sebelum publikasi untuk mendapatkan nilai id akun yang digunakan oleh publish_configs.

GET https://wayinvideo-api.wayin.ai/api/v2/social-media/accounts?active_only={active_only}

Query Parameters

ParameterTypeRequiredDefaultDeskripsi
active_onlybooleanTidakfalseJika true, hanya akun dengan token valid yang dikembalikan.

Contoh Request

curl -X GET "https://wayinvideo-api.wayin.ai/api/v2/social-media/accounts?active_only=true" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "x-wayinvideo-api-version: v2"

Response Saat Tidak Ada Akun Terhubung

{
  "data": []
}

Jika data kosong, panggil Menghubungkan Akun Media Sosial terlebih dahulu.

Response Saat Ada Akun Terhubung

{
  "data": [
    {
      "id": "smaccxxx",
      "platform": "youtube",
      "platform_username": "MyChannel",
      "platform_avatar": "https://example.com/avatar.jpg",
      "token_valid": true,
      "token_expiring_soon": false
    }
  ]
}

Field Response

FieldTypeDeskripsi
idstringID unik akun sosial. Gunakan sebagai key di publish_configs saat memanggil /publish. Jangan gunakan nama platform.
platformstringIdentifier platform. Lihat Nilai Platform.
platform_usernamestringUsername, nama channel, atau nama akun di platform.
platform_avatarstring | nullURL gambar avatar akun.
token_validbooleantrue berarti token otorisasi valid dan akun dapat digunakan untuk publikasi.
token_expiring_soonbooleantrue berarti token otorisasi akan segera kedaluwarsa. Minta pengguna menghubungkan ulang akun tersebut.

Rekomendasi Penggunaan

  • Sebelum membuat tugas publikasi, pastikan akun target memiliki token_valid: true.

Membuat Tugas Publikasi

Publikasikan satu klip ke satu atau beberapa akun media sosial yang terhubung. Tentukan klip dengan mengirim ID project dan indeks klip.

Wajib: project_id harus berasal dari tugas AI Clipping atau Find Moments yang dikirim dengan enable_export = true. Publikasi sosial membutuhkan video klip yang sudah diekspor; project yang dibuat tanpa export tidak dapat dipublikasikan dengan endpoint ini.

POST https://wayinvideo-api.wayin.ai/api/v2/social-media/publish

Field Request

FieldTypeRequiredDeskripsi
project_idstringYaID project.
idxintegerYaIndeks klip di dalam project.
resolutionstringTidakResolusi export yang digunakan oleh klip, seperti 1080p atau 720p.
publish_configsobjectYaKonfigurasi publikasi dengan key berupa ID akun sosial dari endpoint akun.
scheduled_atinteger | nullTidakTimestamp milidetik untuk publikasi terjadwal. Gunakan null atau hilangkan field ini untuk langsung publikasi.

Cara membuat nilai scheduled_at

scheduled_at adalah Unix timestamp dalam milidetik. Nilainya harus setidaknya 5 menit di masa depan dan maksimal 30 hari di masa depan.

Untuk menjadwalkan publikasi 10 menit dari sekarang dengan JavaScript:

const scheduledAt = Date.now() + 10 * 60 * 1000;

Untuk menjadwalkan waktu tertentu:

const scheduledAt = new Date('2026-06-15T10:00:00Z').getTime();

Konfigurasi Publikasi Platform

Setiap value dalam publish_configs adalah objek konfigurasi publikasi khusus platform.

FieldTypeRequiredDeskripsi
titlestringWajib bersyaratJudul video. Wajib untuk YouTube.
descriptionstringWajib bersyaratDeskripsi video atau teks post. Wajib untuk TikTok.
tagsstring[]TidakDaftar tag.
visibilitystringTidakVisibilitas: public, private, atau unlisted. Dukungan berbeda per platform.
thumbnail_urlstringTidakURL gambar thumbnail kustom.
categorystringTidakKategori video khusus platform.
allow_commentbooleanTidakApakah komentar diizinkan.
allow_duetbooleanTidakApakah duet diizinkan. Hanya TikTok.
allow_stitchbooleanTidakApakah stitch diizinkan. Hanya TikTok.
disclose_contentbooleanTidakApakah konten promosi atau iklan perlu diungkapkan. Hanya TikTok.

Penting: Key di dalam publish_configs harus berupa ID akun yang dikembalikan oleh /api/v2/social-media/accounts, seperti smacct06ixxxxxxx. Jangan gunakan youtube, tiktok, atau nama platform lain sebagai key.

Contoh Request

curl -sS -X POST https://wayinvideo-api.wayin.ai/api/v2/social-media/publish \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "project_id": "prj06ixxxxxxx",
    "idx": 0,
    "resolution": "1080p",
    "publish_configs": {
      "smacct06ixxxxxxx": {
        "title": "API Test Video",
        "description": "Posted by curl test",
        "tags": ["api", "test"],
        "visibility": "public"
      }
    },
    "scheduled_at": null
  }'

Contoh Response

{
  "data": {
    "task_id": "pubtask06ixxxxxxx",
    "status": "PENDING",
    "created_at": 1781251687210
  }
}

Field Response

FieldTypeDeskripsi
task_idstringID unik tugas publikasi.
statusstringStatus tugas publikasi. Lihat Nilai Status Publikasi.
created_atintegerTimestamp pembuatan tugas dalam milidetik.
schedule_idstring | nullID jadwal. Dikembalikan saat scheduled_at diberikan.
scheduled_atinteger | nullTimestamp publikasi terjadwal dalam milidetik.

Anda dapat melihat jadwal publikasi dan hasil tugas real-time di kalender WayinVideo.


Nilai Platform

ValuePlatformWebsite
youtubeYouTubehttps://youtube.com
tiktokTikTokhttps://tiktok.com
twitterTwitter / Xhttps://twitter.com
instagramInstagramhttps://instagram.com
facebookFacebookhttps://facebook.com
linkedinLinkedInhttps://linkedin.com

Nilai Status Publikasi

ValueDeskripsi
PENDINGTugas sudah dibuat dan menunggu penjadwalan.
SCHEDULEDTugas sudah dijadwalkan dan menunggu waktu yang ditentukan.
PROCESSINGPublikasi sedang berjalan, termasuk upload video dan pemrosesan di sisi platform.
DONEPublikasi berhasil.
PARTIAL_DONESebagian akun berhasil dan sebagian gagal. Hanya mungkin saat publikasi ke beberapa akun.
ERRORPublikasi gagal.
CANCELLEDPublikasi dibatalkan.

Contoh Alur Lengkap

Langkah 1: Buat URL OAuth YouTube

curl -X POST https://wayinvideo-api.wayin.ai/api/v2/social-media/oauth/youtube \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "x-wayinvideo-api-version: v2" \
  --data ''

Buka auth_url yang dikembalikan di browser dan selesaikan otorisasi.

Langkah 2: Lihat Akun yang Tersedia

curl -X GET "https://wayinvideo-api.wayin.ai/api/v2/social-media/accounts?active_only=true" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "x-wayinvideo-api-version: v2"

Salin id akun yang ingin digunakan untuk publikasi.

Langkah 3: Publikasikan Klip

curl -sS -X POST https://wayinvideo-api.wayin.ai/api/v2/social-media/publish \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "project_id": "prj06ixxxxxxx",
    "idx": 0,
    "resolution": "1080p",
    "publish_configs": {
      "smacct06ixxxxxxx": {
        "title": "API Test Video",
        "description": "Posted by curl test",
        "tags": ["api", "test"],
        "visibility": "public"
      }
    },
    "scheduled_at": null
  }'

Catatan

  1. Key publish_configs adalah ID akun, bukan nama platform.
  2. Untuk menjadwalkan publikasi, kirim scheduled_at sebagai timestamp milidetik di masa depan.
  3. Klip yang sama dapat dipublikasikan beberapa kali ke akun berbeda. Publikasi ulang klip yang sama ke akun yang sama akan membuat tugas independen.
  4. Publikasi sosial membutuhkan video klip yang sudah diekspor. Gunakan project_id dari tugas AI Clipping atau Find Moments yang dibuat dengan enable_export = true.
  5. Jika publikasi mengembalikan error token akun, hubungkan ulang akun media sosial tersebut lalu coba lagi.