XPlanner

Docs

Gönderi oluştur

X, LinkedIn ve Threads hedefleri için ortak ya da platforma özel metin ve medyayla taslak oluşturur, planlar veya yayın kuyruğuna alır.


POST

/posts

posts:create, posts:publish (yalnızca publish_now)

Header'lar

Authorization

*
string

API anahtarı. Format: Bearer xpl_live_...

Idempotency-Key

*
string

Aynı yazma isteğinin güvenle tekrar denenmesi için 1-255 karakterlik benzersiz değer.

Content-Type

string

JSON body gönderirken application/json kullan.

Body

workspaceId

string

Sosyal Setin çalışma alanı için opsiyonel eşleşme guard'ı.

socialSetId

*
string

GET /social-sets cevabından alınan Sosyal Set id'si.

publishTargets

object[]

En az bir hedef. Her öğe socialAccountId, platform ve isteğe bağlı textOverride, mediaRefs, mediaMetadata taşır.

text

*
string

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

*
string

draft, scheduled veya publish_now.

scheduledAt

string

mode=scheduled için zorunlu ISO tarih. Gelecekte olmalı. publish_now için otomatik atanır.

title

string

Opsiyonel başlık. Varsayılan API Gönderisi.

mediaRefs

string[]

XPlanner storage bucket'ından gelen medya referansları veya public storage URL'leri.

mediaMetadata

object[]

mediaRefs ile aynı sırada altText gibi medya metadata alanları. Alt text en fazla 1000 karakterdir.

Mod değerleri

draft

201

Planlanmamış taslak oluşturur. scheduledAt gerekmez ve hiçbir yayın hedefine iletilmez.

scheduled

201

scheduledAt alanındaki gelecek zaman için yayın kuyruğuna gönderi ekler. scheduledAt zorunludur ve gelecekte olmalıdır.

publish_now

202

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

10/dk
120/saat

Gönderi oluşturma endpointine uygulanan endpoint yazma limitidir.

publish_now

3/dk
30/saat

Aynı API anahtarının anında yayın isteklerine uygulanan ek limittir.

Sosyal Set

5/10 dk

Aynı Sosyal Set için anında yayın isteklerine uygulanan ek limittir.

Medya kuralları

mediaRefs

storage

XPlanner storage bucket'ından gelen medya referansları veya public storage URL'leri kabul edilir.

X

platform kuralı

En fazla 4 görsel veya tek GIF; GIF başka medya ile karıştırılmaz.

LinkedIn

platform kuralı

Görsel/GIF carousel ve tek video LinkedIn sınırlarıyla doğrulanır.

Threads

platform kuralı

Görsel ve video carousel desteklenir; GIF yayın hedefi olarak kabul edilmez.

mediaMetadata

aynı sıra

Alt text gibi metadata alanları mediaRefs ile aynı sırada gönderilir. Alt text en fazla 1000 karakterdir.

Cevaplar

201

Taslak veya zamanlanmış gönderi oluşturuldu.

202

publish_now isteği kabul edildi ve yayın kuyruğuna alındı.

403

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"}