একটি REST এন্ডপয়েন্টের মাধ্যমে X (Twitter)-এ পোস্ট, থ্রেড, ছবি ও ভিডিও পাবলিশ ও শিডিউল করুন। আপনার X অ্যাকাউন্ট একবার যুক্ত করুন: আপনার নিজের X ডেভেলপার অ্যাকাউন্ট বা X API প্ল্যানের দরকার নেই।
বেস URL https://api.so-me.studio/v1 · প্রমাণীকরণ X-API-Key · socialMedia: TWITTER
এই মানগুলোর একটি postType হিসেবে পাঠান। প্রতিটি পোস্টে টেক্সট লাগবে, আর ছবি বা ভিডিও আপনার মিডিয়া লাইব্রেরি থেকে fileId দিয়ে যুক্ত করা হয়।
TEXT
শুধু টেক্সটের পোস্ট।
IMAGE
একটি ছবি।
CAROUSEL
একটি পোস্টে ২ থেকে ৪টি ছবি।
VIDEO
একটি ভিডিও।
মিডিয়া আপলোড করুন, তারপর পোস্ট তৈরি করুন। সঙ্গে সঙ্গে পাবলিশ করতে scheduledAt বাদ দিন।
POST /v1/media/presign-upload ফাইলটি আপনার মিডিয়া লাইব্রেরিতে যোগ করে এবং একটি fileId ও একটি প্রি-সাইনড uploadUrl ফেরত দেয়।
curl -X POST https://api.so-me.studio/v1/media/presign-upload \
-H "X-API-Key: $SOME_API_KEY" \
-H "Content-Type: application/json" \
-d '{"files":[{"filename":"onboarding.png","mimetype":"image/png","size":412300}]}'
# → [{ "fileId": "…", "uploadUrl": "https://…", "fileSrc": "…", "s3Key": "…" }]আপনি যে Content-Type ঘোষণা করেছেন ঠিক সেটি দিয়ে uploadUrl-এ বাইটগুলো PUT করুন। URL-টি এক ঘণ্টা বৈধ থাকে।
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: image/png" \
--upload-file ./onboarding.pngfileId সহ POST /v1/posts করুন। রেসপন্স হলো SCHEDULED স্ট্যাটাসের পোস্টটি, আর এটি scheduledAt-এ একটি কিউয়ের মাধ্যমে পাবলিশ হয়, ব্যর্থ হলে কিউটি আবার চেষ্টা করে।
curl -X POST https://api.so-me.studio/v1/posts \
-H "X-API-Key: $SOME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"socialMedia": "TWITTER",
"postType": "IMAGE",
"text": "আমরা আমাদের অনবোর্ডিং নতুন করে বানিয়েছি। শিখেছি ৩টি জিনিস:",
"fileIds": ["<fileId>"],
"threadParts": [
{ "text": "১. প্রতি স্ক্রিনে একটি করে জিনিস চান।" },
{ "text": "২. সেটআপের আগে ফলাফল দেখান।" },
{ "text": "৩. পুরো ফানেল নয়, প্রতিটি ধাপে ড্রপ-অফ মাপুন।" }
],
"scheduledAt": "2026-11-06T13:00:00Z"
}'ওয়ার্কস্পেসে একটিমাত্র X অ্যাকাউন্ট থাকলে accountId ঐচ্ছিক। না হলে GET /v1/accounts থেকে একটি id দিন।
fileIds দিয়ে যুক্ত ফাইলগুলো কিউতে যাওয়ার আগে নিচের X সীমার সাথে মিলিয়ে দেখা হয়। কোনো ফাইল নিয়ম ভাঙলে প্রতিটি ফাইলের রিপোর্টসহ 400 ফেরত আসে।
যেসব ফিল্ড X-এ পোস্ট কীভাবে পাবলিশ হবে তা বদলায়।
| ফিল্ড | এটি কী করে |
|---|---|
| threadParts | পরবর্তী পোস্টগুলো, ক্রমানুসারে, প্রথমটির নিচে রিপ্লাই চেইন হিসেবে পাবলিশ হয়। সর্বোচ্চ ২৪টি অংশ, প্রতিটি ২৮০ অক্ষরের, প্রতিটিতে সর্বোচ্চ ৪টি fileId। |
| firstComment | পোস্ট লাইভ হওয়ার পর এর নিচে, অথবা থ্রেডের শেষ অংশের নিচে, দেওয়া একটি রিপ্লাই। সর্বোচ্চ ২৮০ অক্ষর, আর X প্রতিটি লিংককে ২৩ অক্ষর হিসেবে গণনা করে। |
| accountId | যে X অ্যাকাউন্ট থেকে পোস্ট হবে। ওয়ার্কস্পেসে মাত্র একটি থাকলে ঐচ্ছিক। |
Social media studio পাবলিশ করার আগে প্রতিটি ফাইল এই সীমাগুলোর সাথে মিলিয়ে দেখে। এগুলো আমাদের কনফিগার করা সীমা, X-এর কোনো প্রতিশ্রুতি নয়: GET /v1/media/rules লাইভ টেবিলটি ফেরত দেয়, আর POST /v1/media/validate পোস্ট না করেই একটি ফাইল যাচাই করে।
পোস্টের ধরন TEXT
শুধু টেক্সট, মিডিয়া নেই
পোস্টের ধরন IMAGE
পোস্টের ধরন CAROUSEL
পোস্টের ধরন VIDEO
পাবলিশিং অ্যাসিনক্রোনাস। post.published ও post.failed-এ সাবস্ক্রাইব করুন, অথবা postStatus POSTED বা FAILED না হওয়া পর্যন্ত GET /v1/posts/:id পোল করুন।
curl -X POST https://api.so-me.studio/v1/webhooks/subscriptions \
-H "X-API-Key: $SOME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/hooks/social",
"categories": ["post"],
"events": ["post.published", "post.failed"]
}'
# The response includes the secret that signs every delivery.POST /hooks/social
X-Webhook-Event: post.published
X-Webhook-Signature: <hex HMAC-SHA256 of the raw body>
{
"event": "post.published",
"category": "post",
"timestamp": "2026-11-03T15:00:07.412Z",
"data": { "postId": "…", "platform": "TWITTER" }
}প্রতিটি ডেলিভারি X-Webhook-Signature-এ HMAC-SHA256 দিয়ে সাইন করা থাকে। post.failed শেষ রিট্রাইয়ের পরে ট্রিগার হয়; কারণটি ঠিক করে POST /v1/posts/:id/retry কল করুন। প্রথম কমেন্টের ফলাফল আলাদাভাবে post.first_comment_posted বা post.first_comment_failed দিয়ে জানানো হয়।
একই API কী ২০০+ টুলসহ একটি MCP সার্ভার এবং একটি CLI চালায়, তাই একটি এজেন্ট হাতে লেখা HTTP কল ছাড়াই X-এ পোস্ট করতে পারে।
আপনার API কী দিয়ে সার্ভারটি Claude, Cursor বা যেকোনো MCP ক্লায়েন্টে যোগ করুন। OAuth-ও কাজ করে। X-এর জন্য এজেন্ট REST রিকোয়েস্টের একই ফিল্ড দিয়ে এই টুলগুলো কল করে:
{
"mcpServers": {
"so-me-studio": {
"url": "https://api.so-me.studio/mcp",
"headers": { "X-API-Key": "sk_live_…" }
}
}
}npm i -g @social-media-scheduler/cli দিয়ে ইনস্টল করুন। এটি আপনার হয়ে লোকাল ফাইল আপলোড করে এবং JSON প্রিন্ট করে, তাই একটি স্ক্রিপ্ট বা CI জব একটি কমান্ডেই X পোস্ট শিডিউল করতে পারে।
so-me posts:create --platform TWITTER --post-type IMAGE \
-m ./onboarding.png \
-c "আমরা আমাদের অনবোর্ডিং নতুন করে বানিয়েছি। শিখেছি ৩টি জিনিস:" \
--thread "১. প্রতি স্ক্রিনে একটি করে জিনিস চান।" \
--thread "২. সেটআপের আগে ফলাফল দেখান।" \
-s 2026-11-06T13:00:00ZAPI, CLI ও MCP অ্যাক্সেস প্রতিটি পেইড প্ল্যানে অন্তর্ভুক্ত: Lite, Creator, Standard, Advanced ও Lifetime। প্ল্যান ও সীমা দেখুন
হ্যাঁ। প্রথম পোস্টটি text-এ আর বাকিগুলো threadParts-এ দিন। প্রতিটি অংশে নিজস্ব text ও fileIds থাকতে পারে। পরের কোনো অংশ ব্যর্থ হলে আগেই লাইভ হওয়া অংশগুলো থেকে যায়, আর পোস্টে কয়টি পাবলিশ হয়েছে তা রেকর্ড করা থাকে।
না। আপনি Social media studio-তে একবার আপনার X অ্যাকাউন্ট যুক্ত করেন, আর পাবলিশিং চলে Social media studio-এর X ইন্টিগ্রেশনের মাধ্যমে। আপনার কোড শুধু আপনার Social media studio API কী পাঠায়।
না। আপনি Social media studio ড্যাশবোর্ডে X-এ সাইন ইনের মাধ্যমে একবারই X অ্যাকাউন্ট যুক্ত করেন। এর টোকেন এনক্রিপ্ট করে সংরক্ষণ করা হয় এবং আমাদের দিকে রিফ্রেশ করা হয়, আর আপনার কোড কেবল X-API-Key হেডারে আপনার Social media studio API কী পাঠায়।
না। পোস্ট কিউতে ঢোকামাত্রই এটি ফেরত আসে। পাবলিশিং এমন একটি ওয়ার্কারে চলে যা ব্যর্থ হলে আবার চেষ্টা করে, তাই post.published ও post.failed শুনুন, অথবা GET /v1/posts/:id পোল করুন।
REST API, CLI ও MCP সার্ভার প্রতিটি পেইড প্ল্যানে অন্তর্ভুক্ত: Lite, Creator, Standard, Advanced ও Lifetime। Lite, Creator, Standard ও Advanced ৭ দিনের ট্রায়াল দিয়ে শুরু হয় (কার্ড প্রয়োজন), আর Lifetime একবারের পেমেন্ট।
ট্যাব নিয়ে টানাহেঁচড়া বন্ধ করুন, একটিমাত্র ক্যালেন্ডার থেকেই ২০টি প্ল্যাটফর্মের জন্য লিখুন, সাজান ও প্রকাশ করুন।