/posts
posts:create, posts:publish (yalnızca publish_now)
Header'lar
Authorization
*API anahtarı. Format: Bearer xpl_live_...
Idempotency-Key
*Aynı yazma isteğinin güvenle tekrar denenmesi için 1-255 karakterlik benzersiz değer.
Content-Type
JSON body gönderirken application/json kullan.
Body
workspaceId
Sosyal Setin çalışma alanı için opsiyonel eşleşme guard'ı.
socialSetId
*GET /social-sets cevabından alınan Sosyal Set id'si.
publishTargets
En az bir hedef. Her öğe socialAccountId, platform ve isteğe bağlı textOverride, mediaRefs, mediaMetadata taşır.
text
*Ortak gönderi metni. Her hedef kendi platform sınırıyla doğrulanır; textOverride varsa o hedefte özel metin kullanılır. URL içeremez.
mode
*draft, scheduled veya publish_now.
scheduledAt
mode=scheduled için zorunlu ISO tarih. Gelecekte olmalı. publish_now için otomatik atanır.
title
Opsiyonel başlık. Varsayılan API Gönderisi.
mediaRefs
XPlanner storage bucket'ından gelen medya referansları veya public storage URL'leri.
mediaMetadata
mediaRefs ile aynı sırada altText gibi medya metadata alanları. Alt text en fazla 1000 karakterdir.
Mod değerleri
draft
Planlanmamış taslak oluşturur. scheduledAt gerekmez ve hiçbir yayın hedefine iletilmez.
scheduled
scheduledAt alanındaki gelecek zaman için yayın kuyruğuna gönderi ekler. scheduledAt zorunludur ve gelecekte olmalıdır.
publish_now
posts:publish scope ister. İstek anında kabul edilir ve paylaşım işi yayın kuyruğuna alınır.
Anında yayın limitleri
POST /posts
Gönderi oluşturma endpointine uygulanan endpoint yazma limitidir.
publish_now
Aynı API anahtarının anında yayın isteklerine uygulanan ek limittir.
Sosyal Set
Aynı Sosyal Set için anında yayın isteklerine uygulanan ek limittir.
Medya kuralları
mediaRefs
XPlanner storage bucket'ından gelen medya referansları veya public storage URL'leri kabul edilir.
X
En fazla 4 görsel veya tek GIF; GIF başka medya ile karıştırılmaz.
Görsel/GIF carousel ve tek video LinkedIn sınırlarıyla doğrulanır.
Threads
Görsel ve video carousel desteklenir; GIF yayın hedefi olarak kabul edilmez.
mediaMetadata
Alt text gibi metadata alanları mediaRefs ile aynı sırada gönderilir. Alt text en fazla 1000 karakterdir.
Cevaplar
Taslak veya zamanlanmış gönderi oluşturuldu.
publish_now isteği kabul edildi ve yayın kuyruğuna alındı.
Scope, abonelik veya kota engeli.
cURL
curl -X POST https://api.xplanner.co/v1/posts \ -H "Authorization: Bearer $XPLANNER_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: post-001" \ -d '{ "workspaceId": "wrk_123", "socialSetId": "set_123", "mode": "scheduled", "scheduledAt": "2026-08-20T09:00:00.000Z", "title": "Haftalık güncelleme", "text": "Bu hafta ürün tarafında şunları çözdük...", "publishTargets": [ { "socialAccountId": "social_x_123", "platform": "x" }, { "socialAccountId": "social_linkedin_123", "platform": "linkedin", "textOverride": "LinkedIn için ayrıntılı haftalık ürün güncellemesi..." }, { "socialAccountId": "social_threads_123", "platform": "threads" } ] }'Cevap
{ "data": { "id": "post_123", "workspaceId": "wrk_123", "socialSetId": "set_123", "status": "scheduled", "title": "Haftalık güncelleme", "text": "Bu hafta ürün tarafında şunları çözdük...", "scheduledAt": "2026-05-20T09:00:00.000Z", "media": [], "mediaRefs": [], "mediaMetadata": [], "xPostId": null, "publishTargets": [ { "platform": "x", "socialAccountId": "social_x_123", "status": "pending" }, { "platform": "linkedin", "socialAccountId": "social_linkedin_123", "status": "pending" }, { "platform": "threads", "socialAccountId": "social_threads_123", "status": "pending" } ], "createdAt": "2026-08-12T09:00:00.000Z", "updatedAt": "2026-08-12T09:00:00.000Z" }, "requestId": "req_123"}