tellmelo.ডেভেলপারtellmelo-তে যাও
সহায়তা কেন্দ্রসাপোর্টআইনিডেভেলপার

API

শুরু করা

  • আমি চাই …
  • সংক্ষিপ্ত বিবরণ
  • দ্রুত শুরু
  • চেষ্টা করো
  • তোমার চাবি
  • একটি চাবি কী করতে পারে
  • বট

মৌলিক বিষয়

  • অনুরোধ আর উত্তর
  • পাতা
  • শুধু যা নতুন
  • সীমা
  • হেডার
  • যখন কিছু কাজ করে না
  • সংস্করণ

এন্ডপয়েন্ট

  • এন্ডপয়েন্ট
  • প্রবেশপথ
    • GET /
  • পোস্ট
    • GET /posts
    • GET /posts/{id}
    • POST /posts
    • DELETE /posts/{id}
    • GET /me/scheduled
    • POST /posts/{id}/schedule
    • POST /posts/{id}/edit
    • GET /posts/{id}/reply-settings
    • PUT /posts/{id}/reply-settings
    • POST /posts/{id}/coauthor
    • DELETE /posts/{id}/coauthor
    • POST /posts/{id}/pin
  • উত্তর
    • GET /posts/{id}/replies
    • POST /posts/{id}/replies
    • POST /replies/{id}/edit
    • DELETE /replies/{id}
    • POST /replies/{id}/like
    • POST /replies/{id}/vote
    • POST /replies/{id}/pick
    • GET /posts/{id}/replies/waiting
    • POST /replies/{id}/decide
    • GET /posts/{id}/replies/planned
    • PUT /me/planned-replies/{id}
    • POST /me/planned-replies/{id}/send
    • DELETE /me/planned-replies/{id}
  • পোল
    • POST /posts/{id}/vote
  • প্রোফাইল
    • GET /profiles/{handle}
    • GET /profiles/{handle}/posts
    • GET /profiles/{handle}/events
    • POST /me/events
    • PUT /me/events/{id}
    • DELETE /me/events/{id}
    • GET /me/events/{id}/signups
    • POST /events/{id}/signup
  • গ্রুপ
    • GET /communities
    • GET /communities/{id}
    • GET /communities/{id}/posts
    • GET /communities/{id}/members
    • GET /communities/{id}/roles
    • GET /communities/{id}/bell
    • GET /invites/{code}
    • PUT /roles/{id}/self
    • GET /communities/{id}/emojis
    • PUT /communities/{id}/bell
    • POST /invites/{code}/join
    • GET /communities/{id}/bots
  • চ্যানেল
    • GET /communities/{id}/channels
    • GET /channels/{id}/messages
    • POST /channels/{id}/messages
    • POST /channels/{id}/read
    • DELETE /channel-messages/{id}
    • GET /communities/{id}/voice
  • গ্রুপ চালানো
    • POST /communities/{id}/emojis
    • DELETE /communities/{id}/emojis/{name}
    • POST /communities/{id}/roles
    • PUT /roles/{id}
    • DELETE /roles/{id}
    • PUT /communities/{id}/roles/order
    • PUT /roles/{id}/members/{member}
    • POST /communities/{id}/channels
    • PUT /channels/{id}
    • DELETE /channels/{id}
    • PUT /communities/{id}/channels/order
    • PUT /communities/{id}/channels/shape
    • GET /channels/{id}/overrides
    • PUT /channels/{id}/overrides/{role}
    • POST /communities/{id}/categories
    • PUT /categories/{id}
    • DELETE /categories/{id}
    • PUT /communities/{id}/feed
    • GET /communities/{id}/invites
    • POST /communities/{id}/invites
    • DELETE /invites/{code}
    • POST /channel-messages/{id}/remove
    • POST /communities/{id}/posts/{post}/remove
    • DELETE /communities/{id}/members/{member}
    • PUT /communities/{id}/members/{member}/timeout
    • DELETE /communities/{id}/members/{member}/timeout
    • GET /communities/{id}/bans
    • PUT /communities/{id}/bans/{member}
    • DELETE /communities/{id}/bans/{member}
    • GET /communities/{id}/log
    • POST /communities
    • PUT /communities/{id}
  • বট
    • GET /events
    • GET /events/stream
    • GET /me/commands
    • PUT /me/commands
    • POST /interactions/{id}/reply
    • POST /channels/{id}/voice
  • ঘুরে দেখো
    • GET /tags
    • GET /search
    • GET /emojis
  • GIF ও ভিডিও
    • GET /media
    • GET /media/mine
    • GET /media/{id}
    • POST /media/uploads
    • PUT /media/uploads/{upload}
    • POST /media/{id}
    • DELETE /media/{id}
  • তোমার অ্যাকাউন্ট
    • GET /me
    • GET /feed
    • POST /me/pictures
    • PUT /me/profile
    • GET /me/emojis
    • POST /me/emojis/pictures
    • POST /me/emojis
    • DELETE /me/emojis/{name}
    • PUT /me/emojis/sharing
    • GET /me/webhooks
    • POST /me/webhooks
    • DELETE /me/webhooks/{id}
    • POST /me/webhooks/{id}/test
  • বিজ্ঞপ্তি
    • GET /notifications
    • POST /notifications/read
  • বার্তা
    • GET /conversations
    • GET /conversations/{with}/messages
    • POST /conversations/{with}/messages
    • POST /conversations/{with}/read
    • DELETE /conversations/{with}/messages/{id}
    • POST /conversations/{with}/planned
    • GET /me/planned-messages
    • POST /me/planned-messages/{id}/send
    • DELETE /me/planned-messages/{id}
  • সম্পর্ক
    • POST /relations
    • GET /profiles/{handle}/followers
    • GET /profiles/{handle}/following
    • GET /me/relations
  • সংগ্রহ
    • GET /me/collections
    • POST /me/collections
    • PUT /me/collections/{id}
    • DELETE /me/collections/{id}
    • GET /me/collections/{id}/posts
    • POST /me/collections/{id}/posts
  • উপহার
    • GET /partner/quota
    • GET /partner/gifts
    • POST /partner/gifts
    • GET /gift-drops
    • POST /gift-drops

অবজেক্ট

  • অবজেক্ট
  • Service
  • RateLimit
  • Post
  • Reply
  • ReplyVote
  • PlannedReply
  • ReplySettings
  • Counts
  • Media
  • Poll
  • PollOption
  • ProfileBrief
  • Profile
  • CommunityBrief
  • Community
  • Membership
  • Person
  • Channel
  • ChannelCategory
  • ChannelSymbol
  • ChannelMessage
  • Role
  • GroupMember
  • ChannelOverride
  • Bell
  • InviteLink
  • InvitePreview
  • InviteGroup
  • Joined
  • LogEntry
  • Ban
  • Until
  • Tag
  • SearchResult
  • Emoji
  • Notification
  • Actor
  • Conversation
  • Message
  • PlannedMessage
  • ScheduledPost
  • Collection
  • Event
  • EventSignups
  • EventSignup
  • Picture
  • EmojiPicture
  • OwnEmoji
  • GroupEmoji
  • BotEvent
  • BotCommand
  • VoiceSeat
  • Webhook
  • WebhookCreated
  • GroupBot
  • VoiceRoom
  • VoicePerson
  • GiftDrop
  • OwnGiftDrop
  • Quota
  • QuotaLook
  • QuotaGift
  • MediaItem
  • Embed
  • UploadStarted
  • UploadPiece
  • Created
  • DropCreated
  • Made
  • Ok

আরও

  • যন্ত্রে পাঠযোগ্য বিবরণ
  • অন্য ওয়েবসাইটে GIF ও ভিডিও
  • tellmelo দিয়ে সাইন ইন
  • আমরা যা আশা করি
সূচি

শুরু করা

  • আমি চাই …
  • সংক্ষিপ্ত বিবরণ
  • দ্রুত শুরু
  • চেষ্টা করো
  • তোমার চাবি
  • একটি চাবি কী করতে পারে
  • বট

মৌলিক বিষয়

  • অনুরোধ আর উত্তর
  • পাতা
  • শুধু যা নতুন
  • সীমা
  • হেডার
  • যখন কিছু কাজ করে না
  • সংস্করণ

এন্ডপয়েন্ট

  • এন্ডপয়েন্ট
  • প্রবেশপথ
    • GET /
  • পোস্ট
    • GET /posts
    • GET /posts/{id}
    • POST /posts
    • DELETE /posts/{id}
    • GET /me/scheduled
    • POST /posts/{id}/schedule
    • POST /posts/{id}/edit
    • GET /posts/{id}/reply-settings
    • PUT /posts/{id}/reply-settings
    • POST /posts/{id}/coauthor
    • DELETE /posts/{id}/coauthor
    • POST /posts/{id}/pin
  • উত্তর
    • GET /posts/{id}/replies
    • POST /posts/{id}/replies
    • POST /replies/{id}/edit
    • DELETE /replies/{id}
    • POST /replies/{id}/like
    • POST /replies/{id}/vote
    • POST /replies/{id}/pick
    • GET /posts/{id}/replies/waiting
    • POST /replies/{id}/decide
    • GET /posts/{id}/replies/planned
    • PUT /me/planned-replies/{id}
    • POST /me/planned-replies/{id}/send
    • DELETE /me/planned-replies/{id}
  • পোল
    • POST /posts/{id}/vote
  • প্রোফাইল
    • GET /profiles/{handle}
    • GET /profiles/{handle}/posts
    • GET /profiles/{handle}/events
    • POST /me/events
    • PUT /me/events/{id}
    • DELETE /me/events/{id}
    • GET /me/events/{id}/signups
    • POST /events/{id}/signup
  • গ্রুপ
    • GET /communities
    • GET /communities/{id}
    • GET /communities/{id}/posts
    • GET /communities/{id}/members
    • GET /communities/{id}/roles
    • GET /communities/{id}/bell
    • GET /invites/{code}
    • PUT /roles/{id}/self
    • GET /communities/{id}/emojis
    • PUT /communities/{id}/bell
    • POST /invites/{code}/join
    • GET /communities/{id}/bots
  • চ্যানেল
    • GET /communities/{id}/channels
    • GET /channels/{id}/messages
    • POST /channels/{id}/messages
    • POST /channels/{id}/read
    • DELETE /channel-messages/{id}
    • GET /communities/{id}/voice
  • গ্রুপ চালানো
    • POST /communities/{id}/emojis
    • DELETE /communities/{id}/emojis/{name}
    • POST /communities/{id}/roles
    • PUT /roles/{id}
    • DELETE /roles/{id}
    • PUT /communities/{id}/roles/order
    • PUT /roles/{id}/members/{member}
    • POST /communities/{id}/channels
    • PUT /channels/{id}
    • DELETE /channels/{id}
    • PUT /communities/{id}/channels/order
    • PUT /communities/{id}/channels/shape
    • GET /channels/{id}/overrides
    • PUT /channels/{id}/overrides/{role}
    • POST /communities/{id}/categories
    • PUT /categories/{id}
    • DELETE /categories/{id}
    • PUT /communities/{id}/feed
    • GET /communities/{id}/invites
    • POST /communities/{id}/invites
    • DELETE /invites/{code}
    • POST /channel-messages/{id}/remove
    • POST /communities/{id}/posts/{post}/remove
    • DELETE /communities/{id}/members/{member}
    • PUT /communities/{id}/members/{member}/timeout
    • DELETE /communities/{id}/members/{member}/timeout
    • GET /communities/{id}/bans
    • PUT /communities/{id}/bans/{member}
    • DELETE /communities/{id}/bans/{member}
    • GET /communities/{id}/log
    • POST /communities
    • PUT /communities/{id}
  • বট
    • GET /events
    • GET /events/stream
    • GET /me/commands
    • PUT /me/commands
    • POST /interactions/{id}/reply
    • POST /channels/{id}/voice
  • ঘুরে দেখো
    • GET /tags
    • GET /search
    • GET /emojis
  • GIF ও ভিডিও
    • GET /media
    • GET /media/mine
    • GET /media/{id}
    • POST /media/uploads
    • PUT /media/uploads/{upload}
    • POST /media/{id}
    • DELETE /media/{id}
  • তোমার অ্যাকাউন্ট
    • GET /me
    • GET /feed
    • POST /me/pictures
    • PUT /me/profile
    • GET /me/emojis
    • POST /me/emojis/pictures
    • POST /me/emojis
    • DELETE /me/emojis/{name}
    • PUT /me/emojis/sharing
    • GET /me/webhooks
    • POST /me/webhooks
    • DELETE /me/webhooks/{id}
    • POST /me/webhooks/{id}/test
  • বিজ্ঞপ্তি
    • GET /notifications
    • POST /notifications/read
  • বার্তা
    • GET /conversations
    • GET /conversations/{with}/messages
    • POST /conversations/{with}/messages
    • POST /conversations/{with}/read
    • DELETE /conversations/{with}/messages/{id}
    • POST /conversations/{with}/planned
    • GET /me/planned-messages
    • POST /me/planned-messages/{id}/send
    • DELETE /me/planned-messages/{id}
  • সম্পর্ক
    • POST /relations
    • GET /profiles/{handle}/followers
    • GET /profiles/{handle}/following
    • GET /me/relations
  • সংগ্রহ
    • GET /me/collections
    • POST /me/collections
    • PUT /me/collections/{id}
    • DELETE /me/collections/{id}
    • GET /me/collections/{id}/posts
    • POST /me/collections/{id}/posts
  • উপহার
    • GET /partner/quota
    • GET /partner/gifts
    • POST /partner/gifts
    • GET /gift-drops
    • POST /gift-drops

অবজেক্ট

  • অবজেক্ট
  • Service
  • RateLimit
  • Post
  • Reply
  • ReplyVote
  • PlannedReply
  • ReplySettings
  • Counts
  • Media
  • Poll
  • PollOption
  • ProfileBrief
  • Profile
  • CommunityBrief
  • Community
  • Membership
  • Person
  • Channel
  • ChannelCategory
  • ChannelSymbol
  • ChannelMessage
  • Role
  • GroupMember
  • ChannelOverride
  • Bell
  • InviteLink
  • InvitePreview
  • InviteGroup
  • Joined
  • LogEntry
  • Ban
  • Until
  • Tag
  • SearchResult
  • Emoji
  • Notification
  • Actor
  • Conversation
  • Message
  • PlannedMessage
  • ScheduledPost
  • Collection
  • Event
  • EventSignups
  • EventSignup
  • Picture
  • EmojiPicture
  • OwnEmoji
  • GroupEmoji
  • BotEvent
  • BotCommand
  • VoiceSeat
  • Webhook
  • WebhookCreated
  • GroupBot
  • VoiceRoom
  • VoicePerson
  • GiftDrop
  • OwnGiftDrop
  • Quota
  • QuotaLook
  • QuotaGift
  • MediaItem
  • Embed
  • UploadStarted
  • UploadPiece
  • Created
  • DropCreated
  • Made
  • Ok

আরও

  • যন্ত্রে পাঠযোগ্য বিবরণ
  • অন্য ওয়েবসাইটে GIF ও ভিডিও
  • tellmelo দিয়ে সাইন ইন
  • আমরা যা আশা করি

আমি চাই …

আপনি কী করতে চান বেছে নিন; নিচে শুধু তার ধাপগুলো আছে। পুরো রেফারেন্স আরও নিচে।

  1. আপনার কোনো গ্রুপে, গ্রুপ মেনুর “বট → আমার বট”-এ ছবি, নাম ও @নামসহ বট তৈরি করুন। এর টোকেন আপনি একবারই দেখবেন।
  2. এর “বট যোগ করুন” লিংক শেয়ার করুন বা বট ডিরেক্টরির জন্য জমা দিন, যেখানে টিমের যাচাইয়ের পরে এটি দেখা যায়; গ্রুপে যিনি ভূমিকা পরিচালনা করতে পারেন তিনি সম্মত অনুমতিসহ এটি যোগ করেন।
  3. এর গ্রুপগুলোর ঘটনা স্ট্রিম হিসেবে (GET /v2/events/stream) বা আপনার ঠিকানায় পান, এবং POST /v2/channels/{id}/messages দিয়ে লিখুন। আরও বট-এ।
  4. কমান্ড নিবন্ধন করুন (PUT /v2/me/commands) এবং কার্ড ও বোতাম দিয়ে উত্তর দিন; ভয়েস চ্যানেলে জায়গা নিয়ে বট সংগীত বাজায় (POST /v2/channels/{id}/voice)।

সংক্ষিপ্ত বিবরণ

v2 তোমার নিজের প্রোগ্রামকে tellmelo-র সঙ্গে কথা বলতে দেয়: প্রতি অনুরোধে একটি চাবি, উত্তরে JSON, প্রতিটি তালিকা একইভাবে পাতায় ভাগ হয়। অ্যাপের মতোই নিয়ম।

  • প্রতিটি পথ https://api.tellmelo.com/v2 দিয়ে শুরু হয়।
  • অনুরোধ আর উত্তর UTF-8-এ JSON। ফিল্ডের নাম, কোড আর মান ইংরেজিতে এবং ইংরেজিতেই থাকে।
  • চাবি তোমার অ্যাকাউন্টের মতো কাজ করে: অ্যাপে যা তুমি দেখতে পাও না, তা-ও পড়তে পারে না।
https://api.tellmelo.com/v2

দ্রুত শুরু

  1. “ডেভেলপার অংশ → API”-এ একটি চাবি তৈরি করে কপি করো। এটি একবারই দেখানো হয়।
  2. এটি দিয়ে রুট কল করো। উত্তরে সংস্করণ, চাবির অধিকার আর এই মিনিটে বাকি অনুরোধ দেখা যায়।
  3. প্রতিটি পাথ একইভাবে কাজ করে: হেডারে চাবি, উত্তরে JSON, তালিকার জন্য items আর next।
curl -H "Authorization: Bearer tm_key_…" https://api.tellmelo.com/v2
{
  "name": "tellmelo",
  "version": "2.20",
  "scope": "read write",
  "rateLimit": {
    "limit": 120,
    "remaining": 117
  },
  "docs": "/developers/docs",
  "spec": "/api/v2/openapi.json"
}

এরপর: তোমার প্রোফাইলের জন্য /me, সর্বজনীন পোস্টের জন্য /posts, তোমার ফিডের জন্য /feed।

চেষ্টা করো

একটি কাজ বেছে নাও, ঘরগুলো পূরণ করো এবং অনুরোধটি কপি করো বা এখান থেকেই পাঠাও। লেখার আগে জিজ্ঞেস করা হয়। কোড TELLMELO_KEY থেকে কী পড়ে।

read API সংস্করণ আর এই সার্ভারের নাম।

curl \
  -H "Authorization: Bearer $TELLMELO_KEY" \
  "https://api.tellmelo.com/v2"

তোমার চাবি

প্রতি অ্যাকাউন্টে সর্বোচ্চ ১০টি চাবি, প্রতিটির নাম, নিজস্ব অনুমতি আর চাইলে মেয়াদ শেষের তারিখ। চাবি tm_key_ দিয়ে শুরু হয় এবং একবারই দেখানো হয়। হারিয়েছ? নবায়ন করো; পুরোনো মান আর কাজ করবে না।

এটি তৈরি করো “ডেভেলপার অংশ → API”-এ। এটি অনুরোধের হেডারে যায়:

curl -H "Authorization: Bearer tm_key_…" \
  https://api.tellmelo.com/v2/posts

অথবা, সুবিধা হলে, আলাদা একটি হেডারে:

curl -H "X-Tellmelo-Key: tm_key_…" https://api.tellmelo.com/v2

URL-এ নয়: তা লগ আর ব্রাউজারের ইতিহাসে চলে যাবে।

একই চাবি ছবি লোড করে: প্রতিটি url /api/media-র দিকে নির্দেশ করে; সেখানেও হেডারে চাবি পাঠাও।

curl -H "Authorization: Bearer tm_key_…" \
  -o picture.webp "https://api.tellmelo.com/media?id=…"

একটি চাবি কী করতে পারে

একটি কী সবসময় পড়তে পারে, আর তুমি অনুমতি দিলে লিখতে, উপহার দিতে, মিডিয়া আপলোড করতে ও গ্রুপ চালাতেও পারে। নিচের প্রতিটি পথ বলে তার কী দরকার:

  • read: পড়া। পাবলিক পোস্ট, প্রোফাইল, গ্রুপ ও ট্যাগ, সঙ্গে তোমার ফিড, বিজ্ঞপ্তি, বার্তা আর তোমার গ্রুপগুলোর চ্যানেল।
  • write: কাজ করা। পোস্ট করা, উত্তর দেওয়া, ভোট দেওয়া, বার্তা পাঠানো, গ্রুপের চ্যাটে লেখা, ফলো করা, যোগ দেওয়া, ব্লক করা, বিজ্ঞপ্তি পড়া হিসেবে চিহ্নিত করা।
  • gifts: উপহার দেওয়া। অংশীদারের কোটা থেকে কোনো সদস্যকে, আর নতুন পোস্টের নিচে উপহার। আলাদা অনুমতি, যাতে পোস্ট করার কী কখনো কিছু বিলিয়ে দিতে না পারে।
  • media: নিজের মিডিয়া লাইব্রেরি। GIF ও ভিডিও আপলোড, বদলানো, শেয়ার ও সরানো। এটি আলাদা অনুমতি, কারণ আপলোডে অ্যাকাউন্টের ভিডিও পয়েন্ট খরচ হয়। শেয়ার করা GIF ও ভিডিও খুঁজতে শুধু read লাগে।
  • groups: গ্রুপ পরিচালনা। ভূমিকা, চ্যানেল, বিভাগ, আমন্ত্রণ লিংক, ফিড চ্যানেল, সরানো, মিউট, বের করা আর নিষেধাজ্ঞা, যতটা তোমার অ্যাকাউন্ট গ্রুপে পারে। আলাদা একটি অধিকার, যাতে পোস্ট করার চাবি কখনো না বদলায় গ্রুপে কে কী পারে।

কোনো চাবি যা পারে না

কোনো চাবি পাসওয়ার্ড, ইমেল ঠিকানা, অ্যাকাউন্টের ধরন, জায়গা, ভূমিকা, মুছে ফেলা, সেশন, পুশ ডিভাইস বা অন্য চাবিতে পৌঁছায় না, প্রশাসন বা গ্রুপ নেতৃত্বেও নয়। পাসওয়ার্ড যা রক্ষা করে, কোনো চাবি তা পারে না।

বট

বট হলো গ্রুপের জন্য bot ধরনের আলাদা একটি অ্যাকাউন্ট: পাসওয়ার্ড ও ইমেল ছাড়া, আপনার প্রোগ্রাম তার নিজের কী দিয়ে চালায়। এটি অন্য যেকোনো অ্যাকাউন্টের মতো একই API ব্যবহার করে এবং গ্রুপে তার রোল যা অনুমতি দেয় সবই করতে পারে।

  1. আপনার কোনো গ্রুপে গ্রুপ মেনু খুলুন এবং “বট → আমার বট”-এ ছবি, কভার, নাম, ইউজারনেম ও বিবরণসহ একটি বট তৈরি করুন। টোকেন শুধু একবার দেখানো হয়; এর অনুমতি read, write, media ও groups।
  2. বটের লিংক অন্যদের দিন বা বট ডিরেক্টরির জন্য জমা দিন; টিম যাচাই করলেই এটি সেখানে দেখা যায়। গ্রুপে যিনি ভূমিকা পরিচালনা করতে পারেন তিনি অনুমতি বেছে নেন; বটটি যোগ দেয় এবং নিজস্ব ভূমিকা পায়।
  3. আপনার প্রোগ্রাম টোকেন Authorization: Bearer … হিসেবে পাঠায়, তার গ্রুপগুলোর ঘটনা স্ট্রিম হিসেবে পড়ে এবং বট, চ্যানেল ও গ্রুপ-এর রুট দিয়ে কাজ করে।

একটি ছোট বট যা ঘটনা স্ট্রিম হিসেবে পড়ে এবং /ping কমান্ডে কেবল প্রশ্নকারীকে pong উত্তর দেয়:

// Node 18 or newer: reads the events of the bot's groups as they happen and answers /ping.
const BASE = 'https://api.tellmelo.com/v2';
const KEY = process.env.TELLMELO_BOT_TOKEN;
const call = (method, path, body) =>
  fetch(BASE + path, {
    method,
    headers: { Authorization: 'Bearer ' + KEY, 'Content-Type': 'application/json' },
    body: body && JSON.stringify(body),
  }).then((r) => r.json());

await call('PUT', '/me/commands', { commands: [{ name: 'ping', description: 'Answers pong' }] });

let last = '';
for (;;) {
  // The stream closes after ten minutes; Last-Event-ID goes on where it stopped.
  const res = await fetch(BASE + '/events/stream', {
    headers: { Authorization: 'Bearer ' + KEY, ...(last && { 'Last-Event-ID': last }) },
  });
  const reader = res.body.pipeThrough(new TextDecoderStream()).getReader();
  let buffer = '';
  for (;;) {
    const { value, done } = await reader.read();
    if (done) break;
    buffer += value;
    let end;
    while ((end = buffer.indexOf('

')) >= 0) {
      const data = buffer.slice(0, end).split('
').find((l) => l.startsWith('data: '));
      buffer = buffer.slice(end + 2);
      if (!data) continue;
      const event = JSON.parse(data.slice(6));
      last = event.id;
      if (event.type === 'command' && event.data.command === 'ping')
        await call('POST', '/interactions/' + event.data.interaction + '/reply', { text: 'pong', private: true });
    }
  }
}

একই বট Python-এ, পাতায় পাতায় ঘটনা আনছে:

# Python 3 with requests: the same bot, reading the events page by page.
import os, time, requests

BASE = 'https://api.tellmelo.com/v2'
H = {'Authorization': 'Bearer ' + os.environ['TELLMELO_BOT_TOKEN']}
requests.put(BASE + '/me/commands', headers=H,
             json={'commands': [{'name': 'ping', 'description': 'Answers pong'}]})

since = '0'
while True:
    page = requests.get(BASE + '/events', headers=H, params={'since': since}).json()
    for event in page['items']:
        if event['type'] == 'command' and event['data']['command'] == 'ping':
            requests.post(f"{BASE}/interactions/{event['data']['interaction']}/reply",
                          headers=H, json={'text': 'pong'})
    since = page['next'] or since
    time.sleep(2)
  • গ্রুপে বট কী করতে পারবে তা ঠিক করে সেখানে তার ভূমিকা, টোকেন নয়। ভূমিকাটি তার নাম বহন করে; গ্রুপ সেটিংসের ভূমিকাগুলোতে গ্রুপ এর অনুমতি বদলায় এবং গ্রুপ মেনুর “বট → এই গ্রুপে”-এ বটটি সরায়।
  • প্রতি অ্যাকাউন্টে ৫টি পর্যন্ত বট; প্রতি গ্রুপে তার সুবিধা যতটা অনুমতি দেয়। একটি বট প্রতি গ্রুপে মিনিটে সর্বোচ্চ ৩০টি বার্তা লেখে, অনুসন্ধানে পাওয়া যায় না এবং কেবল তাদেরই লেখে যারা আগে তাকে লিখেছে। সীমা প্রযোজ্য।
  • ঘটনা আপনার নিজের HTTPS ঠিকানাতেও আসে (ওয়েবহুকের মতো স্বাক্ষরিত, পুনঃচেষ্টাসহ)। এছাড়া: কমান্ড (PUT /v2/me/commands) যার উত্তর সবার জন্য বা কেবল প্রশ্নকারীর জন্য, বার্তায় কার্ড ও বোতাম, এবং ভয়েস চ্যানেলে সংগীত (POST /v2/channels/{id}/voice): সব বট-এ।

অনুরোধ আর উত্তর

  • সব জায়গায় JSON। প্রতিটি উত্তর UTF-8-এ application/json, ত্রুটিসহ। শুধু ছবি ছবি হিসেবে আসে।
  • তুমি যা পাঠাও। একটি POST তার ফিল্ডগুলো বডিতে JSON হিসেবে বহন করে। কোনো ফিল্ড URL-এও থাকলে বডিরটাই গণ্য হয়।
  • সময় ১৯৭০ সালের ১ জানুয়ারি, UTC থেকে মিলিসেকেন্ডে।
  • ID স্ট্রিং। এগুলো শুধু পুরোটা মিলিয়ে তুলনা করো।
  • প্রতিটি ফিল্ড সবসময় থাকে। যা নেই তা null; তালিকা খালি থাকতে পারে।
  • লেখা সাধারণ লেখা, ঠিক যেমন লেখা হয়েছে। #ট্যাগ, @নাম আর লিংক যেমন আছে তেমনই থাকে, সার্ভারের নিজস্ব ইমোজিও, :name: হিসেবে; সেগুলোর ছবি /emojis-এ তালিকাভুক্ত।
  • ছবি আপেক্ষিক ঠিকানা, /api/media?id=…। হেডারে চাবি না থাকলে 401 পাবে।

পাতা

প্রতিটি তালিকা limit আর cursor নেয় এবং items আর next দিয়ে উত্তর দেয়। পরের পাতা পেতে next আবার cursor হিসেবে পাঠাও; next খালি হলে শেষ। কার্সর অস্বচ্ছ: এটি বিশ্লেষণ কোরো না, নিজে বানিয়ো না।

{ "items": [ … ], "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx" }

curl -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts?limit=20&cursor=MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"

limit ছাড়া 20টি এন্ট্রি, সর্বোচ্চ 50। কিছু তালিকা পাতায় ভাগ হয় না; সেগুলোর next সবসময় null।

শুধু যা নতুন

প্রতিটি উত্তরে একটি ETag থাকে। পরের বার এটি If-None-Match হিসেবে পাঠাও: কিছু না বদলালে বডি ছাড়া 304 পাবে।

ETag: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"
If-None-Match: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"  →  304

ব্যতিক্রম: /feed-এর কোনো ETag নেই কারণ এর ক্রম বারবার বদলায়, আর লেখার অনুরোধ কখনো 304 দেয় না।

সীমা

একটি চাবি প্রতি মিনিটে 120টি অনুরোধ করতে পারে, “সংগঠন” প্ল্যানে 600, যদি না প্রশাসন অন্য কিছু ঠিক করে। এর বেশি হলে তুমি 429 পাবে এবং কিছুই করা হয়নি। এক মিনিট অপেক্ষা করে আবার পাঠাও।

X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1758624060

লেখার অনুরোধ অ্যাপের সীমাতেও গোনা হয়, যেমন কয়েক মিনিটে কতগুলো পোস্ট। সেটিও rate_limited-সহ 429 দেয়।

হেডার

চাবি ছাড়া কোনো হেডার আবশ্যক নয়।

তুমি যা পাঠাও

হেডারঅর্থ
Authorizationচাবি বহন করে: Bearer tm_key_…। সাধারণ উপায়।
X-Tellmelo-Keyচাবি, Authorization-এর বিকল্প হিসেবে।
Content-Typeapplication/json, বডিসহ অনুরোধের জন্য।
If-None-Matchশেষ উত্তরের ETag। তারপর কিছু না বদলালে উত্তর বডি ছাড়া 304।

যা ফিরে আসে

হেডারঅর্থ
ETagএই উত্তরের আঙুলের ছাপ (W/)। এটি If-None-Match হিসেবে ফেরত পাঠাও।
X-RateLimit-Limitএই চাবি প্রতি মিনিটে কতগুলো অনুরোধ করতে পারে।
X-RateLimit-Remainingবর্তমান মিনিটে তার কতগুলো বাকি।
X-RateLimit-Resetপরের মিনিট কখন শুরু, ১৯৭০, UTC থেকে সেকেন্ডে।
X-Tellmelo-Scopeএই চাবি কী করতে পারে: read বা read write।
Retry-After429-এর সঙ্গে: আবার জিজ্ঞেস করার আগে কত সেকেন্ড অপেক্ষা করতে হবে।
WWW-Authenticateচাবি ছাড়া 401-এ: Bearer।
Cache-Controlno-store: কোনো প্রক্সি উত্তর ক্যাশ করতে পারবে না। তবুও ETag দিয়ে যাচাই করতে পারো।

যখন কিছু কাজ করে না

ত্রুটি JSON হিসেবে আসে: তোমার প্রোগ্রামের জন্য error-এ একটি নির্দিষ্ট ইংরেজি কোড আর মানুষের জন্য message-এ একটি বাক্য, সঙ্গে মানানসই স্ট্যাটাস কোড। শুধু কোড তুলনা করো; বাক্য বদলাতে পারে।

{ "error": "rate_limited",
  "message": "Too many requests. Try again in a minute.",
  "limit": 120 }

কিছু ত্রুটিতে আরও একটি ফিল্ড থাকে: চাবি না থাকার 401-এ docs, 429-এ limit।

স্ট্যাটাসকোডঅর্থ
400bad_requestঅনুরোধ পড়া যায় না, একটি আবশ্যক ফিল্ড নেই, বা কোনো মান অনুমোদিত নয়।
401key_missingহেডারে কোনো চাবি নেই।
401key_invalidচাবিটি বৈধ নয়: ভুল লেখা, বদলানো, বা অ্যাকাউন্ট নিষিদ্ধ।
401unauthorizedসাইন ইন নেই বলে প্রত্যাখ্যাত, চাবি ছাড়া অন্য কারণে।
403scope_missingচাবির প্রয়োজনীয় অধিকার নেই, সাধারণত write।
403account_data_lockedপাসওয়ার্ড, ইমেল ঠিকানা বা মুছে ফেলার মতো অ্যাকাউন্টের ডেটা চাবির নাগালের বাইরে।
403forbiddenতোমার অ্যাকাউন্ট এটি করতে পারে না, যেমন প্রত্যাহার করা অধিকার বা ব্লকের কারণে।
403timed_outএই গ্রুপে এখন একটি মিউট তোমার অ্যাকাউন্টকে চুপ রেখেছে।
404unknown_pathএমন কোনো পাথ নেই, বা এই পদ্ধতিতে নেই।
404not_foundপাওয়া যায়নি, বা তুমি এটি দেখতে পারো না।
409conflictযা আগে থেকে আছে তার সঙ্গে সংঘাত, যেমন নেওয়া হয়ে গেছে এমন নাম।
409feed_offএই গ্রুপের ফিড চ্যানেল বন্ধ।
413too_largeএই সার্ভারের জন্য খুব বড়।
422unprocessableপড়া যায়, কিন্তু এই রূপে সম্ভব নয়।
429rate_limitedঅনেক বেশি অনুরোধ। কিছুই হয়নি; অপেক্ষা করে আবার চেষ্টা করো।
500internal_errorসার্ভারে কিছু একটা ভুল হয়েছে।

সংস্করণ

সংস্করণ পাথে থাকে। যতদিন সেখানে v2 লেখা, পাথ আর ফিল্ড একই থাকে; শুধু নতুন জিনিস যোগ হয়।

সংযোজন দ্বিতীয় সংখ্যাটি বাড়ায়। প্রতিটি পাথ বলে সেটি কবে থেকে আছে।

2.20
PUT /v2/roles/{id}/selfGET /v2/eventsGET /v2/events/streamGET /v2/me/commandsPUT /v2/me/commandsPOST /v2/interactions/{id}/replyGET /v2/communities/{id}/emojisPOST /v2/communities/{id}/emojisDELETE /v2/communities/{id}/emojis/{name}PUT /v2/communities/{id}/channels/shapePOST /v2/channels/{id}/voice
2.19
POST /v2/replies/{id}/votePOST /v2/replies/{id}/pickGET /v2/posts/{id}/replies/waitingPOST /v2/replies/{id}/decideGET /v2/posts/{id}/replies/plannedPUT /v2/me/planned-replies/{id}POST /v2/me/planned-replies/{id}/sendDELETE /v2/me/planned-replies/{id}GET /v2/posts/{id}/reply-settingsPUT /v2/posts/{id}/reply-settingsPOST /v2/posts/{id}/coauthorDELETE /v2/posts/{id}/coauthorPOST /v2/posts/{id}/pinPOST /v2/conversations/{with}/plannedGET /v2/me/planned-messagesPOST /v2/me/planned-messages/{id}/sendDELETE /v2/me/planned-messages/{id}GET /v2/profiles/{handle}/followersGET /v2/profiles/{handle}/followingGET /v2/me/relationsGET /v2/me/collectionsPOST /v2/me/collectionsPUT /v2/me/collections/{id}DELETE /v2/me/collections/{id}GET /v2/me/collections/{id}/postsPOST /v2/me/collections/{id}/postsGET /v2/profiles/{handle}/eventsPOST /v2/me/eventsPUT /v2/me/events/{id}DELETE /v2/me/events/{id}GET /v2/me/events/{id}/signupsPOST /v2/events/{id}/signupPOST /v2/me/picturesPUT /v2/me/profileGET /v2/me/emojisPOST /v2/me/emojis/picturesPOST /v2/me/emojisDELETE /v2/me/emojis/{name}PUT /v2/me/emojis/sharingGET /v2/me/webhooksPOST /v2/me/webhooksDELETE /v2/me/webhooks/{id}POST /v2/me/webhooks/{id}/testPOST /v2/communitiesPUT /v2/communities/{id}GET /v2/communities/{id}/botsGET /v2/communities/{id}/voice
2.16
PUT /v2/communities/{id}/members/{member}/timeoutDELETE /v2/communities/{id}/members/{member}/timeoutGET /v2/communities/{id}/bansPUT /v2/communities/{id}/bans/{member}DELETE /v2/communities/{id}/bans/{member}
2.15
GET /v2/communities/{id}/channelsGET /v2/channels/{id}/messagesGET /v2/communities/{id}/membersGET /v2/communities/{id}/rolesGET /v2/communities/{id}/bellGET /v2/invites/{code}POST /v2/channels/{id}/messagesPOST /v2/channels/{id}/readDELETE /v2/channel-messages/{id}PUT /v2/communities/{id}/bellPOST /v2/invites/{code}/joinPOST /v2/communities/{id}/rolesPUT /v2/roles/{id}DELETE /v2/roles/{id}PUT /v2/communities/{id}/roles/orderPUT /v2/roles/{id}/members/{member}POST /v2/communities/{id}/channelsPUT /v2/channels/{id}DELETE /v2/channels/{id}PUT /v2/communities/{id}/channels/orderGET /v2/channels/{id}/overridesPUT /v2/channels/{id}/overrides/{role}POST /v2/communities/{id}/categoriesPUT /v2/categories/{id}DELETE /v2/categories/{id}PUT /v2/communities/{id}/feedGET /v2/communities/{id}/invitesPOST /v2/communities/{id}/invitesDELETE /v2/invites/{code}POST /v2/channel-messages/{id}/removePOST /v2/communities/{id}/posts/{post}/removeDELETE /v2/communities/{id}/members/{member}GET /v2/communities/{id}/log
2.14
GET /v2/mediaGET /v2/media/mineGET /v2/media/{id}POST /v2/media/uploadsPUT /v2/media/uploads/{upload}POST /v2/media/{id}DELETE /v2/media/{id}
2.12
GET /v2/me/scheduledPOST /v2/posts/{id}/schedulePOST /v2/posts/{id}/editPOST /v2/replies/{id}/editDELETE /v2/replies/{id}POST /v2/replies/{id}/likeDELETE /v2/conversations/{with}/messages/{id}GET /v2/partner/quotaGET /v2/partner/giftsPOST /v2/partner/giftsGET /v2/gift-dropsPOST /v2/gift-drops
2.1
GET /v2/emojisPOST /v2/conversations/{with}/read
2.0
GET /v2GET /v2/postsGET /v2/posts/{id}GET /v2/posts/{id}/repliesGET /v2/profiles/{handle}GET /v2/profiles/{handle}/postsGET /v2/communitiesGET /v2/communities/{id}GET /v2/communities/{id}/postsGET /v2/tagsGET /v2/searchGET /v2/meGET /v2/feedGET /v2/notificationsGET /v2/conversationsGET /v2/conversations/{with}/messagesPOST /v2/postsDELETE /v2/posts/{id}POST /v2/posts/{id}/repliesPOST /v2/posts/{id}/votePOST /v2/relationsPOST /v2/conversations/{with}/messagesPOST /v2/notifications/read

https://api.tellmelo.com/v1/ আর নেই: পুরোনো পাথগুলো 410 দিয়ে উত্তর দেয় এবং বডিতে নতুন পথ জানায়।

এন্ডপয়েন্ট

সব পাথ এক নজরে, তারপর প্রতিটি একটি উদাহরণসহ।

পাথঅধিকারকীসের জন্য
প্রবেশপথ
GET/v2readAPI সংস্করণ আর এই সার্ভারের নাম।
পোস্ট
GET/v2/postsreadসর্বজনীন পোস্ট, নতুনগুলো আগে।
GET/v2/posts/{id}readএকটি পোস্ট, তার id দিয়ে।
POST/v2/postswriteএকটি পোস্ট প্রকাশ করো।
DELETE/v2/posts/{id}writeনিজের একটি পোস্ট সরাও।
GET/v2/me/scheduledreadতোমার যে পোস্টগুলো এখনো আসেনি, আর সেগুলো কীসের অপেক্ষায়।
POST/v2/posts/{id}/schedulewriteনির্ধারিত পোস্ট কখন আসবে, বা পোস্ট নিজে থেকে কখন মুছবে, তা বদলাও।
POST/v2/posts/{id}/editwriteতোমার একটি পোস্টের লেখা বদলাও।
GET/v2/posts/{id}/reply-settingsreadতোমার পোস্টে কে উত্তর দিতে পারে, উত্তর অনুমোদনের অপেক্ষা করে কি না, আর ধীর মোড।
PUT/v2/posts/{id}/reply-settingswriteনিজের পোস্টের উত্তর সেটিং বদলাও। যা দেবে না, তা যেমন আছে থাকবে।
POST/v2/posts/{id}/coauthorwriteসহ-লেখক হওয়ার আমন্ত্রণ গ্রহণ বা প্রত্যাখ্যান করো।
DELETE/v2/posts/{id}/coauthorwriteসহ-লেখক থেকে সরে যাও, অথবা লেখক হিসেবে সহ-লেখককে পোস্ট থেকে সরাও।
POST/v2/posts/{id}/pinwriteনিজের পোস্ট প্রোফাইলের উপরে পিন করো, অথবা পিন সরাও।
উত্তর
GET/v2/posts/{id}/repliesreadএকটি পোস্টের উত্তর, ব্লক করা অ্যাকাউন্ট বাদে।
POST/v2/posts/{id}/replieswriteএকটি পোস্টের উত্তর দাও।
POST/v2/replies/{id}/editwriteতোমার একটি উত্তরের লেখা বদলাও।
DELETE/v2/replies/{id}writeতোমার একটি উত্তর সরাও।
POST/v2/replies/{id}/likewriteকোনো উত্তরে আপভোট দাও (উত্তরে ভোট চালু হওয়ার পর থেকে পছন্দ মানে আপভোট) বা আপভোট ফিরিয়ে নাও; ডাউনভোট থেকে যায়।
POST/v2/replies/{id}/votewriteকোনো উত্তরে উপরে বা নিচে ভোট দাও, অথবা তোমার ভোট ফিরিয়ে নাও। তোমার ভোট আর পরের স্কোর ফেরত দেয়।
POST/v2/replies/{id}/pickwriteনিজের পোস্টের নিচে একটি উত্তরকে সেরা হিসেবে হাইলাইট করো, অথবা হাইলাইট সরাও।
GET/v2/posts/{id}/replies/waitingreadএকটি পোস্টের নিচে অনুমোদনের অপেক্ষায় থাকা উত্তর: নিজের পোস্টে সব, নইলে শুধু তোমার।
POST/v2/replies/{id}/decidewriteনিজের পোস্টের নিচে অপেক্ষমাণ উত্তর অনুমোদন বা প্রত্যাখ্যান করো। প্রত্যাখ্যাত উত্তর মুছে যায়।
GET/v2/posts/{id}/replies/plannedreadএকটি পোস্টের নিচে পরে পাঠানোর জন্য নির্ধারিত তোমার উত্তর।
PUT/v2/me/planned-replies/{id}writeনির্ধারিত উত্তরের লেখা বা সময় বদলাও। ব্যর্থ উত্তর আবার অপেক্ষা করে।
POST/v2/me/planned-replies/{id}/sendwriteনির্ধারিত উত্তর এখনই পাঠাও।
DELETE/v2/me/planned-replies/{id}writeনির্ধারিত উত্তর মুছে ফেলো।
পোল
POST/v2/posts/{id}/votewriteএকটি পোলে অংশ নাও।
প্রোফাইল
GET/v2/profiles/{handle}readএকটি প্রোফাইল, তার ছোট নাম দিয়ে।
GET/v2/profiles/{handle}/postsreadএকটি প্রোফাইলের সর্বজনীন পোস্ট, নতুনগুলো আগে।
GET/v2/profiles/{handle}/eventsreadএকটি প্রোফাইলের আসন্ন ইভেন্ট, সবচেয়ে কাছেরটি আগে।
POST/v2/me/eventswriteইভেন্ট তৈরি করো। তার id ফেরত দেয়।
PUT/v2/me/events/{id}writeতোমার একটি ইভেন্ট বদলাও। সব ঘর নতুন করে সেট হয়।
DELETE/v2/me/events/{id}writeতোমার একটি ইভেন্ট মুছে ফেলো।
GET/v2/me/events/{id}/signupsreadতোমার কোনো ইভেন্টে কে নাম লিখিয়েছে।
POST/v2/events/{id}/signupwriteকোনো ইভেন্টে নাম লেখাও বা বাতিল করো।
গ্রুপ
GET/v2/communitiesreadএই ইনস্ট্যান্সের খোলা গ্রুপ; mine=true দিলে তোমার অ্যাকাউন্টের গ্রুপ।
GET/v2/communities/{id}readএকটি গ্রুপ, তার id দিয়ে।
GET/v2/communities/{id}/postsreadকোনো গ্রুপের ফিড চ্যানেলের পোস্ট, নতুনগুলো আগে।
GET/v2/communities/{id}/membersreadকোনো গ্রুপের সদস্য, তাদের ভূমিকাসহ।
GET/v2/communities/{id}/rolesreadকোনো গ্রুপের ভূমিকা, সবচেয়ে উঁচুটি আগে, @everyone শেষে।
GET/v2/communities/{id}/bellreadকোনো গ্রুপ তোমাকে কোন বিজ্ঞপ্তি পাঠায়।
GET/v2/invites/{code}readযোগ দেওয়ার আগে, আমন্ত্রণ লিংকের পেছনের গ্রুপ।
PUT/v2/roles/{id}/selfwriteনিজে বেছে নেওয়ার ভূমিকা নিন বা ছেড়ে দিন।
GET/v2/communities/{id}/emojisreadএকটি গ্রুপের নিজস্ব ইমোজি।
PUT/v2/communities/{id}/bellwriteকোনো গ্রুপ তোমাকে কোন বিজ্ঞপ্তি পাঠাবে তা ঠিক করা।
POST/v2/invites/{code}/joinwriteআমন্ত্রণ লিংক দিয়ে গ্রুপে যোগ দেওয়া।
GET/v2/communities/{id}/botsreadএকটি গ্রুপের বট আর তাদের ভূমিকা যা করতে দেয়।
চ্যানেল
GET/v2/communities/{id}/channelsreadকোনো গ্রুপের যে চ্যানেলগুলো তুমি দেখো, তাদের ক্রমে।
GET/v2/channels/{id}/messagesreadকোনো চ্যাট চ্যানেলের বার্তা, নতুনগুলো আগে।
POST/v2/channels/{id}/messageswriteকোনো চ্যাট চ্যানেলে বার্তা লেখা।
POST/v2/channels/{id}/readwriteকোনো চ্যাট চ্যানেলকে একটি সময় পর্যন্ত পড়া হিসেবে চিহ্নিত করা।
DELETE/v2/channel-messages/{id}writeচ্যাট চ্যানেলে নিজের কোনো বার্তা মুছে ফেলা।
GET/v2/communities/{id}/voicereadএকটি গ্রুপের ভয়েস চ্যানেলে এখন কে আছে, চ্যানেল অনুযায়ী।
গ্রুপ চালানো
POST/v2/communities/{id}/emojisgroupsগ্রুপে একটি ইমোজি যোগ করুন।
DELETE/v2/communities/{id}/emojis/{name}groupsগ্রুপ থেকে একটি ইমোজি সরান।
POST/v2/communities/{id}/rolesgroupsভূমিকা তৈরি করা।
PUT/v2/roles/{id}groupsকোনো ভূমিকার নাম, রং ও অধিকার বদলানো।
DELETE/v2/roles/{id}groupsভূমিকা মুছে ফেলা।
PUT/v2/communities/{id}/roles/ordergroupsভূমিকাগুলোর ক্রম ঠিক করা।
PUT/v2/roles/{id}/members/{member}groupsকোনো সদস্যকে ভূমিকা দেওয়া বা তার কাছ থেকে নেওয়া।
POST/v2/communities/{id}/channelsgroupsচ্যাট চ্যানেল তৈরি করা।
PUT/v2/channels/{id}groupsকোনো চ্যানেলের নাম, বিষয় ও বিভাগ বদলানো।
DELETE/v2/channels/{id}groupsচ্যাট চ্যানেল তার বার্তাসহ মুছে ফেলা।
PUT/v2/communities/{id}/channels/ordergroupsবিভাগ ও চ্যাট চ্যানেলের ক্রম ঠিক করা।
PUT/v2/communities/{id}/channels/shapegroupsগ্রুপের সব চ্যানেল প্রতীকের আকার ঠিক করা।
GET/v2/channels/{id}/overridesgroupsভূমিকারা কোনো চ্যানেলে গ্রুপ থেকে আলাদাভাবে কী পারে।
PUT/v2/channels/{id}/overrides/{role}groupsকোনো ভূমিকা কোনো চ্যানেলে আলাদাভাবে কী পারে তা ঠিক করা।
POST/v2/communities/{id}/categoriesgroupsচ্যানেলের জন্য বিভাগ তৈরি করা।
PUT/v2/categories/{id}groupsবিভাগের নাম বদলানো।
DELETE/v2/categories/{id}groupsবিভাগ মুছে ফেলা।
PUT/v2/communities/{id}/feedgroupsকোনো গ্রুপের ফিড চ্যানেল চালু বা বন্ধ করা।
GET/v2/communities/{id}/invitesgroupsকোনো গ্রুপের যে আমন্ত্রণ লিংকগুলো এখনো চলে।
POST/v2/communities/{id}/invitesgroupsআমন্ত্রণ লিংক তৈরি করা।
DELETE/v2/invites/{code}groupsআমন্ত্রণ লিংক ফিরিয়ে নেওয়া।
POST/v2/channel-messages/{id}/removegroupsচ্যানেল থেকে অন্য সদস্যের বার্তা সরানো।
POST/v2/communities/{id}/posts/{post}/removegroupsগ্রুপ থেকে পোস্ট সরানো।
DELETE/v2/communities/{id}/members/{member}groupsগ্রুপ থেকে কোনো সদস্যকে বের করা।
PUT/v2/communities/{id}/members/{member}/timeoutgroupsকোনো সদস্যকে মিউট করা।
DELETE/v2/communities/{id}/members/{member}/timeoutgroupsমিউট তুলে দেওয়া।
GET/v2/communities/{id}/bansgroupsকোনো গ্রুপের চলমান নিষেধাজ্ঞা।
PUT/v2/communities/{id}/bans/{member}groupsকোনো সদস্যকে নিষিদ্ধ করা।
DELETE/v2/communities/{id}/bans/{member}groupsনিষেধাজ্ঞা তোলা।
GET/v2/communities/{id}/loggroupsনেতৃত্বের লগ: কে কী সরিয়েছে আর কেন।
POST/v2/communitiesgroupsএকটি গ্রুপ তৈরি করো। তার id ফেরত দেয়; তুমি এর প্রতিষ্ঠাতা।
PUT/v2/communities/{id}groupsতুমি যে গ্রুপ চালাও তা বদলাও। যা দেবে না, তা যেমন আছে থাকবে।
বট
GET/v2/eventsreadকোনো ঘটনার পর থেকে বটের গ্রুপগুলোর ঘটনা, পাতায় পাতায়।
GET/v2/events/streamreadবটের গ্রুপগুলোর ঘটনা, ঘটার সঙ্গে সঙ্গে (server-sent events)।
GET/v2/me/commandsreadবটের কমান্ড।
PUT/v2/me/commandswriteবটের সব কমান্ড একসঙ্গে ঠিক করুন।
POST/v2/interactions/{id}/replywriteকোনো কমান্ড বা বোতামের উত্তর দিন।
POST/v2/channels/{id}/voicewriteসংগীত বা শব্দ বাজাতে ভয়েস চ্যানেলে জায়গা নিন।
ঘুরে দেখো
GET/v2/tagsreadএখন চলমান ট্যাগগুলো।
GET/v2/searchreadপোস্ট, নাম, ছোট নাম আর ট্যাগে খোঁজ।
GET/v2/emojisreadসার্ভারের নিজস্ব ইমোজি, ছবির ঠিকানাসহ।
GIF ও ভিডিও
GET/v2/mediareadশেয়ার করা GIF বা ভিডিও, সবচেয়ে বেশি ব্যবহৃতগুলো আগে।
GET/v2/media/minemediaতোমার নিজের মিডিয়া লাইব্রেরি, সবচেয়ে নতুনগুলো আগে।
GET/v2/media/{id}readএকটি GIF বা ভিডিও, তোমার বা শেয়ার করা।
POST/v2/media/uploadsmediaএকটি আপলোড শুরু করো।
PUT/v2/media/uploads/{upload}mediaফাইলের একটি টুকরো পাঠাও।
POST/v2/media/{id}mediaতোমার কোনো GIF বা ভিডিও বদলাও।
DELETE/v2/media/{id}mediaতোমার কোনো GIF বা ভিডিও সরাও।
তোমার অ্যাকাউন্ট
GET/v2/mereadতোমার নিজের প্রোফাইল, সেই id-সহ যা অন্য পাথগুলো আশা করে।
GET/v2/feedreadতোমার নিজের ফিড, অ্যাপ যেভাবে সাজায়।
POST/v2/me/pictureswriteএকটি ছবি তার বাইট হিসেবে আপলোড করো। id আর url ফেরত দেয়; তারপর id প্রোফাইল ছবি, কভার বা পোস্টে ব্যবহার করো।
PUT/v2/me/profileprofileতোমার প্রোফাইল বদলাও: নাম, পরিচিতি, প্রোফাইল ছবি, কভার আর প্রোফাইলের রং। যা দেবে না, তা যেমন আছে থাকবে।
GET/v2/me/emojisreadতোমার নিজের ইমোজি।
POST/v2/me/emojis/picturesprofileনিজের ইমোজির ছবি তার বাইট হিসেবে আপলোড করো।
POST/v2/me/emojisprofileনিজের ইমোজি তৈরি করো। তোমার সব ইমোজি ফেরত দেয়।
DELETE/v2/me/emojis/{name}profileনিজের ইমোজি সরাও। বাকিগুলো ফেরত দেয়।
PUT/v2/me/emojis/sharingprofileতোমার ফলোয়াররা নিজেদের লেখায় তোমার ইমোজি ব্যবহার করতে পারবে কি না ঠিক করো।
GET/v2/me/webhookswebhooksতোমার ওয়েবহুক আর তাদের অবস্থা।
POST/v2/me/webhookswebhooksওয়েবহুক তৈরি করো। id আর স্বাক্ষরের গোপন কোড শুধু এবারই ফেরত দেয়।
DELETE/v2/me/webhooks/{id}webhooksওয়েবহুক মুছে ফেলো।
POST/v2/me/webhooks/{id}/testwebhooksওয়েবহুকে একটি পরীক্ষা পাঠাও।
বিজ্ঞপ্তি
GET/v2/notificationsreadতোমার বিজ্ঞপ্তি, নতুনগুলো আগে।
POST/v2/notifications/readwriteতোমার বিজ্ঞপ্তিগুলো পড়া হিসেবে চিহ্নিত করো।
বার্তা
GET/v2/conversationsreadতোমার ইনবক্স: প্রতি আলাপে এক সারি, সবচেয়ে নতুন আগে।
GET/v2/conversations/{with}/messagesreadএকটি আলাপের বার্তা, নতুনগুলো আগে।
POST/v2/conversations/{with}/messageswriteএকটি আলাপে বার্তা পাঠাও।
POST/v2/conversations/{with}/readwriteএকটি আলাপের সব বার্তা পড়া হিসেবে চিহ্নিত করো।
DELETE/v2/conversations/{with}/messages/{id}writeতোমার একটি মেসেজ মুছে ফেলো।
POST/v2/conversations/{with}/plannedwriteএকটি বার্তা পরে পাঠানোর জন্য নির্ধারণ করো। নির্ধারিত বার্তার id ফেরত দেয়।
GET/v2/me/planned-messagesreadতোমার যে বার্তাগুলো এখনও পাঠানো বাকি, সময় অনুযায়ী সাজানো।
POST/v2/me/planned-messages/{id}/sendwriteআটকে রাখা বা ব্যর্থ নির্ধারিত বার্তা এখনই পাঠাও।
DELETE/v2/me/planned-messages/{id}writeনির্ধারিত বার্তা পাঠানোর আগে মুছে ফেলো।
সম্পর্ক
POST/v2/relationswriteপছন্দ, সংরক্ষণ, রিপোস্ট, ফলো, যোগদান, ব্লক, মিউট, kind অনুযায়ী।
GET/v2/profiles/{handle}/followersreadকে একটি প্রোফাইল ফলো করে, নতুনরা আগে।
GET/v2/profiles/{handle}/followingreadএকটি প্রোফাইল কাকে ফলো করে, নতুনরা আগে।
GET/v2/me/relationsreadতুমি কাকে ব্লক, মিউট বা শুধু বার্তার জন্য ব্লক করেছ, নতুনরা আগে।
সংগ্রহ
GET/v2/me/collectionsreadতোমার সংগ্রহ আর তাতে পোস্টের সংখ্যা।
POST/v2/me/collectionswriteসংগ্রহ তৈরি করো। তার id ফেরত দেয়।
PUT/v2/me/collections/{id}writeসংগ্রহের নাম বদলাও।
DELETE/v2/me/collections/{id}writeসংগ্রহ মুছে ফেলো।
GET/v2/me/collections/{id}/postsreadএকটি সংগ্রহের পোস্ট, সংরক্ষিত ট্যাবের মতো।
POST/v2/me/collections/{id}/postswriteপোস্ট সংগ্রহে রাখো বা সরাও।
উপহার
GET/v2/partner/quotareadতোমার কোটায় দেওয়ার জন্য কতটা বাকি।
GET/v2/partner/giftsreadকোটা থেকে তুমি কী, কাকে আর কখন দিয়েছ – নতুনগুলো আগে।
POST/v2/partner/giftsgiftsতোমার কোটা থেকে কোনো সদস্যকে প্ল্যানের মাস বা স্ফুলিঙ্গ দাও।
GET/v2/gift-dropsreadপোস্টের নিচে তোমার উপহার: কতগুলো জায়গা এখনো খালি আর কীভাবে টাকা দেওয়া হয়েছে।
POST/v2/gift-dropsgiftsঅন্যদের নেওয়ার জন্য উপহারসহ একটি পোস্ট প্রকাশ করো।

প্রবেশপথ

প্রতিটি প্রোগ্রামের প্রথম অনুরোধ: চাবি কাজ করে কি না, আর তা কী করতে পারে?

GET/v2

API সংস্করণ আর এই সার্ভারের নাম।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

শেষে স্ল্যাশ ছাড়া: https://api.tellmelo.com/v2/ 308 দিয়ে https://api.tellmelo.com/v2-এ পাঠায়, আর সব প্রোগ্রাম তা অনুসরণ করে না।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2"

উত্তর

একটি Service দিয়ে উত্তর দেয়।

উদাহরণ
{
  "name": "tellmelo",
  "version": "2.20",
  "scope": "read write",
  "rateLimit": {
    "limit": 120,
    "remaining": 117
  },
  "docs": "/developers/docs",
  "spec": "/api/v2/openapi.json"
}

সম্ভাব্য স্ট্যাটাস: 200304401429

পোস্ট

সর্বজনীন পোস্ট পড়া, নিজের পোস্ট প্রকাশ করা আর আবার সরানো।

GET/v2/posts

সর্বজনীন পোস্ট, নতুনগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.0 থেকে

সর্বজনীন পাথে counts.likes আর counts.reposts সবসময় 0 এবং pinned হলো false।

গ্রুপের পোস্ট এখানে নয়, /communities/{id}/posts-এ।

প্যারামিটার

নামধরনঅর্থ
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts?limit=20"

উত্তর

Post-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": null,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "giftDrop": {
        "item": "plan",
        "quantity": 3,
        "places": 10,
        "left": 4,
        "audience": "followers",
        "newAccounts": false,
        "status": "open",
        "claimed": true
      },
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GET/v2/posts/{id}

একটি পোস্ট, তার id দিয়ে।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

সর্বজনীন পাথে counts.likes আর counts.reposts সবসময় 0 এবং pinned হলো false।

গ্রুপের পোস্ট এখানে নয়, /communities/{id}/posts-এ।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"

উত্তর

একটি Post দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "text": "The bees are back in the garden 🐝 #garden",
  "kind": "poll",
  "author": {
    "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
    "handle": "mara",
    "name": "Mara 🌻",
    "verified": true,
    "accountKind": "person"
  },
  "community": {
    "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
    "name": "Urban Gardening"
  },
  "media": [
    {
      "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
      "kind": "image",
      "poster": null,
      "ai": "without"
    }
  ],
  "poll": {
    "options": [
      {
        "text": "Lavender",
        "votes": 12
      },
      {
        "text": "Sunflowers",
        "votes": 7
      },
      {
        "text": "Clover",
        "votes": 3
      }
    ],
    "total": 22,
    "multiple": false,
    "endsAt": null,
    "running": true,
    "resultsVisible": true,
    "myVotes": [
      0
    ]
  },
  "quotes": null,
  "continues": null,
  "counts": {
    "replies": 4,
    "likes": 31,
    "reposts": 2
  },
  "pinned": false,
  "giftDrop": {
    "item": "plan",
    "quantity": 3,
    "places": 10,
    "left": 4,
    "audience": "followers",
    "newAccounts": false,
    "status": "open",
    "claimed": true
  },
  "createdAt": 1758624000000
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/posts

একটি পোস্ট প্রকাশ করো।

  • অধিকার write
  • v2.0 থেকে

পোস্টে লেখা বা পোল লাগে। দৈর্ঘ্য, পোলের বিকল্প আর গতি সার্ভার ঠিক করে; তার বাইরে 400 বা 429 পাবে।

media দিয়ে ছবি, একটি GIF বা একটি ভিডিও যোগ করো। GIF বা ভিডিও একাই থাকে। tellmelo-তে অন্যদের শেয়ার করা GIF ও ভিডিও তুমি ব্যবহার করতে পারো।

কাছের বন্ধুদের জন্য বা সহ-লেখকসহ পোস্ট সঙ্গে সঙ্গে প্রকাশ হয়, গ্রুপে নয় আর নির্ধারিত সময়ে নয়। দুটো একসঙ্গে হয় না।

প্যারামিটার

নামধরনঅর্থ
textবডিতেstringঐচ্ছিকপোস্ট, উত্তর বা বার্তার লেখা।
communityবডিতেstringঐচ্ছিকযে গ্রুপের ফিড চ্যানেলে পোস্ট যাবে তার id; চ্যানেলটি চালু থাকতে হবে আর তোমার সেই অধিকার লাগবে। না দিলে পোস্ট কোনো গ্রুপে থাকে না।
quotesবডিতেstringঐচ্ছিকযে পোস্টটি এটি উদ্ধৃত করে তার id।
pollবডিতেstring[]ঐচ্ছিকউত্তরের বিকল্পগুলো লেখার তালিকা হিসেবে।
mediaবডিতেstring[]ঐচ্ছিকঅ্যাপে আপলোড করা ছবির ID, অথবা মিডিয়া লাইব্রেরির একটি GIF বা ভিডিওর ID (2.14 থেকে)।
audienceবডিতেstringঐচ্ছিকপোস্ট কে দেখবে: everyone যারা দেখতে পারে সবাই, close শুধু তোমার কাছের বন্ধুরা।everyoneclose
coauthorবডিতেstringঐচ্ছিকযে অ্যাকাউন্টকে সহ-লেখক হতে আমন্ত্রণ জানাও তার id। তোমাদের একে অপরকে ফলো করতে হবে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"The bees are back in the garden 🐝 #garden","audience":"everyone"}' \
  "https://api.tellmelo.com/v2/posts"

উত্তর

একটি Created দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "scheduledFor": null,
  "deleteAt": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

DELETE/v2/posts/{id}

নিজের একটি পোস্ট সরাও।

  • অধিকার write
  • v2.0 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/me/scheduled

তোমার যে পোস্টগুলো এখনো আসেনি, আর সেগুলো কীসের অপেক্ষায়।

  • অধিকার read
  • ETag-সহ
  • v2.12 থেকে

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/scheduled"

উত্তর

ScheduledPost-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "Market day tomorrow – see you at the bee stand! #garden",
      "communityId": null,
      "publishAt": 1758710400000,
      "deleteAt": null,
      "waitingFor": "time",
      "createdAt": 1758624000000
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

POST/v2/posts/{id}/schedule

নির্ধারিত পোস্ট কখন আসবে, বা পোস্ট নিজে থেকে কখন মুছবে, তা বদলাও।

  • অধিকার write
  • v2.12 থেকে

শুধু তোমার নিজের পোস্ট। পোস্টের উপহারের টাকা না দেওয়া পর্যন্ত সেটি নির্ধারণ করা যায় না।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
publishAtবডিতেintegerঐচ্ছিকনির্ধারিত পোস্ট কখন আসবে, ১৯৭০ থেকে মিলিসেকেন্ডে।
deleteAtবডিতেintegerঐচ্ছিকপোস্ট নিজে থেকে কখন মুছবে, ১৯৭০ থেকে মিলিসেকেন্ডে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/schedule"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/posts/{id}/edit

তোমার একটি পোস্টের লেখা বদলাও।

  • অধিকার write
  • v2.12 থেকে

শুধু তোমার প্ল্যান সম্পাদনার জন্য যে সময় দেয় তার মধ্যে। নির্ধারিত পোস্ট সম্পাদনা করা যায় না।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
textবডিতেstringআবশ্যকপোস্ট, উত্তর বা বার্তার লেখা।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"The bees are back in the garden 🐝🌻 #garden"}' \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/edit"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/posts/{id}/reply-settings

তোমার পোস্টে কে উত্তর দিতে পারে, উত্তর অনুমোদনের অপেক্ষা করে কি না, আর ধীর মোড।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/reply-settings"

উত্তর

একটি ReplySettings দিয়ে উত্তর দেয়।

উদাহরণ
{
  "audience": "following",
  "approval": false,
  "slow": "auto"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

PUT/v2/posts/{id}/reply-settings

নিজের পোস্টের উত্তর সেটিং বদলাও। যা দেবে না, তা যেমন আছে থাকবে।

  • অধিকার write
  • v2.19 থেকে

শুধু তোমার নিজের পোস্ট।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
audienceবডিতেstringঐচ্ছিককে উত্তর দিতে পারে: সবাই, যাদের তুমি ফলো করো, উল্লেখ করা লোকেরা, বা কেউ না।allfollowingmentionednobody
approvalবডিতেbooleanঐচ্ছিকউত্তর কি শুধু তোমার অনুমোদনের পরে দেখায়।
slowবডিতেstringঐচ্ছিকধীর মোড: auto অনেক উত্তর এলে নিজে চালু হয়, on সবসময়, off কখনো না।autoonoff

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"audience":"following","approval":false,"slow":"auto"}' \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/reply-settings"

উত্তর

একটি ReplySettings দিয়ে উত্তর দেয়।

উদাহরণ
{
  "audience": "following",
  "approval": false,
  "slow": "auto"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/posts/{id}/coauthor

সহ-লেখক হওয়ার আমন্ত্রণ গ্রহণ বা প্রত্যাখ্যান করো।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
acceptবডিতেbooleanআবশ্যকtrue আমন্ত্রণ গ্রহণ করে, false প্রত্যাখ্যান করে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"accept":true}' \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/coauthor"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/posts/{id}/coauthor

সহ-লেখক থেকে সরে যাও, অথবা লেখক হিসেবে সহ-লেখককে পোস্ট থেকে সরাও।

  • অধিকার write
  • v2.19 থেকে

সহ-লেখক আর পোস্টের লেখকের জন্য।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/coauthor"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/posts/{id}/pin

নিজের পোস্ট প্রোফাইলের উপরে পিন করো, অথবা পিন সরাও।

  • অধিকার write
  • v2.19 থেকে

শুধু তোমার দৃশ্যমান পোস্ট। কয়টি পিন করা যায় তা প্ল্যানের উপর নির্ভর করে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
activeবডিতেbooleanআবশ্যকtrue পোস্ট পিন করে, false পিন সরায়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"active":true}' \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/pin"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

উত্তর

একটি পোস্টের নিচের উত্তর, parentId-সহ তালিকা হিসেবে।

GET/v2/posts/{id}/replies

একটি পোস্টের উত্তর, ব্লক করা অ্যাকাউন্ট বাদে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.0 থেকে

তালিকাটি সমতল এবং লেখার ক্রমে; parentId একে গাছে পরিণত করে। একটি পাতায় সবসময় পুরো থ্রেড থাকে। ব্লক করা অ্যাকাউন্টের উত্তর বাদ থাকে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies?limit=20"

উত্তর

Reply-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
      "text": "Same here, the lavender is full of them.",
      "kind": "post",
      "author": {
        "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
        "handle": "jon",
        "name": "Jon",
        "verified": false,
        "accountKind": "person"
      },
      "community": null,
      "media": [],
      "poll": null,
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 0,
        "likes": 3,
        "reposts": 0
      },
      "pinned": false,
      "giftDrop": null,
      "createdAt": 1758624600000,
      "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "parentId": null
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/posts/{id}/replies

একটি পোস্টের উত্তর দাও।

  • অধিকার write
  • v2.0 থেকে

ধীর মোডে প্রতি জনের প্রতি 10 মিনিটে একটি উত্তর, নইলে 429। লেখক আর তাঁর ফলো করা অ্যাকাউন্ট ছাড় পায়।

media দিয়ে সর্বোচ্চ একটি ছবি, GIF বা ভিডিও।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
textবডিতেstringআবশ্যকপোস্ট, উত্তর বা বার্তার লেখা।
parentIdবডিতেstringঐচ্ছিকযে উত্তরের উত্তর এটি তার id। না থাকলে সরাসরি পোস্টে।
mediaবডিতেstring[]ঐচ্ছিকঅ্যাপে আপলোড করা ছবির ID, অথবা মিডিয়া লাইব্রেরির একটি GIF বা ভিডিওর ID (2.14 থেকে)।
publishAtবডিতেintegerঐচ্ছিকউত্তর কখন প্রকাশ হবে, ১৯৭০ থেকে মিলিসেকেন্ডে। না দিলে সঙ্গে সঙ্গে যায়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Same here, the lavender is full of them."}' \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies"

উত্তর

একটি Created দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "scheduledFor": null,
  "deleteAt": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/replies/{id}/edit

তোমার একটি উত্তরের লেখা বদলাও।

  • অধিকার write
  • v2.12 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকউত্তরের id।
textবডিতেstringআবশ্যকপোস্ট, উত্তর বা বার্তার লেখা।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Same here, the lavender and the clover are full of them."}' \
  "https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/edit"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/replies/{id}

তোমার একটি উত্তর সরাও।

  • অধিকার write
  • v2.12 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকউত্তরের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/replies/{id}/like

কোনো উত্তরে আপভোট দাও (উত্তরে ভোট চালু হওয়ার পর থেকে পছন্দ মানে আপভোট) বা আপভোট ফিরিয়ে নাও; ডাউনভোট থেকে যায়।

  • অধিকার write
  • v2.12 থেকে
  • পুরোনো

২.১৯ থেকে পুরোনো: POST /replies/{id}/vote ব্যবহার করো। এই রুট আপাতত থাকছে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকউত্তরের id।
activeবডিতেbooleanআবশ্যকtrue সম্পর্ক স্থাপন করে, false সরিয়ে দেয়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"active":true}' \
  "https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/like"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/replies/{id}/vote

কোনো উত্তরে উপরে বা নিচে ভোট দাও, অথবা তোমার ভোট ফিরিয়ে নাও। তোমার ভোট আর পরের স্কোর ফেরত দেয়।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকউত্তরের id।
voteবডিতেstringআবশ্যকup উপরে ভোট, down নিচে ভোট, none তোমার ভোট ফিরিয়ে নেয়।updownnone

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"vote":"up"}' \
  "https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/vote"

উত্তর

একটি ReplyVote দিয়ে উত্তর দেয়।

উদাহরণ
{
  "vote": "up",
  "score": 12
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/replies/{id}/pick

নিজের পোস্টের নিচে একটি উত্তরকে সেরা হিসেবে হাইলাইট করো, অথবা হাইলাইট সরাও।

  • অধিকার write
  • v2.19 থেকে

শুধু নিজের পোস্টের নিচে আর শুধু পোস্টের সরাসরি উত্তর। নতুন হাইলাইট পুরোনোটার জায়গা নেয়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকউত্তরের id।
activeবডিতেbooleanআবশ্যকtrue উত্তর হাইলাইট করে, false হাইলাইট সরায়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"active":true}' \
  "https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/pick"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/posts/{id}/replies/waiting

একটি পোস্টের নিচে অনুমোদনের অপেক্ষায় থাকা উত্তর: নিজের পোস্টে সব, নইলে শুধু তোমার।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

উত্তর অপেক্ষা করবে কি না, লেখক উত্তর সেটিংয়ে ঠিক করেন।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/waiting"

উত্তর

Reply-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
      "text": "Same here, the lavender is full of them.",
      "kind": "post",
      "author": {
        "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
        "handle": "jon",
        "name": "Jon",
        "verified": false,
        "accountKind": "person"
      },
      "community": null,
      "media": [],
      "poll": null,
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 0,
        "likes": 3,
        "reposts": 0
      },
      "pinned": false,
      "giftDrop": null,
      "createdAt": 1758624600000,
      "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "parentId": null
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/replies/{id}/decide

নিজের পোস্টের নিচে অপেক্ষমাণ উত্তর অনুমোদন বা প্রত্যাখ্যান করো। প্রত্যাখ্যাত উত্তর মুছে যায়।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকউত্তরের id।
approveবডিতেbooleanআবশ্যকtrue উত্তর অনুমোদন করে, false প্রত্যাখ্যান করে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"approve":true}' \
  "https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/decide"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/posts/{id}/replies/planned

একটি পোস্টের নিচে পরে পাঠানোর জন্য নির্ধারিত তোমার উত্তর।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

উত্তর দেওয়ার সময় publishAt দিয়ে নির্ধারণ হয়। একসঙ্গে সর্বোচ্চ ২০টি নির্ধারিত উত্তর।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/planned"

উত্তর

PlannedReply-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
      "parentId": null,
      "text": "Count me in for Saturday!",
      "publishAt": 1758710400000,
      "state": "waiting"
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

PUT/v2/me/planned-replies/{id}

নির্ধারিত উত্তরের লেখা বা সময় বদলাও। ব্যর্থ উত্তর আবার অপেক্ষা করে।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকনির্ধারিত উত্তরের id।
textবডিতেstringঐচ্ছিকপোস্ট, উত্তর বা বার্তার লেখা।
publishAtবডিতেintegerঐচ্ছিকউত্তর কখন প্রকাশ হবে, ১৯৭০ থেকে মিলিসেকেন্ডে। না দিলে সঙ্গে সঙ্গে যায়।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"See you there!","publishAt":1758700000000}' \
  "https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/me/planned-replies/{id}/send

নির্ধারিত উত্তর এখনই পাঠাও।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকনির্ধারিত উত্তরের id।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/me/planned-replies/{id}

নির্ধারিত উত্তর মুছে ফেলো।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকনির্ধারিত উত্তরের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

পোল

পোল হলো এমন পোস্ট যার poll ঠিক করা আছে। ভোটের নিজস্ব পাথ আছে।

POST/v2/posts/{id}/vote

একটি পোলে অংশ নাও।

  • অধিকার write
  • v2.0 থেকে

তুমি ভোট না দেওয়া বা পোল শেষ না হওয়া পর্যন্ত প্রতি বিকল্পের ভোট null। total সবসময় থাকে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি পোস্টের id।
optionবডিতেintegerআবশ্যককোন বিকল্প, 0 থেকে গুনে। একাধিক বাছাইয়ে প্রতি বিকল্পে একবার কল করো।
retractবডিতেbooleanঐচ্ছিকtrue ভোট তুলে নেয়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"option":0}' \
  "https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/vote"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

প্রোফাইল

ছোট নাম দিয়ে সর্বজনীন প্রোফাইল, আর তারা কী পোস্ট করেছে।

GET/v2/profiles/{handle}

একটি প্রোফাইল, তার ছোট নাম দিয়ে।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

প্যারামিটার

নামধরনঅর্থ
handleপাথেstringআবশ্যকএকটি প্রোফাইলের ছোট নাম; বড় বা ছোট হাতের অক্ষরে কিছু যায় আসে না।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/profiles/mara"

উত্তর

একটি Profile দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person",
  "about": "Beekeeper, allotment, too many seeds. :tellmelo:",
  "website": "https://mara-imkerei.example/",
  "websiteVerified": true,
  "followers": 148,
  "createdAt": 1750848000000
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/profiles/{handle}/posts

একটি প্রোফাইলের সর্বজনীন পোস্ট, নতুনগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.0 থেকে

সর্বজনীন পাথে counts.likes আর counts.reposts সবসময় 0 এবং pinned হলো false।

গ্রুপের পোস্ট এখানে নয়, /communities/{id}/posts-এ।

প্যারামিটার

নামধরনঅর্থ
handleপাথেstringআবশ্যকএকটি প্রোফাইলের ছোট নাম; বড় বা ছোট হাতের অক্ষরে কিছু যায় আসে না।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/profiles/mara/posts?limit=20"

উত্তর

Post-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": null,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "giftDrop": {
        "item": "plan",
        "quantity": 3,
        "places": 10,
        "left": 4,
        "audience": "followers",
        "newAccounts": false,
        "status": "open",
        "claimed": true
      },
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/profiles/{handle}/events

একটি প্রোফাইলের আসন্ন ইভেন্ট, সবচেয়ে কাছেরটি আগে।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

শুধু যতক্ষণ প্রোফাইলের প্ল্যানে ইভেন্ট আছে। যারা একে অপরকে ব্লক করেছে তাদের মধ্যে কিছু নয়।

প্যারামিটার

নামধরনঅর্থ
handleপাথেstringআবশ্যকএকটি প্রোফাইলের ছোট নাম; বড় বা ছোট হাতের অক্ষরে কিছু যায় আসে না।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/profiles/mara/events"

উত্তর

Event-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b",
      "title": "Seed swap",
      "startsAt": 1758883200000,
      "endsAt": 1758890400000,
      "place": "Community garden",
      "description": "Bring seeds, take seeds.",
      "signups": {
        "count": 14,
        "going": true
      }
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/me/events

ইভেন্ট তৈরি করো। তার id ফেরত দেয়।

  • অধিকার write
  • v2.19 থেকে

ইভেন্টসহ প্ল্যান লাগে, নইলে 403। কতটি আসন্ন থাকতে পারে তা প্ল্যানের উপর নির্ভর করে।

প্যারামিটার

নামধরনঅর্থ
titleবডিতেstringআবশ্যকশিরোনাম।
startsAtবডিতেintegerআবশ্যকশুরু, ১৯৭০ থেকে মিলিসেকেন্ডে।
endsAtবডিতেintegerঐচ্ছিকশেষ, ১৯৭০ থেকে মিলিসেকেন্ডে। ঐচ্ছিক।
placeবডিতেstringঐচ্ছিককোথায় হবে।
descriptionবডিতেstringঐচ্ছিকএকটি বিবরণ।
signupsবডিতেbooleanঐচ্ছিকনাম লেখানো যাবে কি না। নাম লেখানোসহ প্ল্যান লাগে।
capacityবডিতেintegerঐচ্ছিকসর্বোচ্চ কতজন নাম লেখাতে পারবে। না দিলে সীমা নেই।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"Seed swap","startsAt":1758700000000,"place":"Community garden","signups":true,"capacity":30}' \
  "https://api.tellmelo.com/v2/me/events"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

PUT/v2/me/events/{id}

তোমার একটি ইভেন্ট বদলাও। সব ঘর নতুন করে সেট হয়।

  • অধিকার write
  • v2.19 থেকে

শুরু হয়ে যাওয়া ইভেন্ট তার শুরুর সময় রাখে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকইভেন্টের id।
titleবডিতেstringআবশ্যকশিরোনাম।
startsAtবডিতেintegerআবশ্যকশুরু, ১৯৭০ থেকে মিলিসেকেন্ডে।
endsAtবডিতেintegerঐচ্ছিকশেষ, ১৯৭০ থেকে মিলিসেকেন্ডে। ঐচ্ছিক।
placeবডিতেstringঐচ্ছিককোথায় হবে।
descriptionবডিতেstringঐচ্ছিকএকটি বিবরণ।
signupsবডিতেbooleanঐচ্ছিকনাম লেখানো যাবে কি না। নাম লেখানোসহ প্ল্যান লাগে।
capacityবডিতেintegerঐচ্ছিকসর্বোচ্চ কতজন নাম লেখাতে পারবে। না দিলে সীমা নেই।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"Seed swap","startsAt":1758700000000,"place":"Community garden","signups":true,"capacity":30}' \
  "https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/me/events/{id}

তোমার একটি ইভেন্ট মুছে ফেলো।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকইভেন্টের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/me/events/{id}/signups

তোমার কোনো ইভেন্টে কে নাম লিখিয়েছে।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকইভেন্টের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b/signups"

উত্তর

EventSignup-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "at": 1758624000000
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/events/{id}/signup

কোনো ইভেন্টে নাম লেখাও বা বাতিল করো।

  • অধিকার write
  • v2.19 থেকে

শুধু নাম লেখানোর ইভেন্টে, নিজেরটিতে নয়। ভরে গেলে 409।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকইভেন্টের id।
goingবডিতেbooleanআবশ্যকtrue তোমার নাম লেখায়, false বাতিল করে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"going":true}' \
  "https://api.tellmelo.com/v2/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b/signup"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

গ্রুপ

খোলা গ্রুপ আর তোমার নিজের গ্রুপ, তাদের পোস্ট, সদস্য, ভূমিকা ও আমন্ত্রণ লিংক।

GET/v2/communities

এই ইনস্ট্যান্সের খোলা গ্রুপ; mine=true দিলে তোমার অ্যাকাউন্টের গ্রুপ।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

সদস্যসংখ্যা অনুযায়ী সাজানো এবং পাতায় ভাগ হয় না; next সবসময় null।

প্যারামিটার

নামধরনঅর্থ
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
mineকোয়েরিতেbooleanঐচ্ছিকতোমার অ্যাকাউন্টের গ্রুপের জন্য true, অভ্যন্তরীণ ও লুকানোগুলোও, নামের ক্রমে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities?limit=20"

উত্তর

Community-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
      "name": "Urban Gardening",
      "handle": "urbangardening",
      "description": "Balconies, allotments, rooftops: whatever grows.",
      "tags": [
        "garden",
        "bees"
      ],
      "members": 312,
      "joinPolicy": "open",
      "visibility": "open",
      "feedChannel": true,
      "sparks": 24,
      "perks": [
        "tint",
        "welcome"
      ],
      "membership": {
        "leader": null,
        "roles": [
          "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
        ],
        "permissions": [
          "attach",
          "invite",
          "send",
          "view"
        ],
        "mutedUntil": null
      }
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GET/v2/communities/{id}

একটি গ্রুপ, তার id দিয়ে।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

অভ্যন্তরীণ ও লুকানো গ্রুপ শুধু তোমার অ্যাকাউন্ট সদস্য হলে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"

উত্তর

একটি Community দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening",
  "handle": "urbangardening",
  "description": "Balconies, allotments, rooftops: whatever grows.",
  "tags": [
    "garden",
    "bees"
  ],
  "members": 312,
  "joinPolicy": "open",
  "visibility": "open",
  "feedChannel": true,
  "sparks": 24,
  "perks": [
    "tint",
    "welcome"
  ],
  "membership": {
    "leader": null,
    "roles": [
      "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
    ],
    "permissions": [
      "attach",
      "invite",
      "send",
      "view"
    ],
    "mutedUntil": null
  }
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/communities/{id}/posts

কোনো গ্রুপের ফিড চ্যানেলের পোস্ট, নতুনগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.0 থেকে

সর্বজনীন পাথে counts.likes আর counts.reposts সবসময় 0 এবং pinned হলো false।

ফিড চ্যানেল বন্ধ থাকলে পথটি 409 আর feed_off দিয়ে উত্তর দেয়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts?limit=20"

উত্তর

Post-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": null,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "giftDrop": {
        "item": "plan",
        "quantity": 3,
        "places": 10,
        "left": 4,
        "audience": "followers",
        "newAccounts": false,
        "status": "open",
        "claimed": true
      },
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/communities/{id}/members

কোনো গ্রুপের সদস্য, তাদের ভূমিকাসহ।

  • অধিকার read
  • ETag-সহ
  • v2.15 থেকে

আগে নেতৃত্ব, তারপর সবচেয়ে উঁচু ভূমিকা অনুযায়ী; সর্বোচ্চ ৩০০।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members"

উত্তর

GroupMember-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
      "handle": "jon",
      "name": "Jon",
      "bot": false,
      "leader": null,
      "roles": [
        "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
      ],
      "mutedUntil": null
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/communities/{id}/roles

কোনো গ্রুপের ভূমিকা, সবচেয়ে উঁচুটি আগে, @everyone শেষে।

  • অধিকার read
  • ETag-সহ
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles"

উত্তর

Role-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
      "name": "Gardeners",
      "everyone": false,
      "color": "green",
      "permissions": [
        "attach",
        "invite",
        "send",
        "view"
      ],
      "members": 24,
      "editable": true,
      "selfable": false
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/communities/{id}/bell

কোনো গ্রুপ তোমাকে কোন বিজ্ঞপ্তি পাঠায়।

  • অধিকার read
  • ETag-সহ
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bell"

উত্তর

একটি Bell দিয়ে উত্তর দেয়।

উদাহরণ
{
  "level": "important"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/invites/{code}

যোগ দেওয়ার আগে, আমন্ত্রণ লিংকের পেছনের গ্রুপ।

  • অধিকার read
  • ETag-সহ
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
codeপাথেstringআবশ্যকআমন্ত্রণ লিংকের কোড, তার ঠিকানার শেষাংশ।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/invites/k7Qm2xPa"

উত্তর

একটি InvitePreview দিয়ে উত্তর দেয়।

উদাহরণ
{
  "community": {
    "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
    "name": "Urban Gardening",
    "members": 312,
    "rules": [
      "Be kind.",
      "No advertising."
    ]
  },
  "member": false
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

PUT/v2/roles/{id}/self

নিজে বেছে নেওয়ার ভূমিকা নিন বা ছেড়ে দিন।

  • অধিকার write
  • v2.20 থেকে

শুধু সেই ভূমিকা যা নেতৃত্ব নিজে বেছে নেওয়ার জন্য দেয় (selfable), এবং শুধু আপনার নিজের অ্যাকাউন্টের জন্য।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো ভূমিকার id।
activeবডিতেbooleanঐচ্ছিকfalse ভূমিকা নিয়ে নেয়; নইলে ভূমিকা দেওয়া হয়।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"active":true}' \
  "https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8/self"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/communities/{id}/emojis

একটি গ্রুপের নিজস্ব ইমোজি।

  • অধিকার read
  • ETag-সহ
  • v2.20 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis"

উত্তর

GroupEmoji-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "seedling",
      "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
      "animated": false
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

PUT/v2/communities/{id}/bell

কোনো গ্রুপ তোমাকে কোন বিজ্ঞপ্তি পাঠাবে তা ঠিক করা।

  • অধিকার write
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
levelবডিতেstringআবশ্যককোন বিজ্ঞপ্তি আসে।allimportantoff

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"level":"important"}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bell"

উত্তর

একটি Bell দিয়ে উত্তর দেয়।

উদাহরণ
{
  "level": "important"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/invites/{code}/join

আমন্ত্রণ লিংক দিয়ে গ্রুপে যোগ দেওয়া।

  • অধিকার write
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
codeপাথেstringআবশ্যকআমন্ত্রণ লিংকের কোড, তার ঠিকানার শেষাংশ।
rulesবডিতেbooleanঐচ্ছিকগ্রুপের নিয়ম মানলে true; নিয়ম থাকলে দরকার।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/invites/k7Qm2xPa/join"

উত্তর

একটি Joined দিয়ে উত্তর দেয়।

উদাহরণ
{
  "community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/communities/{id}/bots

একটি গ্রুপের বট আর তাদের ভূমিকা যা করতে দেয়।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bots"

উত্তর

GroupBot-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "gardenbot",
      "name": "Garden bot",
      "description": "Reminds the group of watering days.",
      "permissions": [
        "send",
        "view"
      ]
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

চ্যানেল

তোমার গ্রুপগুলোর চ্যানেল ও তাদের চ্যাট: পড়া, লেখা, পড়া হিসেবে চিহ্নিত করা।

GET/v2/communities/{id}/channels

কোনো গ্রুপের যে চ্যানেলগুলো তুমি দেখো, তাদের ক্রমে।

  • অধিকার read
  • ETag-সহ
  • v2.15 থেকে

ফিড চ্যানেল (kind: feed) এখানে শুধু চালু থাকলেই থাকে; তার পোস্ট আসে /communities/{id}/posts দিয়ে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels"

উত্তর

Channel-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
      "kind": "chat",
      "name": "harvest",
      "topic": "What came in this week",
      "category": {
        "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
        "name": "Garden",
        "symbol": {
          "emoji": null,
          "icon": null,
          "image": null,
          "color": null,
          "shape": null
        }
      },
      "unread": 3,
      "permissions": [
        "view",
        "send"
      ],
      "symbol": {
        "emoji": "🌻",
        "icon": null,
        "image": null,
        "color": "amber",
        "shape": "circle"
      }
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/channels/{id}/messages

কোনো চ্যাট চ্যানেলের বার্তা, নতুনগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.15 থেকে

প্রতি পৃষ্ঠায় ৫০টি বার্তা পর্যন্ত। যাদের তুমি ব্লক করেছ বা যারা তোমাকে ব্লক করেছে, তাদের বার্তা থাকে না।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।
threadকোয়েরিতেstringঐচ্ছিকযে বার্তার থ্রেড পড়া হয়: চ্যাটের বদলে সেটি ও তার উত্তরগুলো।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/messages"

উত্তর

ChannelMessage-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
      "text": "@jon the first tomatoes are ripe 🍅",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "bot": false
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "replyTo": "72b3c4d5-e6f7-4081-92a3-b4c5d6e7f809",
      "roleColor": "green",
      "threadOf": null,
      "threadCount": 3,
      "card": null,
      "buttons": [],
      "createdAt": 1758631200000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/channels/{id}/messages

কোনো চ্যাট চ্যানেলে বার্তা লেখা।

  • অধিকার write
  • v2.15 থেকে

@নাম একজন সদস্যকে জানায়, @everyone অধিকার থাকলে সবাইকে, ঘণ্টায় সর্বোচ্চ ছয়বার।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।
textবডিতেstringঐচ্ছিকপোস্ট, উত্তর বা বার্তার লেখা।
replyToবডিতেstringঐচ্ছিকএকই চ্যানেলের যে বার্তার উত্তর দিচ্ছ তার id।
mediaবডিতেstring[]ঐচ্ছিকঅ্যাপে আপলোড করা ছবির ID, অথবা মিডিয়া লাইব্রেরির একটি GIF বা ভিডিওর ID (2.14 থেকে)।
threadবডিতেstringঐচ্ছিকচ্যাটের যে বার্তার থ্রেডে উত্তর দেওয়া হয়; সেটি ছাড়া বার্তা চ্যাটে যায়।
cardবডিতেobjectঐচ্ছিকএকটি কার্ড { title, text, color, fields: [{ name, value }] }, সর্বোচ্চ ১০টি ফিল্ড।
buttonsবডিতেobject[]ঐচ্ছিক৫টি পর্যন্ত বোতাম, প্রতিটি { id, label, style }, style হলো primary, secondary বা danger। চাপ interaction ঘটনা হিসেবে আসে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Who has seeds to swap?"}' \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/messages"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/channels/{id}/read

কোনো চ্যাট চ্যানেলকে একটি সময় পর্যন্ত পড়া হিসেবে চিহ্নিত করা।

  • অধিকার write
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।
atবডিতেintegerআবশ্যককখন পর্যন্ত পড়া হয়েছে, মিলিসেকেন্ডে, সাধারণত সবচেয়ে নতুন বার্তার createdAt।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/read"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/channel-messages/{id}

চ্যাট চ্যানেলে নিজের কোনো বার্তা মুছে ফেলা।

  • অধিকার write
  • v2.15 থেকে

শুধু নিজের বার্তা; অন্যদের বার্তা নেতৃত্ব groups অনুমতি দিয়ে সরায়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকচ্যাট চ্যানেলের কোনো বার্তার id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/communities/{id}/voice

একটি গ্রুপের ভয়েস চ্যানেলে এখন কে আছে, চ্যানেল অনুযায়ী।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

শুধু যে চ্যানেলগুলো তুমি দেখতে পারো। মিডিয়া সার্ভার না থাকলে তালিকা ফাঁকা।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/voice"

উত্তর

VoiceRoom-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
      "people": [
        {
          "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
          "handle": "mara",
          "name": "Mara 🌻",
          "muted": false,
          "deaf": false,
          "camera": false,
          "screen": true
        }
      ]
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

গ্রুপ চালানো

অ্যাপে গ্রুপের সেটিংস যা পারে, groups অনুমতি দিয়ে। তোমার অ্যাকাউন্ট কী পারে তা গ্রুপ অ্যাপের মতোই ঠিক করে: নেতৃত্ব, ভূমিকা আর তাদের ক্রম।

POST/v2/communities/{id}/emojis

গ্রুপে একটি ইমোজি যোগ করুন।

  • অধিকার groups
  • v2.20 থেকে

শুধু যিনি গ্রুপের চ্যানেল পরিচালনা করতে পারেন। ছবিটি নিজের ইমোজির মতো আপলোড হয় (POST /me/emojis/pictures); একটি নাম সব ইমোজির মধ্যে একবারই দেওয়া যায়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
nameবডিতেstringআবশ্যকযে নামে তুমি ইমোজি লেখো, যেমন :নাম:।
pictureবডিতেstringআবশ্যকPOST /me/emojis/pictures থেকে পাওয়া id।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"seedling","picture":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis"

উত্তর

GroupEmoji-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "seedling",
      "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
      "animated": false
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/communities/{id}/emojis/{name}

গ্রুপ থেকে একটি ইমোজি সরান।

  • অধিকার groups
  • v2.20 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
nameপাথেstringআবশ্যকইমোজির নাম, কোলন ছাড়া।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis/seedling"

উত্তর

GroupEmoji-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "seedling",
      "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
      "animated": false
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/communities/{id}/roles

ভূমিকা তৈরি করা।

  • অধিকার groups
  • v2.15 থেকে

শুধু তোমার সবচেয়ে উঁচু ভূমিকার নিচের ভূমিকা আর শুধু তোমার নিজের অধিকার; নেতৃত্ব সবার ওপরে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
nameবডিতেstringঐচ্ছিকভূমিকার নাম; @everyone নিজের নাম রাখে।
colorবডিতেstringঐচ্ছিকরং; কোনোটি না হলে খালি।indigovioletroseambergreenteal
permissionsবডিতেstring[]ঐচ্ছিকঅধিকার: view, send, attach, post_feed, invite, mention_everyone, moderate, timeout_members, kick_members, ban_members, manage_channels, manage_roles।
selfableবডিতেbooleanঐচ্ছিকtrue: সদস্যরা ভূমিকা নিজেরা নেয়। শুধু এমন ভূমিকার জন্য যা অংশ নেওয়ার বেশি অনুমতি দেয় না (view, send, attach, voice_connect, voice_speak, voice_video)।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Gardeners","permissions":["view","send","invite"],"selfable":false}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/roles/{id}

কোনো ভূমিকার নাম, রং ও অধিকার বদলানো।

  • অধিকার groups
  • v2.15 থেকে

নাম, রং ও অধিকার বদলে দেয়; যা বাদ দাও তা খালি হয়ে যায়।

শুধু তোমার সবচেয়ে উঁচু ভূমিকার নিচের ভূমিকা আর শুধু তোমার নিজের অধিকার; নেতৃত্ব সবার ওপরে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো ভূমিকার id।
nameবডিতেstringঐচ্ছিকভূমিকার নাম; @everyone নিজের নাম রাখে।
colorবডিতেstringঐচ্ছিকরং; কোনোটি না হলে খালি।indigovioletroseambergreenteal
permissionsবডিতেstring[]ঐচ্ছিকঅধিকার: view, send, attach, post_feed, invite, mention_everyone, moderate, timeout_members, kick_members, ban_members, manage_channels, manage_roles।
selfableবডিতেbooleanঐচ্ছিকtrue: সদস্যরা ভূমিকা নিজেরা নেয়। শুধু এমন ভূমিকার জন্য যা অংশ নেওয়ার বেশি অনুমতি দেয় না (view, send, attach, voice_connect, voice_speak, voice_video)।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Gardeners","permissions":["view","send","invite"],"selfable":false}' \
  "https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/roles/{id}

ভূমিকা মুছে ফেলা।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো ভূমিকার id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/communities/{id}/roles/order

ভূমিকাগুলোর ক্রম ঠিক করা।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
rolesবডিতেstring[]আবশ্যকতোমার নিজের সর্বোচ্চ ভূমিকার নিচের সব ভূমিকার id, সর্বোচ্চটি আগে; নেতৃত্বের জন্য @everyone ছাড়া সবগুলো।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles/order"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/roles/{id}/members/{member}

কোনো সদস্যকে ভূমিকা দেওয়া বা তার কাছ থেকে নেওয়া।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো ভূমিকার id।
memberপাথেstringআবশ্যককোনো সদস্যের অ্যাকাউন্টের id।
activeবডিতেbooleanঐচ্ছিকfalse ভূমিকা নিয়ে নেয়; নইলে ভূমিকা দেওয়া হয়।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"active":true}' \
  "https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/communities/{id}/channels

চ্যাট চ্যানেল তৈরি করা।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
nameবডিতেstringঐচ্ছিকনাম, # ছাড়া; খালি রাখলে অ্যাপ প্রতিটি ভাষায় যে নাম দেয়।
topicবডিতেstringঐচ্ছিকচ্যানেলের ওপরে দেখানো বিষয়।
categoryবডিতেstringঐচ্ছিকযে বিভাগে চ্যানেলটি যাবে তার id; কোনোটিতে না হলে খালি।
emojiবডিতেstringঐচ্ছিকপ্রতীক হিসেবে একটি ইমোজি।
iconবডিতেstringঐচ্ছিকঅ্যাপের সেটের একটি প্রতীক, তার নাম দিয়ে।homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile
imageবডিতেstringঐচ্ছিক/media/emoji দিয়ে আপলোড করা ছবির id।
colorবডিতেstringঐচ্ছিকটাইলের রং।brandindigovioletroseambergreentealred
shapeবডিতেstringঐচ্ছিকটাইলের আকার; না দিলে বৃত্ত।circlesquaretrianglediamondhexagonoctagonshieldstar

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"harvest","emoji":"🌻","color":"amber"}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/channels/{id}

কোনো চ্যানেলের নাম, বিষয় ও বিভাগ বদলানো।

  • অধিকার groups
  • v2.15 থেকে

নাম, বিষয় ও বিভাগ বদলে দেয়; যা বাদ দাও তা খালি হয়ে যায়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।
nameবডিতেstringঐচ্ছিকনাম, # ছাড়া; খালি রাখলে অ্যাপ প্রতিটি ভাষায় যে নাম দেয়।
topicবডিতেstringঐচ্ছিকচ্যানেলের ওপরে দেখানো বিষয়।
categoryবডিতেstringঐচ্ছিকযে বিভাগে চ্যানেলটি যাবে তার id; কোনোটিতে না হলে খালি।
emojiবডিতেstringঐচ্ছিকপ্রতীক হিসেবে একটি ইমোজি।
iconবডিতেstringঐচ্ছিকঅ্যাপের সেটের একটি প্রতীক, তার নাম দিয়ে।homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile
imageবডিতেstringঐচ্ছিক/media/emoji দিয়ে আপলোড করা ছবির id।
colorবডিতেstringঐচ্ছিকটাইলের রং।brandindigovioletroseambergreentealred
shapeবডিতেstringঐচ্ছিকটাইলের আকার; না দিলে বৃত্ত।circlesquaretrianglediamondhexagonoctagonshieldstar

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"harvest","emoji":"🌻","color":"amber"}' \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/channels/{id}

চ্যাট চ্যানেল তার বার্তাসহ মুছে ফেলা।

  • অধিকার groups
  • v2.15 থেকে

ফিড চ্যানেল মোছা যায় না, শুধু বন্ধ করা যায়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/communities/{id}/channels/order

বিভাগ ও চ্যাট চ্যানেলের ক্রম ঠিক করা।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
categoriesবডিতেstring[]আবশ্যকগ্রুপের সব বিভাগের id, নতুন ক্রমে।
channelsবডিতেstring[]আবশ্যকগ্রুপের সব চ্যাট চ্যানেলের id, নতুন ক্রমে।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/order"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/communities/{id}/channels/shape

গ্রুপের সব চ্যানেল প্রতীকের আকার ঠিক করা।

  • অধিকার groups
  • v2.20 থেকে

শুধু গ্রুপের নেতৃত্ব।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
shapeবডিতেstringঐচ্ছিকগ্রুপের সব প্রতীকের আকার; বাদ দিলে প্রতিটি চ্যানেলের নিজের।circlesquaretrianglediamondhexagonoctagonshieldstar

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/shape"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/channels/{id}/overrides

ভূমিকারা কোনো চ্যানেলে গ্রুপ থেকে আলাদাভাবে কী পারে।

  • অধিকার groups
  • ETag-সহ
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/overrides"

উত্তর

ChannelOverride-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
      "allow": [
        "send"
      ],
      "deny": []
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401403404429

PUT/v2/channels/{id}/overrides/{role}

কোনো ভূমিকা কোনো চ্যানেলে আলাদাভাবে কী পারে তা ঠিক করা।

  • অধিকার groups
  • v2.15 থেকে

তোমার সবচেয়ে উঁচু ভূমিকার সমান বা ওপরের ভূমিকার জন্য নয়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।
roleপাথেstringআবশ্যককোনো ভূমিকার id।
allowবডিতেstring[]ঐচ্ছিকভূমিকা এখানে বাড়তি কী করতে পারে: চ্যাটে view, send, attach, mention_everyone, moderate, ফিড চ্যানেলে view আর post_feed।
denyবডিতেstring[]ঐচ্ছিকভূমিকাটি এখানে কী পারে না, একই অধিকার থেকে। দুটি তালিকাই খালি হলে পার্থক্য উঠে যায়।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"allow":["view"],"deny":["send"]}' \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/overrides/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/communities/{id}/categories

চ্যানেলের জন্য বিভাগ তৈরি করা।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
nameবডিতেstringআবশ্যকবিভাগের নাম।
emojiবডিতেstringঐচ্ছিকপ্রতীক হিসেবে একটি ইমোজি।
iconবডিতেstringঐচ্ছিকঅ্যাপের সেটের একটি প্রতীক, তার নাম দিয়ে।homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile
imageবডিতেstringঐচ্ছিক/media/emoji দিয়ে আপলোড করা ছবির id।
colorবডিতেstringঐচ্ছিকটাইলের রং।brandindigovioletroseambergreentealred

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Garden","emoji":"🌻","color":"amber"}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/categories"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/categories/{id}

বিভাগের নাম বদলানো।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো বিভাগের id।
nameবডিতেstringআবশ্যকবিভাগের নাম।
emojiবডিতেstringঐচ্ছিকপ্রতীক হিসেবে একটি ইমোজি।
iconবডিতেstringঐচ্ছিকঅ্যাপের সেটের একটি প্রতীক, তার নাম দিয়ে।homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile
imageবডিতেstringঐচ্ছিক/media/emoji দিয়ে আপলোড করা ছবির id।
colorবডিতেstringঐচ্ছিকটাইলের রং।brandindigovioletroseambergreentealred

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Garden","emoji":"🌻","color":"amber"}' \
  "https://api.tellmelo.com/v2/categories/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/categories/{id}

বিভাগ মুছে ফেলা।

  • অধিকার groups
  • v2.15 থেকে

এর চ্যানেলগুলো থাকে, বিভাগ ছাড়া।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো বিভাগের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/categories/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/communities/{id}/feed

কোনো গ্রুপের ফিড চ্যানেল চালু বা বন্ধ করা।

  • অধিকার groups
  • v2.15 থেকে

বন্ধ থাকলে পোস্টগুলো সংরক্ষিত থাকে, কিন্তু শুধু তাদের লেখকরা দেখতে পায়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
onবডিতেbooleanআবশ্যকtrue ফিড চ্যানেল চালু করে, false বন্ধ করে।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/feed"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/communities/{id}/invites

কোনো গ্রুপের যে আমন্ত্রণ লিংকগুলো এখনো চলে।

  • অধিকার groups
  • ETag-সহ
  • v2.15 থেকে

নেতৃত্ব সব দেখে, বাকিরা শুধু নিজেদেরগুলো।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/invites"

উত্তর

InviteLink-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "code": "k7Qm2xPa",
      "url": "https://tellmelo.com/groups?join=k7Qm2xPa",
      "createdBy": {
        "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
        "handle": "jon",
        "name": "Jon",
        "bot": false
      },
      "createdAt": 1758624000000,
      "expiresAt": 1759228800000,
      "uses": 3,
      "maxUses": 10
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401403404429

POST/v2/communities/{id}/invites

আমন্ত্রণ লিংক তৈরি করা।

  • অধিকার groups
  • v2.15 থেকে

লিংক ততক্ষণই চলে যতক্ষণ তুমি আমন্ত্রণ জানাতে পারো, আর তুমি চলে গেলে সরে যায়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
daysবডিতেintegerঐচ্ছিকলিংক কত দিন চলবে; না দিলে ফিরিয়ে নেওয়া পর্যন্ত।1730
usesবডিতেintegerঐচ্ছিকলিংক কতবার ব্যবহার করা যাবে; না দিলে সীমাহীন।151025100

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"days":7,"uses":10}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/invites"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/invites/{code}

আমন্ত্রণ লিংক ফিরিয়ে নেওয়া।

  • অধিকার groups
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
codeপাথেstringআবশ্যকআমন্ত্রণ লিংকের কোড, তার ঠিকানার শেষাংশ।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/invites/k7Qm2xPa"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/channel-messages/{id}/remove

চ্যানেল থেকে অন্য সদস্যের বার্তা সরানো।

  • অধিকার groups
  • v2.15 থেকে

অ্যাপের মতোই গ্রুপের লগে লেখা হয়, আর ঘণ্টায় সর্বোচ্চ ৬০।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকচ্যাট চ্যানেলের কোনো বার্তার id।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8/remove"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/communities/{id}/posts/{post}/remove

গ্রুপ থেকে পোস্ট সরানো।

  • অধিকার groups
  • v2.15 থেকে

অ্যাপের মতোই গ্রুপের লগে লেখা হয়, আর ঘণ্টায় সর্বোচ্চ ৬০।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
postপাথেstringআবশ্যকএকটি পোস্টের id।
reasonবডিতেstringআবশ্যকসদস্য যে কারণ পড়বে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Advertising for another site, despite rule 2."}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts/post/remove"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/communities/{id}/members/{member}

গ্রুপ থেকে কোনো সদস্যকে বের করা।

  • অধিকার groups
  • v2.15 থেকে

2.16 থেকে এটি বের করে দেওয়া: সদস্য ফিরে আসতে পারে। যাকে বাইরে থাকতে হবে, তাকে নিষিদ্ধ করা হয়।

শুধু সংশ্লিষ্ট অধিকার থাকলে এবং শুধু তোমার সর্বোচ্চ ভূমিকার নিচের সদস্যদের ক্ষেত্রে; সহ-নেতৃত্বের ক্ষেত্রে শুধু প্রতিষ্ঠাতা।

অ্যাপের মতোই গ্রুপের লগে লেখা হয়, আর ঘণ্টায় সর্বোচ্চ ৬০।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
memberপাথেstringআবশ্যককোনো সদস্যের অ্যাকাউন্টের id।
reasonবডিতেstringআবশ্যকসদস্য যে কারণ পড়বে।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Advertising for another site, despite rule 2."}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/communities/{id}/members/{member}/timeout

কোনো সদস্যকে মিউট করা।

  • অধিকার groups
  • v2.16 থেকে

নতুন মিউট চলমান মিউটের জায়গা নেয়। ছেড়ে আবার যোগ দিলে এটি শেষ হয় না।

শুধু সংশ্লিষ্ট অধিকার থাকলে এবং শুধু তোমার সর্বোচ্চ ভূমিকার নিচের সদস্যদের ক্ষেত্রে; সহ-নেতৃত্বের ক্ষেত্রে শুধু প্রতিষ্ঠাতা।

অ্যাপের মতোই গ্রুপের লগে লেখা হয়, আর ঘণ্টায় সর্বোচ্চ ৬০।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
memberপাথেstringআবশ্যককোনো সদস্যের অ্যাকাউন্টের id।
secondsবডিতেintegerআবশ্যককতক্ষণ, সেকেন্ডে।60300600360086400604800
reasonবডিতেstringঐচ্ছিকএকটি কারণ যা সদস্য পড়ে; ঐচ্ছিক।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"seconds":600}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d/timeout"

উত্তর

একটি Until দিয়ে উত্তর দেয়।

উদাহরণ
{
  "until": 1758624600000
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/communities/{id}/members/{member}/timeout

মিউট তুলে দেওয়া।

  • অধিকার groups
  • v2.16 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
memberপাথেstringআবশ্যককোনো সদস্যের অ্যাকাউন্টের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d/timeout"

উত্তর

একটি Until দিয়ে উত্তর দেয়।

উদাহরণ
{
  "until": 1758624600000
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/communities/{id}/bans

কোনো গ্রুপের চলমান নিষেধাজ্ঞা।

  • অধিকার groups
  • ETag-সহ
  • v2.16 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans"

উত্তর

Ban-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "member": {
        "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
        "handle": "jon",
        "name": "Jon",
        "bot": false
      },
      "until": 1759228800000,
      "createdAt": 1758624000000,
      "by": "Mara 🌻"
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401403404429

PUT/v2/communities/{id}/bans/{member}

কোনো সদস্যকে নিষিদ্ধ করা।

  • অধিকার groups
  • v2.16 থেকে

days ছাড়া নিষেধাজ্ঞা তোলা না পর্যন্ত চলে।

শুধু সংশ্লিষ্ট অধিকার থাকলে এবং শুধু তোমার সর্বোচ্চ ভূমিকার নিচের সদস্যদের ক্ষেত্রে; সহ-নেতৃত্বের ক্ষেত্রে শুধু প্রতিষ্ঠাতা।

অ্যাপের মতোই গ্রুপের লগে লেখা হয়, আর ঘণ্টায় সর্বোচ্চ ৬০।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
memberপাথেstringআবশ্যককোনো সদস্যের অ্যাকাউন্টের id।
daysবডিতেintegerঐচ্ছিককত দিন, দিনে; শেষ ছাড়া নিষেধাজ্ঞার জন্য বাদ দাও।1730
reasonবডিতেstringআবশ্যকসদস্য যে কারণ পড়বে।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"days":7,"reason":"Advertising for another site, despite rule 2."}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"

উত্তর

একটি Until দিয়ে উত্তর দেয়।

উদাহরণ
{
  "until": 1758624600000
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/communities/{id}/bans/{member}

নিষেধাজ্ঞা তোলা।

  • অধিকার groups
  • v2.16 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
memberপাথেstringআবশ্যককোনো সদস্যের অ্যাকাউন্টের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/communities/{id}/log

নেতৃত্বের লগ: কে কী সরিয়েছে আর কেন।

  • অধিকার groups
  • ETag-সহ
  • v2.15 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/log"

উত্তর

LogEntry-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "8f7e6d5c-4b3a-4291-8f7e-6d5c4b3a2918",
      "action": "message_removed",
      "member": {
        "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
        "handle": "jon",
        "name": "Jon",
        "bot": false
      },
      "reason": "",
      "by": "Mara 🌻",
      "createdAt": 1758710400000
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304400401403404429

POST/v2/communities

একটি গ্রুপ তৈরি করো। তার id ফেরত দেয়; তুমি এর প্রতিষ্ঠাতা।

  • অধিকার groups
  • v2.19 থেকে

groups অনুমতি লাগে। না বললে গ্রুপ internal আর মুক্তভাবে যোগদানযোগ্য; লুকানো গ্রুপ শুধু আমন্ত্রণে। সদস্যরা গ্রুপ খুলতে পারবে কি না, তা পরিচালক ঠিক করেন।

প্যারামিটার

নামধরনঅর্থ
nameবডিতেstringআবশ্যকনাম, সর্বোচ্চ ৬০ অক্ষর।
descriptionবডিতেstringঐচ্ছিকবিবরণ, সর্বোচ্চ ২৪০ অক্ষর।
handleবডিতেstringঐচ্ছিক@# উল্লেখ আর লিঙ্কের জন্য ছোট নাম: ৩ থেকে ৩০টি ছোট হাতের অক্ষর, সংখ্যা বা _।
tagsবডিতেstring[]ঐচ্ছিকগ্রুপের বিষয় নিয়ে সর্বোচ্চ ৫টি #ট্যাগ।
joinPolicyবডিতেstringঐচ্ছিককীভাবে যোগ দেওয়া যায়: open মুক্তভাবে, application আবেদনে, invite শুধু আমন্ত্রণে।openapplicationinvite
visibilityবডিতেstringঐচ্ছিককে গ্রুপ দেখে: open সবাই, internal বিষয়বস্তু শুধু সদস্যরা, hidden একেবারে শুধু সদস্যরা।openinternalhidden

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Seed swap","handle":"seedswap","tags":["garden","seeds"],"joinPolicy":"open","visibility":"open"}' \
  "https://api.tellmelo.com/v2/communities"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

PUT/v2/communities/{id}

তুমি যে গ্রুপ চালাও তা বদলাও। যা দেবে না, তা যেমন আছে থাকবে।

  • অধিকার groups
  • v2.19 থেকে

groups অনুমতি আর গ্রুপের নেতৃত্ব লাগে। নেতৃত্ব, গ্রুপ ভেঙে দেওয়া আর স্ফুলিঙ্গ সুবিধা অ্যাপেই থাকে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকএকটি গ্রুপের id।
nameবডিতেstringঐচ্ছিকনাম, সর্বোচ্চ ৬০ অক্ষর।
descriptionবডিতেstringঐচ্ছিকবিবরণ, সর্বোচ্চ ২৪০ অক্ষর।
handleবডিতেstringঐচ্ছিক@# উল্লেখ আর লিঙ্কের জন্য ছোট নাম: ৩ থেকে ৩০টি ছোট হাতের অক্ষর, সংখ্যা বা _।
tagsবডিতেstring[]ঐচ্ছিকগ্রুপের বিষয় নিয়ে সর্বোচ্চ ৫টি #ট্যাগ।
joinPolicyবডিতেstringঐচ্ছিককীভাবে যোগ দেওয়া যায়: open মুক্তভাবে, application আবেদনে, invite শুধু আমন্ত্রণে।openapplicationinvite
visibilityবডিতেstringঐচ্ছিককে গ্রুপ দেখে: open সবাই, internal বিষয়বস্তু শুধু সদস্যরা, hidden একেবারে শুধু সদস্যরা।openinternalhidden
imageবডিতেstringঐচ্ছিকগ্রুপের ছবি হিসেবে আপলোড করা ছবির id (POST /me/pictures)। ফাঁকা রাখলে সরে যায়।
bannerবডিতেstringঐচ্ছিকগ্রুপের কভার হিসেবে আপলোড করা ছবির id। ফাঁকা রাখলে সরে যায়।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Seed swap","handle":"seedswap","tags":["garden","seeds"],"joinPolicy":"open","visibility":"open"}' \
  "https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

বট

একটি বটের গ্রুপে যা ঘটে, সরাসরি: স্ট্রিম হিসেবে, পাতায় পাতায় বা একটি ঠিকানায় পৌঁছে দিয়ে।

GET/v2/events

কোনো ঘটনার পর থেকে বটের গ্রুপগুলোর ঘটনা, পাতায় পাতায়।

  • অধিকার read
  • v2.20 থেকে

শুধু একটি বটের টোকেন দিয়ে। কোনো চ্যানেলের ঘটনা কেবল বট সেটি দেখতে পারলে।

ঘটনা এক দিন রাখা হয়। next হলো শেষটির নম্বর, পরের পাতার জন্য since হিসেবে।

প্যারামিটার

নামধরনঅর্থ
sinceকোয়েরিতেstringঐচ্ছিকবটের কাছে আগে থেকে থাকা শেষ ঘটনার নম্বর। এটি ছাড়া স্ট্রিম এখন থেকে আর তালিকা সবচেয়ে পুরোনো থেকে শুরু হয়।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/events?since=0"

উত্তর

BotEvent-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "4711",
      "type": "message.created",
      "community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
      "channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
      "createdAt": 1758634800000,
      "data": {
        "message": {
          "id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
          "text": "/dice 6",
          "author": {
            "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
            "handle": "mara",
            "name": "Mara 🌻",
            "bot": false
          },
          "media": 0,
          "replyTo": null,
          "threadOf": null,
          "createdAt": 1758634800000
        }
      }
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200401429

GET/v2/events/stream

বটের গ্রুপগুলোর ঘটনা, ঘটার সঙ্গে সঙ্গে (server-sent events)।

  • অধিকার read
  • ETag-সহ
  • v2.20 থেকে

সংযোগ খোলা থাকে এবং দশ মিনিট পরে বন্ধ হয়; ক্লায়েন্ট আবার যুক্ত হয় এবং Last-Event-ID পাঠায়।

শুধু একটি বটের টোকেন দিয়ে। কোনো চ্যানেলের ঘটনা কেবল বট সেটি দেখতে পারলে।

প্যারামিটার

নামধরনঅর্থ
sinceকোয়েরিতেstringঐচ্ছিকবটের কাছে আগে থেকে থাকা শেষ ঘটনার নম্বর। এটি ছাড়া স্ট্রিম এখন থেকে আর তালিকা সবচেয়ে পুরোনো থেকে শুরু হয়।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/events/stream?since=0"

উত্তর

একটি BotEvent দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "4711",
  "type": "message.created",
  "community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
  "createdAt": 1758634800000,
  "data": {
    "message": {
      "id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
      "text": "/dice 6",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "bot": false
      },
      "media": 0,
      "replyTo": null,
      "threadOf": null,
      "createdAt": 1758634800000
    }
  }
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GET/v2/me/commands

বটের কমান্ড।

  • অধিকার read
  • ETag-সহ
  • v2.20 থেকে

শুধু একটি বটের টোকেন দিয়ে। কোনো চ্যানেলের ঘটনা কেবল বট সেটি দেখতে পারলে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/commands"

উত্তর

BotCommand-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "dice",
      "description": "Rolls a die"
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

PUT/v2/me/commands

বটের সব কমান্ড একসঙ্গে ঠিক করুন।

  • অধিকার write
  • v2.20 থেকে

সব কমান্ড বদলে দেয়; খালি তালিকা সেগুলো সরিয়ে দেয়। বট যে চ্যাটগুলো দেখতে পারে, সেখানে ইনপুট ফিল্ড “/” এর পরে সেগুলো প্রস্তাব করে।

প্যারামিটার

নামধরনঅর্থ
commandsবডিতেobject[]আবশ্যক২৫টি পর্যন্ত কমান্ড, প্রতিটি { name, description }।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"commands":[{"name":"dice","description":"Rolls a die"}]}' \
  "https://api.tellmelo.com/v2/me/commands"

উত্তর

BotCommand-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "dice",
      "description": "Rolls a die"
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

POST/v2/interactions/{id}/reply

কোনো কমান্ড বা বোতামের উত্তর দিন।

  • অধিকার write
  • v2.20 থেকে

command বা interaction ঘটনার ১৫ মিনিটের মধ্যে; private থাকলে উত্তর কেবল সে-ই দেখে যে কমান্ড বা বোতাম ব্যবহার করেছে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকঘটনা থেকে পাওয়া আইডি (data.interaction)।
textবডিতেstringঐচ্ছিকপোস্ট, উত্তর বা বার্তার লেখা।
privateবডিতেbooleanঐচ্ছিকtrue: উত্তর এক দিন কেবল সে-ই দেখে যে কমান্ড বা বোতাম ব্যবহার করেছে।
cardবডিতেobjectঐচ্ছিকএকটি কার্ড { title, text, color, fields: [{ name, value }] }, সর্বোচ্চ ১০টি ফিল্ড।
buttonsবডিতেobject[]ঐচ্ছিক৫টি পর্যন্ত বোতাম, প্রতিটি { id, label, style }, style হলো primary, secondary বা danger। চাপ interaction ঘটনা হিসেবে আসে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"You rolled a 4.","private":true}' \
  "https://api.tellmelo.com/v2/interactions/9b8c7d6e-5f4a-4b3c-8d2e-1f0a9b8c7d6e/reply"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/channels/{id}/voice

সংগীত বা শব্দ বাজাতে ভয়েস চ্যানেলে জায়গা নিন।

  • অধিকার write
  • v2.20 থেকে

শুধু একটি বটের টোকেন দিয়ে, চ্যানেলে বটের ভূমিকা যতটা অনুমতি দেয়। প্রোগ্রাম একটি LiveKit SDK দিয়ে যুক্ত হয় এবং তার শব্দ মাইক্রোফোন হিসেবে পাঠায়; প্রত্যেকে নিজেই তার ভলিউম ঠিক করে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যককোনো চ্যানেলের id।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/voice"

উত্তর

একটি VoiceSeat দিয়ে উত্তর দেয়।

উদাহরণ
{
  "url": "wss://voice.example.org",
  "token": "eyJhbGciOiJIUzI1NiJ9…",
  "iceServers": [
    {
      "urls": [
        "stun:turn.example.org:3478"
      ]
    }
  ],
  "speak": true,
  "video": false
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

ঘুরে দেখো

ট্রেন্ড, খোঁজ আর সার্ভারের নিজস্ব ইমোজি।

GET/v2/tags

এখন চলমান ট্যাগগুলো।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

স্কোর অনুযায়ী সর্বোচ্চ 10টি ট্রেন্ডিং ট্যাগ: প্রতিটি ব্যবহার 1 গোনা হয় এবং প্রতি 3 দিনে অর্ধেক হয়, একটি অ্যাকাউন্ট দিনে সর্বোচ্চ 3 গোনা হয়। posts হলো গোলাকার করা স্কোর। limit শুধু তালিকা ছোট করে। টিম যেসব ট্যাগ তুলে ধরে সেগুলো আরও ওপরে থাকতে পারে।

প্যারামিটার

নামধরনঅর্থ
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/tags?limit=10"

উত্তর

Tag-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "tag": "garden",
      "posts": 58
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GET/v2/search

পোস্ট, নাম, ছোট নাম আর ট্যাগে খোঁজ।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

শুধু সর্বজনীন বিষয়বস্তু খোঁজে: গ্রুপের বাইরের পোস্ট, প্রোফাইল আর ট্যাগ। limit প্রতিটি ধরনে প্রযোজ্য।

প্যারামিটার

নামধরনঅর্থ
qকোয়েরিতেstringআবশ্যকযে শব্দগুলো খোঁজা হচ্ছে।
typeকোয়েরিতেstringঐচ্ছিককোন ধরনের ফল। না থাকলে সব ধরন।allpostsprofilestags
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/search?q=garden&type=posts"

উত্তর

একটি SearchResult দিয়ে উত্তর দেয়।

উদাহরণ
{
  "posts": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": null,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "giftDrop": {
        "item": "plan",
        "quantity": 3,
        "places": 10,
        "left": 4,
        "audience": "followers",
        "newAccounts": false,
        "status": "open",
        "claimed": true
      },
      "createdAt": 1758624000000
    }
  ],
  "profiles": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "verified": true,
      "accountKind": "person"
    }
  ],
  "tags": [
    {
      "tag": "garden",
      "posts": 58
    }
  ]
}

সম্ভাব্য স্ট্যাটাস: 200304400401429

GET/v2/emojis

সার্ভারের নিজস্ব ইমোজি, ছবির ঠিকানাসহ।

  • অধিকার read
  • ETag-সহ
  • v2.1 থেকে

লেখায় ইমোজি :name: হিসেবে আসে। এই তালিকার ছবি দিয়ে বদলে দাও; অজানা নাম লেখাই থাকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/emojis"

উত্তর

Emoji-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "tellmelo",
      "url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GIF ও ভিডিও

মিডিয়া লাইব্রেরি: শেয়ার করা GIF ও ভিডিও খোঁজো, নিজেরগুলো আপলোড ও পরিচালনা করো, আর অন্য ওয়েবসাইটে এম্বেড করো।

GET/v2/media

শেয়ার করা GIF বা ভিডিও, সবচেয়ে বেশি ব্যবহৃতগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.14 থেকে

যেসব অ্যাকাউন্ট তুমি ব্লক করেছ বা যারা তোমাকে ব্লক করেছে, সেগুলো বাদে। tellmelo-র পোস্টের জন্য url ও poster হেডারে কী দিয়ে লোড করো।

অন্য ওয়েবসাইটের জন্য শুধু যার embed আছে: এর ঠিকানাগুলো কী ছাড়াই, যেকোনো ব্রাউজারে কাজ করে।

প্যারামিটার

নামধরনঅর্থ
kindকোয়েরিতেstringঐচ্ছিকgif বা video; না দিলে gif।gifvideo
qকোয়েরিতেstringঐচ্ছিকনাম বা কীওয়ার্ডে থাকা শব্দ।
anywhereকোয়েরিতেbooleanঐচ্ছিকtrue: শুধু যা অন্য ওয়েবসাইটেও দেখা যেতে পারে।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/media?kind=gif&q=bees&anywhere=true&limit=20"

উত্তর

MediaItem-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
      "kind": "gif",
      "name": "Happy bees",
      "keywords": "bees garden happy",
      "width": 480,
      "height": 270,
      "seconds": 0,
      "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
      "poster": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918&poster=1",
      "uploader": {
        "handle": "mara",
        "name": "Mara 🌻"
      },
      "mine": false,
      "shared": true,
      "anywhere": true,
      "embed": {
        "page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
        "file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
        "poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
        "code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
      }
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401429

GET/v2/media/mine

তোমার নিজের মিডিয়া লাইব্রেরি, সবচেয়ে নতুনগুলো আগে।

  • অধিকার media
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.14 থেকে

প্যারামিটার

নামধরনঅর্থ
kindকোয়েরিতেstringঐচ্ছিকgif বা video; না দিলে gif।gifvideo
qকোয়েরিতেstringঐচ্ছিকনাম বা কীওয়ার্ডে থাকা শব্দ।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/media/mine?kind=gif&q=bees&limit=20"

উত্তর

MediaItem-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
      "kind": "gif",
      "name": "Happy bees",
      "keywords": "bees garden happy",
      "width": 480,
      "height": 270,
      "seconds": 0,
      "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
      "poster": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918&poster=1",
      "uploader": {
        "handle": "mara",
        "name": "Mara 🌻"
      },
      "mine": false,
      "shared": true,
      "anywhere": true,
      "embed": {
        "page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
        "file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
        "poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
        "code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
      }
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401403429

GET/v2/media/{id}

একটি GIF বা ভিডিও, তোমার বা শেয়ার করা।

  • অধিকার read
  • ETag-সহ
  • v2.14 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকGIF বা ভিডিওর ID।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"

উত্তর

একটি MediaItem দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
  "kind": "gif",
  "name": "Happy bees",
  "keywords": "bees garden happy",
  "width": 480,
  "height": 270,
  "seconds": 0,
  "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
  "poster": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918&poster=1",
  "uploader": {
    "handle": "mara",
    "name": "Mara 🌻"
  },
  "mine": false,
  "shared": true,
  "anywhere": true,
  "embed": {
    "page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
    "file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
    "poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
    "code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
  }
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/media/uploads

একটি আপলোড শুরু করো।

  • অধিকার media
  • v2.14 থেকে

এরপর ফাইলটি সর্বোচ্চ piece বাইটের টুকরোয় /media/uploads/{upload}-এ পাঠাও। নতুন টুকরো না এলে আপলোড 15 মিনিট পরে শেষ হয়ে যায়।

অ্যাপের সীমা প্রযোজ্য: GIF 15 MB পর্যন্ত, ভিডিও প্ল্যান অনুযায়ী আকার ও দৈর্ঘ্যে, দিনে GIF, প্রাইভেট GIF, সপ্তাহে ভিডিও পয়েন্ট। নইলে 409, 413 বা 429 আসে।

প্যারামিটার

নামধরনঅর্থ
kindবডিতেstringআবশ্যকgif বা video; না দিলে gif।gifvideo
sizeবডিতেintegerআবশ্যকপুরো ফাইলের আকার, বাইটে।
nameবডিতেstringআবশ্যকযে নামে এটি খুঁজে পাওয়া যায়: 2 থেকে 40 অক্ষর।
keywordsবডিতেstringঐচ্ছিকখোঁজার জন্য কীওয়ার্ড, স্পেস দিয়ে আলাদা।
sharedবডিতেbooleanঐচ্ছিকtrue: tellmelo-তে সবার সাথে শেয়ার করা।
anywhereবডিতেbooleanঐচ্ছিকtrue: শেয়ার করা এবং অন্য ওয়েবসাইটেও অনুমতিপ্রাপ্ত। শুধু shared-এর সাথে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"kind":"gif","size":2400000,"name":"Happy bees","keywords":"bees garden","shared":true,"anywhere":false}' \
  "https://api.tellmelo.com/v2/media/uploads"

উত্তর

একটি UploadStarted দিয়ে উত্তর দেয়।

উদাহরণ
{
  "upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
  "piece": 4194304
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

PUT/v2/media/uploads/{upload}

ফাইলের একটি টুকরো পাঠাও।

  • অধিকার media
  • v2.14 থেকে

বডি হলো টুকরোটি নিজেই (application/octet-stream), JSON নয়। এটি না মিললে received-সহ 409 আসে: সেখান থেকে আবার পাঠাও। শেষ টুকরোর পর ফাইল রূপান্তর হয়; তখন উত্তরে item থাকে।

প্যারামিটার

নামধরনঅর্থ
uploadপাথেstringআবশ্যকশুরুতে পাওয়া upload।
offsetকোয়েরিতেintegerআবশ্যকফাইলে টুকরোটি কোথা থেকে শুরু, বাইটে; প্রথমটির জন্য 0।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @piece \
  "https://api.tellmelo.com/v2/media/uploads/e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b?offset=0"

উত্তর

একটি UploadPiece দিয়ে উত্তর দেয়।

উদাহরণ
{
  "received": 4194304,
  "item": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/media/{id}

তোমার কোনো GIF বা ভিডিও বদলাও।

  • অধিকার media
  • v2.14 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকGIF বা ভিডিওর ID।
nameবডিতেstringঐচ্ছিকযে নামে এটি খুঁজে পাওয়া যায়: 2 থেকে 40 অক্ষর।
keywordsবডিতেstringঐচ্ছিকখোঁজার জন্য কীওয়ার্ড, স্পেস দিয়ে আলাদা।
sharedবডিতেbooleanঐচ্ছিকtrue: tellmelo-তে সবার সাথে শেয়ার করা।
anywhereবডিতেbooleanঐচ্ছিকtrue: শেয়ার করা এবং অন্য ওয়েবসাইটেও অনুমতিপ্রাপ্ত। শুধু shared-এর সাথে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Happy bees","anywhere":true}' \
  "https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/media/{id}

তোমার কোনো GIF বা ভিডিও সরাও।

  • অধিকার media
  • v2.14 থেকে

যেসব পোস্ট এটি আগে থেকেই দেখাচ্ছে, সেগুলো এটি রেখে দেয়। অন্য ওয়েবসাইটে এটি কয়েক মিনিটের মধ্যে সরে যায়।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকGIF বা ভিডিওর ID।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

তোমার অ্যাকাউন্ট

তোমার প্রোফাইল, তোমার ফিড, তোমার নিজের ইমোজি আর তোমার ওয়েবহুক।

GET/v2/me

তোমার নিজের প্রোফাইল, সেই id-সহ যা অন্য পাথগুলো আশা করে।

  • অধিকার read
  • ETag-সহ
  • v2.0 থেকে

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me"

উত্তর

একটি Profile দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person",
  "about": "Beekeeper, allotment, too many seeds. :tellmelo:",
  "website": "https://mara-imkerei.example/",
  "websiteVerified": true,
  "followers": 148,
  "createdAt": 1750848000000
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GET/v2/feed

তোমার নিজের ফিড, অ্যাপ যেভাবে সাজায়।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • v2.0 থেকে

কোনো ETag নেই, কারণ ক্রম বারবার বদলায়। তুমি যে তালিকা শুরু করেছ তা শেষ পর্যন্ত একই থাকে।

প্যারামিটার

নামধরনঅর্থ
tabকোয়েরিতেstringঐচ্ছিককোন ফিড: for-you, following, latest বা bookmarks। শুরুতে latest।for-youfollowinglatestbookmarks
tagকোয়েরিতেstringঐচ্ছিকশুধু এই ট্যাগের পোস্ট: এটি দিয়ে লেখা বা সার্ভার যেখানে এটি চিনেছে। না থাকলে কোনো ফিল্টার নেই।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/feed?tab=following&limit=20"

উত্তর

Post-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": null,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "giftDrop": {
        "item": "plan",
        "quantity": 3,
        "places": 10,
        "left": 4,
        "audience": "followers",
        "newAccounts": false,
        "status": "open",
        "claimed": true
      },
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200400401429

POST/v2/me/pictures

একটি ছবি তার বাইট হিসেবে আপলোড করো। id আর url ফেরত দেয়; তারপর id প্রোফাইল ছবি, কভার বা পোস্টে ব্যবহার করো।

  • অধিকার write
  • v2.19 থেকে

PNG, JPEG, WebP বা GIF, প্রথম বাইট দেখে চেনা হয়; মেটাডেটা ছাড়া নতুন করে সংরক্ষিত হয়। কোথাও ব্যবহার না হওয়া ছবি পরে মুছে যায়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @picture.png \
  "https://api.tellmelo.com/v2/me/pictures"

উত্তর

একটি Picture দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}

সম্ভাব্য স্ট্যাটাস: 200401403429

PUT/v2/me/profile

তোমার প্রোফাইল বদলাও: নাম, পরিচিতি, প্রোফাইল ছবি, কভার আর প্রোফাইলের রং। যা দেবে না, তা যেমন আছে থাকবে।

  • অধিকার profile
  • v2.19 থেকে

profile অনুমতি লাগে। তোমার @নাম অ্যাপেই থাকে: এটি তোমার লগইন নামও।

প্যারামিটার

নামধরনঅর্থ
nameবডিতেstringঐচ্ছিকপ্রদর্শিত নাম, সর্বোচ্চ ৬০ অক্ষর।
aboutবডিতেstringঐচ্ছিক“পরিচিতি” লেখা।
avatarবডিতেstringঐচ্ছিকপ্রোফাইল ছবি হিসেবে আপলোড করা ছবির id। ফাঁকা রাখলে সরে যায়।
bannerবডিতেstringঐচ্ছিককভার হিসেবে আপলোড করা ছবির id। ফাঁকা রাখলে সরে যায়।
colorবডিতেstringঐচ্ছিকপ্রোফাইলের রং, প্ল্যানসহ। null সরিয়ে দেয়।indigovioletrosecoralamberlimegreentealskyslatesandnight

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Mara 🌻","about":"Gardening in the city.","avatar":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
  "https://api.tellmelo.com/v2/me/profile"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

GET/v2/me/emojis

তোমার নিজের ইমোজি।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/emojis"

উত্তর

OwnEmoji-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "sunflower",
      "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
      "animated": false,
      "resting": false
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

POST/v2/me/emojis/pictures

নিজের ইমোজির ছবি তার বাইট হিসেবে আপলোড করো।

  • অধিকার profile
  • v2.19 থেকে

চলমান ইমোজির জন্য প্ল্যান লাগে। রূপান্তরের পর খুব বড় হলে ছবি প্রত্যাখ্যাত হয়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @picture.png \
  "https://api.tellmelo.com/v2/me/emojis/pictures"

উত্তর

একটি EmojiPicture দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "animated": false
}

সম্ভাব্য স্ট্যাটাস: 200401403429

POST/v2/me/emojis

নিজের ইমোজি তৈরি করো। তোমার সব ইমোজি ফেরত দেয়।

  • অধিকার profile
  • v2.19 থেকে

কতটি ইমোজি তৈরি করতে পারবে তা প্ল্যানের উপর নির্ভর করে।

প্যারামিটার

নামধরনঅর্থ
nameবডিতেstringআবশ্যকযে নামে তুমি ইমোজি লেখো, যেমন :নাম:।
pictureবডিতেstringআবশ্যকPOST /me/emojis/pictures থেকে পাওয়া id।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"sunflower","picture":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
  "https://api.tellmelo.com/v2/me/emojis"

উত্তর

OwnEmoji-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "sunflower",
      "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
      "animated": false,
      "resting": false
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

DELETE/v2/me/emojis/{name}

নিজের ইমোজি সরাও। বাকিগুলো ফেরত দেয়।

  • অধিকার profile
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
nameপাথেstringআবশ্যকইমোজির নাম, কোলন ছাড়া।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/emojis/sunflower"

উত্তর

OwnEmoji-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "name": "sunflower",
      "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
      "animated": false,
      "resting": false
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

PUT/v2/me/emojis/sharing

তোমার ফলোয়াররা নিজেদের লেখায় তোমার ইমোজি ব্যবহার করতে পারবে কি না ঠিক করো।

  • অধিকার profile
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
sharedবডিতেbooleanআবশ্যকtrue তোমার ইমোজি ফলোয়ারদের সঙ্গে শেয়ার করে, false করে না।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"shared":true}' \
  "https://api.tellmelo.com/v2/me/emojis/sharing"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

GET/v2/me/webhooks

তোমার ওয়েবহুক আর তাদের অবস্থা।

  • অধিকার webhooks
  • ETag-সহ
  • v2.19 থেকে

webhooks অনুমতি লাগে। ওয়েবহুক আসে প্রতিষ্ঠানের প্ল্যানে বা অংশীদার হিসেবে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/webhooks"

উত্তর

Webhook-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
      "url": "https://example.org/tellmelo-hook",
      "kinds": [
        "reply",
        "mention"
      ],
      "active": true,
      "lastStatus": 200,
      "lastAt": 1758624000000,
      "failures": 0
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401403429

POST/v2/me/webhooks

ওয়েবহুক তৈরি করো। id আর স্বাক্ষরের গোপন কোড শুধু এবারই ফেরত দেয়।

  • অধিকার webhooks
  • v2.19 থেকে

প্রতিটি পাঠানো গোপন কোড দিয়ে স্বাক্ষরিত (X-Tellmelo-Signature)। এটি রেখে দাও; আর দেখানো হবে না।

প্যারামিটার

নামধরনঅর্থ
urlবডিতেstringআবশ্যকস্থানীয় নেটওয়ার্কের বাইরের HTTPS ঠিকানা, লগইন তথ্য ছাড়া।
kindsবডিতেstring[]আবশ্যকওয়েবহুক কোন বিষয়ে খবর পাবে। কোন ধরন তোমার জন্য খোলা, তা প্ল্যান আর অংশীদারত্বের উপর নির্ভর করে।replymentiongroup_mentionfollowlikerepostmessagequota_changedquota_giftdrop_claimeddrop_empty

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.org/tellmelo-hook","kinds":["reply","mention"]}' \
  "https://api.tellmelo.com/v2/me/webhooks"

উত্তর

একটি WebhookCreated দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
  "secret": "whsec_3f9a…"
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

DELETE/v2/me/webhooks/{id}

ওয়েবহুক মুছে ফেলো।

  • অধিকার webhooks
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকওয়েবহুকের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/me/webhooks/{id}/test

ওয়েবহুকে একটি পরীক্ষা পাঠাও।

  • অধিকার webhooks
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকওয়েবহুকের id।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b/test"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

বিজ্ঞপ্তি

তোমার অ্যাকাউন্ট ঘিরে কী ঘটেছে, পাতার পর পাতা।

GET/v2/notifications

তোমার বিজ্ঞপ্তি, নতুনগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.0 থেকে

পড়লে কিছুই পড়া হিসেবে চিহ্নিত হয় না; POST /notifications/read তা করে। একই পোস্টে একই ধরনের ঘটনা একটি সারি ভাগ করে; more বলে কতগুলো।

প্যারামিটার

নামধরনঅর্থ
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/notifications?limit=20"

উত্তর

Notification-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "3f2e1d0c-9b8a-4765-8432-10fedcba9876",
      "kind": "like",
      "text": null,
      "actor": {
        "handle": "jon",
        "name": "Jon"
      },
      "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "read": false,
      "more": 2,
      "createdAt": 1758624300000,
      "updatedAt": 1758624900000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304401429

POST/v2/notifications/read

তোমার বিজ্ঞপ্তিগুলো পড়া হিসেবে চিহ্নিত করো।

  • অধিকার write
  • v2.0 থেকে

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/notifications/read"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200401403429

বার্তা

তোমার ইনবক্স আর আলাপ। আলাপের নাম হয় অন্য অ্যাকাউন্টের নামে।

GET/v2/conversations

তোমার ইনবক্স: প্রতি আলাপে এক সারি, সবচেয়ে নতুন আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.0 থেকে

প্যারামিটার

নামধরনঅর্থ
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/conversations?limit=20"

উত্তর

Conversation-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "with": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
      "handle": "jon",
      "name": "Jon",
      "excerpt": "See you on Saturday at the market!",
      "truncated": false,
      "fromMe": true,
      "lastMessageId": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
      "unread": 0,
      "updatedAt": 1758624060000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GET/v2/conversations/{with}/messages

একটি আলাপের বার্তা, নতুনগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.0 থেকে

পড়লে কিছুই পড়া হিসেবে চিহ্নিত হয় না; POST /conversations/{with}/read তা করে।

প্যারামিটার

নামধরনঅর্থ
withপাথেstringআবশ্যকঅন্য অ্যাকাউন্টের id। আলাপের নিজস্ব id নেই।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages?limit=20"

উত্তর

Message-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
      "text": "See you on Saturday at the market!",
      "from": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "to": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
      "read": true,
      "media": [],
      "replyTo": null,
      "createdAt": 1758624060000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

POST/v2/conversations/{with}/messages

একটি আলাপে বার্তা পাঠাও।

  • অধিকার write
  • v2.0 থেকে

অ্যাপের নিয়ম প্রযোজ্য: যে তোমাকে ব্লক করেছে তার কাছে পৌঁছানো যায় না, আর অন্যজনের সেটিংস গণ্য হয়।

বার্তায় ছবি, GIF ও ভিডিও API দিয়ে যোগ করা যায় না, শুধু অ্যাপে।

প্যারামিটার

নামধরনঅর্থ
withপাথেstringআবশ্যকঅন্য অ্যাকাউন্টের id। আলাপের নিজস্ব id নেই।
textবডিতেstringআবশ্যকপোস্ট, উত্তর বা বার্তার লেখা।
replyToবডিতেstringঐচ্ছিকএই আলাপের আগের একটি বার্তার id, যার উত্তর এটি। 2.2 থেকে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"See you on Saturday at the market!"}' \
  "https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/conversations/{with}/read

একটি আলাপের সব বার্তা পড়া হিসেবে চিহ্নিত করো।

  • অধিকার write
  • v2.1 থেকে

প্যারামিটার

নামধরনঅর্থ
withপাথেstringআবশ্যকঅন্য অ্যাকাউন্টের id। আলাপের নিজস্ব id নেই।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/read"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/conversations/{with}/messages/{id}

তোমার একটি মেসেজ মুছে ফেলো।

  • অধিকার write
  • v2.12 থেকে

শুধু নিজের মেসেজ, আর শুধু পাঠানোর ২৪ ঘণ্টার মধ্যে।

প্যারামিটার

নামধরনঅর্থ
withপাথেstringআবশ্যকঅন্য অ্যাকাউন্টের id। আলাপের নিজস্ব id নেই।
idপাথেstringআবশ্যকমেসেজের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages/7c6b5a49-3827-4165-9f0e-d1c2b3a49586"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

POST/v2/conversations/{with}/planned

একটি বার্তা পরে পাঠানোর জন্য নির্ধারণ করো। নির্ধারিত বার্তার id ফেরত দেয়।

  • অধিকার write
  • v2.19 থেকে

নির্ধারিত বার্তাসহ প্ল্যান লাগে, নইলে 403। দুই দিকেই এন্ড-টু-এন্ড এনক্রিপশন থাকলে শুধু অ্যাপে কাজ করে।

প্যারামিটার

নামধরনঅর্থ
withপাথেstringআবশ্যকঅন্য অ্যাকাউন্টের id। আলাপের নিজস্ব id নেই।
textবডিতেstringআবশ্যকপোস্ট, উত্তর বা বার্তার লেখা।
sendAtবডিতেintegerআবশ্যকবার্তা কখন পাঠানো হবে, ১৯৭০ থেকে মিলিসেকেন্ডে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Happy birthday! 🎂","sendAt":1758700000000}' \
  "https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/planned"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/me/planned-messages

তোমার যে বার্তাগুলো এখনও পাঠানো বাকি, সময় অনুযায়ী সাজানো।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
withকোয়েরিতেstringঐচ্ছিকশুধু এই অ্যাকাউন্টকে পাঠানো বার্তা (তার id)।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/planned-messages"

উত্তর

PlannedMessage-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
      "to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "text": "Happy birthday! 🎂",
      "sendAt": 1758710400000,
      "state": "waiting"
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

POST/v2/me/planned-messages/{id}/send

আটকে রাখা বা ব্যর্থ নির্ধারিত বার্তা এখনই পাঠাও।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকনির্ধারিত বার্তার id।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/me/planned-messages/{id}

নির্ধারিত বার্তা পাঠানোর আগে মুছে ফেলো।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকনির্ধারিত বার্তার id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

সম্পর্ক

পছন্দ, সংরক্ষণ, রিপোস্ট, ফলো, যোগদান, ব্লক: একটিই পাথ, active দিয়ে স্থাপন ও অপসারণ। ২.১৯ থেকে তালিকাগুলোও: ফলোয়ার, যাদের ফলো করা হয়, আর তোমার নিজের ব্লক ও মিউট।

POST/v2/relations

পছন্দ, সংরক্ষণ, রিপোস্ট, ফলো, যোগদান, ব্লক, মিউট, kind অনুযায়ী।

  • অধিকার write
  • v2.0 থেকে

like, save আর repost-এর জন্য target একটি পোস্ট, join-এর জন্য একটি গ্রুপ, follow, block আর mute-এর জন্য একটি অ্যাকাউন্ট। active: false সম্পর্ক সরিয়ে দেয়।

প্যারামিটার

নামধরনঅর্থ
kindবডিতেstringআবশ্যককোন সম্পর্ক: like, save, repost, follow, join, block বা mute (2.2 থেকে)।likesaverepostfollowjoinblockmute
targetবডিতেstringআবশ্যকপোস্ট, প্রোফাইল বা গ্রুপের id, kind অনুযায়ী।
activeবডিতেbooleanঐচ্ছিকtrue সম্পর্ক স্থাপন করে, false সরিয়ে দেয়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"kind":"like","target":"5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1","active":true}' \
  "https://api.tellmelo.com/v2/relations"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

GET/v2/profiles/{handle}/followers

কে একটি প্রোফাইল ফলো করে, নতুনরা আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
handleপাথেstringআবশ্যকএকটি প্রোফাইলের ছোট নাম; বড় বা ছোট হাতের অক্ষরে কিছু যায় আসে না।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/profiles/mara/followers?limit=20"

উত্তর

ProfileBrief-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "verified": true,
      "accountKind": "person"
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/profiles/{handle}/following

একটি প্রোফাইল কাকে ফলো করে, নতুনরা আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
handleপাথেstringআবশ্যকএকটি প্রোফাইলের ছোট নাম; বড় বা ছোট হাতের অক্ষরে কিছু যায় আসে না।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/profiles/mara/following?limit=20"

উত্তর

ProfileBrief-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "verified": true,
      "accountKind": "person"
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401404429

GET/v2/me/relations

তুমি কাকে ব্লক, মিউট বা শুধু বার্তার জন্য ব্লক করেছ, নতুনরা আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.19 থেকে

শুধু তোমার নিজের তালিকা। স্থাপন ও অপসারণ POST /relations দিয়ে।

প্যারামিটার

নামধরনঅর্থ
kindকোয়েরিতেstringআবশ্যকblock ব্লক করা, mute মিউট করা, dm_block শুধু বার্তার জন্য ব্লক।blockmutedm_block
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/relations?kind=mute&limit=20"

উত্তর

ProfileBrief-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "verified": true,
      "accountKind": "person"
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304400401429

সংগ্রহ

সংরক্ষিত পোস্ট নিজের সংগ্রহে সাজাও। একটি পোস্ট কয়েকটি সংগ্রহে থাকতে পারে; সংগ্রহ থেকে সরালেও সংরক্ষিত থাকে।

GET/v2/me/collections

তোমার সংগ্রহ আর তাতে পোস্টের সংখ্যা।

  • অধিকার read
  • ETag-সহ
  • v2.19 থেকে

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/collections"

উত্তর

Collection-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
      "name": "Recipes",
      "count": 12
    }
  ],
  "next": null
}

সম্ভাব্য স্ট্যাটাস: 200304401429

POST/v2/me/collections

সংগ্রহ তৈরি করো। তার id ফেরত দেয়।

  • অধিকার write
  • v2.19 থেকে

কতটি সংগ্রহ তৈরি করতে পারবে তা প্ল্যানের উপর নির্ভর করে।

প্যারামিটার

নামধরনঅর্থ
nameবডিতেstringআবশ্যকনাম, সর্বোচ্চ ৪০ অক্ষর। প্রতিটি অ্যাকাউন্টে অনন্য, বড়-ছোট হাতের অক্ষর আলাদা ধরা হয় না।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Recipes"}' \
  "https://api.tellmelo.com/v2/me/collections"

উত্তর

একটি Made দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

PUT/v2/me/collections/{id}

সংগ্রহের নাম বদলাও।

  • অধিকার write
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকসংগ্রহের id।
nameবডিতেstringআবশ্যকনাম, সর্বোচ্চ ৪০ অক্ষর। প্রতিটি অ্যাকাউন্টে অনন্য, বড়-ছোট হাতের অক্ষর আলাদা ধরা হয় না।

অনুরোধের উদাহরণ

curl -X PUT \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Baking"}' \
  "https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

DELETE/v2/me/collections/{id}

সংগ্রহ মুছে ফেলো।

  • অধিকার write
  • v2.19 থেকে

এর পোস্টগুলো সংরক্ষিত থাকে।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকসংগ্রহের id।

অনুরোধের উদাহরণ

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

GET/v2/me/collections/{id}/posts

একটি সংগ্রহের পোস্ট, সংরক্ষিত ট্যাবের মতো।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • v2.19 থেকে

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকসংগ্রহের id।
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718/posts?limit=20"

উত্তর

Post-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": null,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "giftDrop": {
        "item": "plan",
        "quantity": 3,
        "places": 10,
        "left": 4,
        "audience": "followers",
        "newAccounts": false,
        "status": "open",
        "claimed": true
      },
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200400401404429

POST/v2/me/collections/{id}/posts

পোস্ট সংগ্রহে রাখো বা সরাও।

  • অধিকার write
  • v2.19 থেকে

পোস্ট রাখলে সেটি সংরক্ষিতও হয়। শুধু দৃশ্যমান পোস্ট।

প্যারামিটার

নামধরনঅর্থ
idপাথেstringআবশ্যকসংগ্রহের id।
postবডিতেstringআবশ্যকপোস্টের id।
insideবডিতেbooleanঐচ্ছিকtrue পোস্ট রাখে (ডিফল্ট), false সরায়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"post":"5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1","inside":true}' \
  "https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718/posts"

উত্তর

একটি Ok দিয়ে উত্তর দেয়।

উদাহরণ
{
  "ok": true
}

সম্ভাব্য স্ট্যাটাস: 200400401403404429

উপহার

অংশীদারের কোটা দেখা ও সেখান থেকে উপহার দেওয়া, পোস্টের নিচে উপহার রাখা আর সেগুলোর খেয়াল রাখা। উপহার নেওয়া শুধু অ্যাপে মানুষের কাজ।

GET/v2/partner/quota

তোমার কোটায় দেওয়ার জন্য কতটা বাকি।

  • অধিকার read
  • ETag-সহ
  • v2.12 থেকে

শুধু কোটাওয়ালা অংশীদারদের জন্য; বাকিরা 403 পায়।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/partner/quota"

উত্তর

একটি Quota দিয়ে উত্তর দেয়।

উদাহরণ
{
  "months": 120,
  "sparks": 500,
  "looks": [
    {
      "id": "frame-gold",
      "name": "Goldring",
      "kind": "frame",
      "quantity": 25
    }
  ]
}

সম্ভাব্য স্ট্যাটাস: 200304401429

GET/v2/partner/gifts

কোটা থেকে তুমি কী, কাকে আর কখন দিয়েছ – নতুনগুলো আগে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.12 থেকে

শুধু কোটাওয়ালা অংশীদারদের জন্য; বাকিরা 403 পায়।

প্যারামিটার

নামধরনঅর্থ
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/partner/gifts?limit=20"

উত্তর

QuotaGift-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "item": "plan",
      "quantity": 3,
      "itemId": null,
      "recipient": {
        "handle": "jon",
        "name": "Jon"
      },
      "createdAt": 1758627600000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304401429

POST/v2/partner/gifts

তোমার কোটা থেকে কোনো সদস্যকে প্ল্যানের মাস বা স্ফুলিঙ্গ দাও।

  • অধিকার gifts
  • v2.12 থেকে

শুধু কোটাওয়ালা অংশীদারদের জন্য; বাকিরা 403 পায়।

অ্যাপের মতোই সদস্য দেখতে পায় উপহারটা কার কাছ থেকে। ঘণ্টায় সর্বোচ্চ ৬০টি উপহার।

প্যারামিটার

নামধরনঅর্থ
handleবডিতেstringআবশ্যকযে সদস্যকে উপহার দিচ্ছ তার @নাম, @ সহ বা ছাড়া।
itemবডিতেstringআবশ্যকপ্ল্যানের মাসের জন্য plan, স্ফুলিঙ্গের জন্য sparks, তোমার মজুতের কোনো লুকের জন্য shop (2.13 থেকে)।plansparksshop
quantityবডিতেintegerঐচ্ছিককতটা: প্রতি উপহারে সর্বোচ্চ ১২ মাস বা ৩৫টি স্ফুলিঙ্গ।
itemIdবডিতেstringঐচ্ছিকshop-এর জন্য: লুকের ID, কোটায় looks যেভাবে এটি উল্লেখ করে। প্রতি উপহারে একটি পিস; তখন quantity প্রযোজ্য নয়।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"handle":"jon","item":"plan","quantity":3,"itemId":"frame-gold"}' \
  "https://api.tellmelo.com/v2/partner/gifts"

উত্তর

একটি Quota দিয়ে উত্তর দেয়।

উদাহরণ
{
  "months": 120,
  "sparks": 500,
  "looks": [
    {
      "id": "frame-gold",
      "name": "Goldring",
      "kind": "frame",
      "quantity": 25
    }
  ]
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

GET/v2/gift-drops

পোস্টের নিচে তোমার উপহার: কতগুলো জায়গা এখনো খালি আর কীভাবে টাকা দেওয়া হয়েছে।

  • অধিকার read
  • পাতায় ভাগযোগ্য
  • ETag-সহ
  • v2.12 থেকে

প্যারামিটার

নামধরনঅর্থ
limitকোয়েরিতেintegerঐচ্ছিকপ্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
cursorকোয়েরিতেstringঐচ্ছিকআগের উত্তরের next। না থাকলে শুরু থেকে।

অনুরোধের উদাহরণ

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://api.tellmelo.com/v2/gift-drops?limit=20"

উত্তর

OwnGiftDrop-এর একটি পাতা দিয়ে উত্তর দেয়, `items` আর `next` হিসেবে।

উদাহরণ
{
  "items": [
    {
      "item": "plan",
      "quantity": 3,
      "places": 10,
      "left": 4,
      "audience": "followers",
      "newAccounts": false,
      "status": "open",
      "claimed": false,
      "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "funding": "quota",
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

সম্ভাব্য স্ট্যাটাস: 200304401429

POST/v2/gift-drops

অন্যদের নেওয়ার জন্য উপহারসহ একটি পোস্ট প্রকাশ করো।

  • অধিকার gifts
  • v2.12 থেকে

মালিক ও এই অনুমতিওয়ালা টিম সদস্যদের জন্য বিনামূল্যে, নইলে তোমার কোটা থেকে। যার জন্য টাকা দিতে হতো, তা 422 দিয়ে ফিরিয়ে দেওয়া হয় – টাকা দেওয়া শুধু অ্যাপে হয়।

উপহার শুধু অ্যাপে নেওয়া যায়, যাতে কোনো প্রোগ্রাম সব জায়গা দখল করতে না পারে। কতগুলো খালি আছে তা পোস্টের giftDrop-এ থাকে।

প্যারামিটার

নামধরনঅর্থ
textবডিতেstringঐচ্ছিকপোস্ট, উত্তর বা বার্তার লেখা।
communityবডিতেstringঐচ্ছিকযে গ্রুপের ফিড চ্যানেলে পোস্ট যাবে তার id; চ্যানেলটি চালু থাকতে হবে আর তোমার সেই অধিকার লাগবে। না দিলে পোস্ট কোনো গ্রুপে থাকে না।
itemবডিতেstringআবশ্যকপ্ল্যানের মাসের জন্য plan, স্ফুলিঙ্গের জন্য sparks।plansparks
quantityবডিতেintegerআবশ্যকপ্রতিটি জায়গায় কী থাকবে: সর্বোচ্চ ১২ মাস বা ৩৫টি স্ফুলিঙ্গ।
placesবডিতেintegerআবশ্যককতজনের জন্য, সর্বোচ্চ ১০,০০০।
audienceবডিতেstringঐচ্ছিককারা নিতে পারবে: all সবাই, followers শুধু তোমার ফলোয়ার, group শুধু গ্রুপের সদস্য (শুধু community-র সঙ্গে)।allfollowersgroup
newAccountsবডিতেbooleanঐচ্ছিকtrue দিলে ৭ দিনের কম পুরোনো অ্যাকাউন্টও নিতে পারে। না দিলে তারা বাদ থাকে।

অনুরোধের উদাহরণ

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Ten times three months of Supporter – first come, first served! 🎁","item":"plan","quantity":3,"places":10,"audience":"all","newAccounts":false}' \
  "https://api.tellmelo.com/v2/gift-drops"

উত্তর

একটি DropCreated দিয়ে উত্তর দেয়।

উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "funding": "quota"
}

সম্ভাব্য স্ট্যাটাস: 200400401403429

অবজেক্ট

সব অবজেক্ট, ফিল্ড ধরে ধরে। [] মানে তালিকা।

Service

রুটের উত্তর: কে উত্তর দিচ্ছে, আর এই চাবি কী করতে পারে।

ফিল্ডধরনঅর্থ
namestringসবসময় tellmelo।
versionstringAPI-র সংস্করণ, যেমন 2.1।
scopestringএই চাবি কী করতে পারে: read বা read write।
rateLimitRateLimitএই চাবির বাজেট।
docsstringএই ডকুমেন্টেশন কোথায়, এই সার্ভারে পাথ হিসেবে।
specstringযন্ত্রে পাঠযোগ্য বিবরণ কোথায়।
উদাহরণ
{
  "name": "tellmelo",
  "version": "2.20",
  "scope": "read write",
  "rateLimit": {
    "limit": 120,
    "remaining": 117
  },
  "docs": "/developers/docs",
  "spec": "/api/v2/openapi.json"
}

RateLimit

বর্তমান মিনিটে এই চাবির বাজেট।

ফিল্ডধরনঅর্থ
limitintegerপ্রতি মিনিটে অনুরোধ।
remainingintegerএই মিনিটে কতগুলো বাকি।
উদাহরণ
{
  "limit": 120,
  "remaining": 117
}

Post

একটি পোস্ট, সব জায়গায় একই আকারে।

ফিল্ডধরনঅর্থ
idstringপোস্টের id।
textstringবা nullলেখা যেমন লেখা হয়েছে (শুধু পোল বা শুধু ছবির পোস্টে null)।
kindstringপোস্টটি কী।
  • post — লেখা, ছবি বা উদ্ধৃতিসহ পোস্ট।
  • poll — পোলসহ পোস্ট।
authorProfileBriefকে লিখেছে।
communityCommunityBriefবা nullযে গ্রুপে লেখা (সব গ্রুপের বাইরে null)।
mediaMedia[]এর ছবি, ক্রমানুসারে; না থাকলে খালি।
pollPollবা nullপোল (না থাকলে null)।
quotesstringবা nullএটি যে পোস্ট উদ্ধৃত করে তার id।
continuesstringবা nullএটি সংযোজন হিসেবে যে পোস্ট এগিয়ে নেয় তার id।
countsCountsউত্তর, পছন্দ আর রিপোস্ট।
pinnedbooleanলেখকের প্রোফাইলের ওপরে পিন করা কি না।
giftDropGiftDropবা nullপোস্টের নিচে নেওয়ার মতো উপহার (না থাকলে null)।
createdAtintegerকখন লেখা হয়েছে।
উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "text": "The bees are back in the garden 🐝 #garden",
  "kind": "poll",
  "author": {
    "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
    "handle": "mara",
    "name": "Mara 🌻",
    "verified": true,
    "accountKind": "person"
  },
  "community": {
    "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
    "name": "Urban Gardening"
  },
  "media": [
    {
      "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
      "kind": "image",
      "poster": null,
      "ai": "without"
    }
  ],
  "poll": {
    "options": [
      {
        "text": "Lavender",
        "votes": 12
      },
      {
        "text": "Sunflowers",
        "votes": 7
      },
      {
        "text": "Clover",
        "votes": 3
      }
    ],
    "total": 22,
    "multiple": false,
    "endsAt": null,
    "running": true,
    "resultsVisible": true,
    "myVotes": [
      0
    ]
  },
  "quotes": null,
  "continues": null,
  "counts": {
    "replies": 4,
    "likes": 31,
    "reposts": 2
  },
  "pinned": false,
  "giftDrop": {
    "item": "plan",
    "quantity": 3,
    "places": 10,
    "left": 4,
    "audience": "followers",
    "newAccounts": false,
    "status": "open",
    "claimed": true
  },
  "createdAt": 1758624000000
}

Reply

একটি পোস্টের নিচে উত্তর: আরও দুটি ফিল্ডসহ একটি পোস্ট।

Post-এর সব ফিল্ড, আর এর সঙ্গে:

ফিল্ডধরনঅর্থ
postIdstringযে পোস্টে পুরো আলাপ ঝুলে আছে।
parentIdstringবা nullএটি যে উত্তরের উত্তর (সরাসরি পোস্টের উত্তর হলে null)।
উদাহরণ
{
  "id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
  "text": "Same here, the lavender is full of them.",
  "kind": "post",
  "author": {
    "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
    "handle": "jon",
    "name": "Jon",
    "verified": false,
    "accountKind": "person"
  },
  "community": null,
  "media": [],
  "poll": null,
  "quotes": null,
  "continues": null,
  "counts": {
    "replies": 0,
    "likes": 3,
    "reposts": 0
  },
  "pinned": false,
  "giftDrop": null,
  "createdAt": 1758624600000,
  "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "parentId": null
}

ReplyVote

একটি উত্তরে তোমার ভোট আর তার স্কোর।

ফিল্ডধরনঅর্থ
votestringতোমার ভোট।
  • up — উপরে।
  • down — নিচে।
  • none — কোনো ভোট নেই।
scoreintegerউপরের ভোট বিয়োগ নিচের ভোট, শূন্যের নিচেও হতে পারে।
উদাহরণ
{
  "vote": "up",
  "score": 12
}

PlannedReply

পরে পাঠানোর জন্য নির্ধারিত তোমার একটি উত্তর।

ফিল্ডধরনঅর্থ
idstringনির্ধারিত উত্তরের id।
parentIdstringবা nullযে উত্তরের জবাব দেবে (সরাসরি পোস্টে হলে null)।
textstringলেখা।
publishAtintegerকখন প্রকাশ হবে।
statestringতার অবস্থা।
  • waiting — নিজের সময়ের অপেক্ষায়।
  • failed — পাঠানো যায়নি, যেমন পোস্টটি আর নেই।
উদাহরণ
{
  "id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
  "parentId": null,
  "text": "Count me in for Saturday!",
  "publishAt": 1758710400000,
  "state": "waiting"
}

ReplySettings

তোমার একটি পোস্টের উত্তর সেটিং।

ফিল্ডধরনঅর্থ
audiencestringকে উত্তর দিতে পারে।
  • all — সবাই।
  • following — যাদের তুমি ফলো করো।
  • mentioned — পোস্টে উল্লেখ করা লোকেরা।
  • nobody — তুমি ছাড়া কেউ না।
approvalbooleanউত্তর তোমার অনুমোদনের অপেক্ষা করে কি না।
slowstringধীর মোড।
  • auto — অনেক উত্তর এলে নিজে চালু হয়।
  • on — সবসময় চালু।
  • off — বন্ধ।
উদাহরণ
{
  "audience": "following",
  "approval": false,
  "slow": "auto"
}

Counts

একটি পোস্টে কতগুলো উত্তর, পছন্দ আর রিপোস্ট।

ফিল্ডধরনঅর্থ
repliesintegerউত্তর, সব স্তর মিলিয়ে।
likesintegerপছন্দ।
repostsintegerরিপোস্ট।
উদাহরণ
{
  "replies": 4,
  "likes": 31,
  "reposts": 2
}

Media

একটি পোস্ট বা বার্তার ছবি।

ফিল্ডধরনঅর্থ
urlstringছবি বা ভিডিওর ঠিকানা, এই সার্ভারের সাপেক্ষে। হেডারে চাবি দিয়ে লোড করো।
kindstringimage, video বা gif (2.10 থেকে)। ভিডিও ও GIF হলো MP4 ফাইল।
  • image — একটি ছবি (WebP বা JPEG)।
  • video — শব্দসহ MP4 ভিডিও।
  • gif — একটি GIF, শব্দহীন পুনরাবৃত্ত MP4 হিসেবে।
posterstringবা nullভিডিও ও GIF-এর জন্য প্রিভিউ ছবির ঠিকানা, নইলে null (2.10 থেকে)।
aistringবা nullছবিটি AI দিয়ে তৈরি কি না, আপলোডকারী যেমন জানিয়েছে বা কোনো রিপোর্টের পর টিম যেমন চিহ্নিত করেছে; উল্লেখ না থাকলে null (2.11 থেকে)।
  • with — AI দিয়ে তৈরি।
  • without — AI ছাড়া তৈরি।
উদাহরণ
{
  "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
  "kind": "image",
  "poster": null,
  "ai": "without"
}

Poll

একটি পোস্টের পোল।

ফিল্ডধরনঅর্থ
optionsPollOption[]উত্তরগুলো, ক্রমানুসারে। ভোটে option 0 থেকে গোনা হয়।
totalintegerসব ভোট মিলিয়ে, সবসময় থাকে।
multiplebooleanএকাধিক উত্তর বেছে নেওয়া যায় কি না।
endsAtintegerবা nullপোল কখন শেষ হয় (শেষ ছাড়া চললে null)।
runningbooleanএখনো ভোট দেওয়া যায় কি না।
resultsVisiblebooleanপ্রতি উত্তরের ভোট দেখানো হয় কি না (votes দেখো)।
myVotesinteger[]তোমার বাছাই করা উত্তর, 0 থেকে গুনে।
উদাহরণ
{
  "options": [
    {
      "text": "Lavender",
      "votes": 12
    },
    {
      "text": "Sunflowers",
      "votes": 7
    },
    {
      "text": "Clover",
      "votes": 3
    }
  ],
  "total": 22,
  "multiple": false,
  "endsAt": null,
  "running": true,
  "resultsVisible": true,
  "myVotes": [
    0
  ]
}

PollOption

পোলের একটি উত্তর।

ফিল্ডধরনঅর্থ
textstringউত্তর।
votesintegerবা nullএর ভোট (ফল আটকে থাকা পর্যন্ত null)।
উদাহরণ
{
  "text": "Lavender",
  "votes": 12
}

ProfileBrief

অন্য অবজেক্টের ভেতরে যেমন দেখায় তেমন প্রোফাইল: লেখক হিসেবে, খোঁজে।

ফিল্ডধরনঅর্থ
idstringঅ্যাকাউন্টের id: যা /relations আর /conversations/{with} আশা করে।
handlestringছোট নাম, @ ছাড়া, সদস্য যেভাবে বেছে নিয়েছে সেভাবে লেখা।
namestringপ্রদর্শিত নাম। এতে ইমোজি থাকতে পারে, :name:-সহ।
verifiedbooleanঅ্যাকাউন্টটি যাচাইকৃত কি না।
accountKindstringঅ্যাকাউন্টের ধরন।
  • person — একজন মানুষ।
  • business — একটি ব্যবসা।
  • association — একটি ক্লাব বা সমিতি।
  • automated — একটি স্বয়ংক্রিয় অ্যাকাউন্ট, যেমন বট।
  • bot — গ্রুপের বট, নিজস্ব কী-সহ একটি প্রোগ্রাম যেটি চালায় (2.18 থেকে)।
উদাহরণ
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person"
}

Profile

নিজস্ব একটি প্রোফাইল, বিবরণ আর ফলোয়ারসহ।

ProfileBrief-এর সব ফিল্ড, আর এর সঙ্গে:

ফিল্ডধরনঅর্থ
aboutstringবা nullবিবরণ (না থাকলে null)।
websitestringবা nullপ্রোফাইলের ওয়েবসাইট (না থাকলে null)। 2.3 থেকে।
websiteVerifiedbooleanওয়েবসাইটটি rel=me দিয়ে এই প্রোফাইলে ফিরতি লিংক দেয় কি না, প্রতি সপ্তাহে যাচাই হয়। 2.3 থেকে।
followersintegerকতগুলো অ্যাকাউন্ট একে ফলো করে।
createdAtintegerবা nullঅ্যাকাউন্ট কখন তৈরি (সদস্য যোগদানের তারিখ লুকিয়ে রাখলে null; 2.9 থেকে)।
উদাহরণ
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person",
  "about": "Beekeeper, allotment, too many seeds. :tellmelo:",
  "website": "https://mara-imkerei.example/",
  "websiteVerified": true,
  "followers": 148,
  "createdAt": 1750848000000
}

CommunityBrief

যে গ্রুপে পোস্টটি লেখা হয়েছে।

ফিল্ডধরনঅর্থ
idstringগ্রুপের id।
namestringবা nullএর নাম।
উদাহরণ
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening"
}

Community

এই সার্ভারের একটি গ্রুপ।

ফিল্ডধরনঅর্থ
idstringগ্রুপের id।
namestringএর নাম।
handlestringবা nullগ্রুপকে @# দিয়ে উল্লেখ করার ছোট নাম। ২.১৫ থেকে।
descriptionstringবা nullবিবরণ (না থাকলে null)।
tagsstring[]যে বিষয়গুলো নিয়ে।
membersintegerকতজন সদস্য।
joinPolicystringকীভাবে ঢোকা যায়।
  • open — যে কেউ যোগ দিতে পারে।
  • application — যোগ দিতে আবেদন লাগে যা গ্রুপ গ্রহণ করে।
  • invite — শুধু আমন্ত্রণে।
visibilitystringকে এটি দেখে। internal আর hidden শুধু এর সদস্যরা (২.১৫ থেকে)।
  • open — সবার কাছে দৃশ্যমান।
  • internal — ডিরেক্টরিতে পাওয়া যায় না, তবে ঠিকানা দিয়ে যায়।
  • hidden — শুধু এর সদস্যদের জন্য।
feedChannelbooleanএর ফিড চ্যানেল চালু কি না। ২.১৫ থেকে।
sparksintegerগ্রুপের কাছে এখন কতগুলো স্ফুলিঙ্গ আছে (২.১৯ থেকে)।
perksstring[]যে সুবিধাগুলোর খরচ তার স্ফুলিঙ্গ দেয় (২.১৯ থেকে)।
membershipMembershipবা nullগ্রুপে তোমার অ্যাকাউন্ট কী আর কী পারে; সদস্য না হলে null। ২.১৫ থেকে।
উদাহরণ
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening",
  "handle": "urbangardening",
  "description": "Balconies, allotments, rooftops: whatever grows.",
  "tags": [
    "garden",
    "bees"
  ],
  "members": 312,
  "joinPolicy": "open",
  "visibility": "open",
  "feedChannel": true,
  "sparks": 24,
  "perks": [
    "tint",
    "welcome"
  ],
  "membership": {
    "leader": null,
    "roles": [
      "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
    ],
    "permissions": [
      "attach",
      "invite",
      "send",
      "view"
    ],
    "mutedUntil": null
  }
}

Membership

গ্রুপে তোমার অ্যাকাউন্ট কী আর কী পারে।

ফিল্ডধরনঅর্থ
leaderstringবা nullতুমি গ্রুপটি তৈরি করেছ বা একসঙ্গে চালাও কি না; নইলে null।
  • founder — প্রতিষ্ঠাতা।
  • manager — সহ-নেতৃত্ব।
rolesstring[]তোমার ভূমিকাগুলোর id, সবচেয়ে উঁচুটি আগে।
permissionsstring[]গ্রুপে তুমি কী পারো।
mutedUntilintegerবা nullমিউট তোমাকে এখানে কতক্ষণ চুপ রাখে; না থাকলে null।
উদাহরণ
{
  "leader": null,
  "roles": [
    "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
  ],
  "permissions": [
    "attach",
    "invite",
    "send",
    "view"
  ],
  "mutedUntil": null
}

Person

একজন সদস্য, সংক্ষেপে।

ফিল্ডধরনঅর্থ
idstringঅ্যাকাউন্টের id।
handlestringব্যবহারকারীর নাম, @ ছাড়া।
namestringদেখানো নাম।
botbooleanঅ্যাকাউন্টটি বট কি না (2.18 থেকে)।
উদাহরণ
{
  "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
  "handle": "jon",
  "name": "Jon",
  "bot": false
}

Channel

কোনো গ্রুপের চ্যানেল।

ফিল্ডধরনঅর্থ
idstringid।
kindstringচ্যানেলের ধরন।
  • feed — ফিড চ্যানেল, যার পোস্ট পাবলিক ফিডেও থাকে।
  • chat — একটি চ্যাট।
  • voice — একটি ভয়েস চ্যানেল; কথা শুধু অ্যাপে।
  • hub — গ্রুপের হাব: গ্রুপের পরিচয়ের পাতা। সবসময় থাকে, বার্তা ছাড়া।
namestringবা null# ছাড়া নাম; null হলে অ্যাপ প্রতিটি ভাষায় যে নাম দেয়।
topicstringবিষয়; না থাকলে খালি।
categoryChannelCategoryবা nullবিভাগ; না থাকলে null।
unreadintegerঅন্যদের কতগুলো বার্তা তুমি এখনো পড়োনি, ১০০ পর্যন্ত।
permissionsstring[]এই চ্যানেলে তুমি কী পারো।
symbolChannelSymbolএর প্রতীক; গ্রুপ আকার ঠিক করলে সেটাই।
উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
  "kind": "chat",
  "name": "harvest",
  "topic": "What came in this week",
  "category": {
    "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "name": "Garden",
    "symbol": {
      "emoji": null,
      "icon": null,
      "image": null,
      "color": null,
      "shape": null
    }
  },
  "unread": 3,
  "permissions": [
    "view",
    "send"
  ],
  "symbol": {
    "emoji": "🌻",
    "icon": null,
    "image": null,
    "color": "amber",
    "shape": "circle"
  }
}

ChannelCategory

যে বিভাগের নিচে চ্যানেলটি আছে।

ফিল্ডধরনঅর্থ
idstringid।
namestringনাম।
symbolChannelSymbolএর প্রতীক।
উদাহরণ
{
  "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
  "name": "Garden",
  "symbol": {
    "emoji": null,
    "icon": null,
    "image": null,
    "color": null,
    "shape": null
  }
}

ChannelSymbol

চ্যানেল বা বিভাগের প্রতীক: ইমোজি, প্রতীক ও ছবির মধ্যে সর্বোচ্চ একটি, নইলে তার ধরনের চিহ্ন।

ফিল্ডধরনঅর্থ
emojistringবা nullইমোজি; না থাকলে null।
iconstringবা nullঅ্যাপ সেটের প্রতীকের নাম; না থাকলে null।
imagestringবা nullনিজের ছবির ঠিকানা; না থাকলে null।
colorstringবা nullটাইলের রং; তার ধরনের রঙের জন্য null।
shapestringবা nullটাইলের আকার; বৃত্তের জন্য null।
উদাহরণ
{
  "emoji": "🌻",
  "icon": null,
  "image": null,
  "color": "amber",
  "shape": "circle"
}

ChannelMessage

চ্যাট চ্যানেলের একটি বার্তা।

ফিল্ডধরনঅর্থ
idstringid।
textstringবা nullলেখা (শুধু ছবি বা ভয়েসের বার্তায় null)।
authorPersonকে লিখেছে।
mediaMedia[]এর ছবি আর ভয়েস মেসেজ; না থাকলে খালি।
replyTostringবা nullযে বার্তার উত্তর দেয় তার id; না থাকলে null।
roleColorstringবা nullলেখকের সেই সর্বোচ্চ ভূমিকার রঙ যার রঙ আছে; না থাকলে null।
threadOfstringবা nullযে বার্তার থ্রেডে এটি উত্তর দেয়; চ্যাটে null।
threadCountintegerএই বার্তার থ্রেডে কতগুলো উত্তর আছে।
cardobjectবা nullবটের কার্ড: title, text, color ও fields; নইলে null।
buttonsobject[]বটের বোতাম: প্রতিটি id, label ও style।
createdAtintegerকখন লেখা হয়েছে।
উদাহরণ
{
  "id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
  "text": "@jon the first tomatoes are ripe 🍅",
  "author": {
    "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
    "handle": "mara",
    "name": "Mara 🌻",
    "bot": false
  },
  "media": [
    {
      "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
      "kind": "image",
      "poster": null,
      "ai": "without"
    }
  ],
  "replyTo": "72b3c4d5-e6f7-4081-92a3-b4c5d6e7f809",
  "roleColor": "green",
  "threadOf": null,
  "threadCount": 3,
  "card": null,
  "buttons": [],
  "createdAt": 1758631200000
}

Role

কোনো গ্রুপের ভূমিকা।

ফিল্ডধরনঅর্থ
idstringid।
namestringবা nullনাম; @everyone-এর জন্য null।
everyonebooleanএটি @everyone কি না, সব সদস্যের ভূমিকা।
colorstringবা nullরং: indigo, violet, rose, amber, green বা teal; না থাকলে null।
permissionsstring[]এর অধিকার।
membersintegerকতজনের আছে; @everyone-এর ক্ষেত্রে সব সদস্য।
editablebooleanতোমার অ্যাকাউন্ট এটি বদলাতে পারে কি না।
selfablebooleanসদস্যরা ভূমিকাটি নিজেরা নেয় ও ছাড়ে কি না।
উদাহরণ
{
  "id": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
  "name": "Gardeners",
  "everyone": false,
  "color": "green",
  "permissions": [
    "attach",
    "invite",
    "send",
    "view"
  ],
  "members": 24,
  "editable": true,
  "selfable": false
}

GroupMember

গ্রুপের সদস্য, তার ভূমিকাসহ।

Person-এর সব ফিল্ড, আর এর সঙ্গে:

ফিল্ডধরনঅর্থ
leaderstringবা nullসদস্যটি গ্রুপ তৈরি করেছে বা একসঙ্গে চালায় কি না; নইলে null।
  • founder — প্রতিষ্ঠাতা।
  • manager — সহ-নেতৃত্ব।
rolesstring[]তার ভূমিকাগুলোর id, সবচেয়ে উঁচুটি আগে।
mutedUntilintegerবা nullতোমার অ্যাকাউন্ট মিউট করতে পারলে সদস্য কতক্ষণ মিউট; নইলে null।
উদাহরণ
{
  "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
  "handle": "jon",
  "name": "Jon",
  "bot": false,
  "leader": null,
  "roles": [
    "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
  ],
  "mutedUntil": null
}

ChannelOverride

কোনো ভূমিকা কোনো চ্যানেলে গ্রুপ থেকে আলাদাভাবে কী পারে।

ফিল্ডধরনঅর্থ
rolestringভূমিকার id।
allowstring[]এটি এখানে বাড়তি কী পারে।
denystring[]এটি এখানে কী পারে না।
উদাহরণ
{
  "role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
  "allow": [
    "send"
  ],
  "deny": []
}

Bell

কোনো গ্রুপের ঘণ্টা।

ফিল্ডধরনঅর্থ
levelstringকোন বিজ্ঞপ্তি আসে।
  • all — ফিড চ্যানেলের প্রতিটি নতুন পোস্ট, সঙ্গে @everyone।
  • important — ফিড চ্যানেলে নেতৃত্বের পোস্ট, সঙ্গে @everyone।
  • off — কিছুই না, যদি না @নাম দিয়ে তোমাকে উল্লেখ করা হয়।
উদাহরণ
{
  "level": "important"
}

InviteLink

কোনো গ্রুপের আমন্ত্রণ লিংক।

ফিল্ডধরনঅর্থ
codestringকোড।
urlstringশেয়ার করার ঠিকানা।
createdByPersonবা nullকে তৈরি করেছে; অ্যাকাউন্ট মুছে গেলে null।
createdAtintegerকখন তৈরি হয়েছে।
expiresAtintegerবা nullকখন পর্যন্ত চলে; শেষ না থাকলে null।
usesintegerকতবার ব্যবহার হয়েছে।
maxUsesintegerবা nullকতবার ব্যবহার করা যায়; সীমাহীন হলে null।
উদাহরণ
{
  "code": "k7Qm2xPa",
  "url": "https://tellmelo.com/groups?join=k7Qm2xPa",
  "createdBy": {
    "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
    "handle": "jon",
    "name": "Jon",
    "bot": false
  },
  "createdAt": 1758624000000,
  "expiresAt": 1759228800000,
  "uses": 3,
  "maxUses": 10
}

InvitePreview

আমন্ত্রণ লিংক কোথায় নিয়ে যায়।

ফিল্ডধরনঅর্থ
communityInviteGroupগ্রুপ।
memberbooleanতোমার অ্যাকাউন্ট আগে থেকেই সদস্য কি না।
উদাহরণ
{
  "community": {
    "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
    "name": "Urban Gardening",
    "members": 312,
    "rules": [
      "Be kind.",
      "No advertising."
    ]
  },
  "member": false
}

InviteGroup

আমন্ত্রণ লিংকের পেছনের গ্রুপ।

ফিল্ডধরনঅর্থ
idstringid।
namestringনাম।
membersintegerএর কতজন সদস্য।
rulesstring[]এর নিয়ম, যোগ দেওয়ার সময় মেনে নিতে হয়; না থাকলে খালি।
উদাহরণ
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening",
  "members": 312,
  "rules": [
    "Be kind.",
    "No advertising."
  ]
}

Joined

আমন্ত্রণ লিংক দিয়ে যোগ দেওয়া।

ফিল্ডধরনঅর্থ
communitystringগ্রুপের id।
উদাহরণ
{
  "community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}

LogEntry

নেতৃত্বের লগের একটি এন্ট্রি।

ফিল্ডধরনঅর্থ
idstringid।
actionstringকী ঘটেছে।
  • post_removed — একটি পোস্ট।
  • member_removed — 2.16-এর আগে সরানো সদস্য (90 দিন বাইরে)।
  • message_removed — চ্যাট চ্যানেলের একটি বার্তা।
  • member_kicked — বের করে দেওয়া।
  • member_banned — নিষেধাজ্ঞা।
  • member_unbanned — তোলা নিষেধাজ্ঞা।
  • member_timed_out — মিউট।
  • timeout_lifted — তোলা মিউট।
  • voice_muted — ভয়েস চ্যানেলে মিউট করা হয়েছে।
  • voice_removed — ভয়েস চ্যানেল থেকে বিচ্ছিন্ন করা হয়েছে।
  • bot_added — গ্রুপে একটি বট যোগ হয়েছে (2.18 থেকে)।
  • bot_removed — গ্রুপ থেকে একটি বট সরানো হয়েছে (2.18 থেকে)।
memberPersonকাকে নিয়ে ছিল।
reasonstringকারণ; বার্তার ক্ষেত্রে আর কারণ না দিলে খালি।
bystringবা nullযে করেছে তার নাম; অ্যাকাউন্ট মুছে গেলে null।
createdAtintegerকখন।
উদাহরণ
{
  "id": "8f7e6d5c-4b3a-4291-8f7e-6d5c4b3a2918",
  "action": "message_removed",
  "member": {
    "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
    "handle": "jon",
    "name": "Jon",
    "bot": false
  },
  "reason": "",
  "by": "Mara 🌻",
  "createdAt": 1758710400000
}

Ban

কোনো গ্রুপ থেকে নিষেধাজ্ঞা।

ফিল্ডধরনঅর্থ
memberPersonকে নিষিদ্ধ।
untilintegerবা nullকতদিন; তোলা না পর্যন্ত null।
createdAtintegerবা nullকবে থেকে; 2.16-এর আগের নিষেধাজ্ঞায় null।
bystringবা nullযে নিষিদ্ধ করেছে তার নাম; অজানা হলে null।
উদাহরণ
{
  "member": {
    "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
    "handle": "jon",
    "name": "Jon",
    "bot": false
  },
  "until": 1759228800000,
  "createdAt": 1758624000000,
  "by": "Mara 🌻"
}

Until

মিউট বা নিষেধাজ্ঞা কখন শেষ হয়।

ফিল্ডধরনঅর্থ
untilintegerবা nullসময়; শেষ ছাড়া নিষেধাজ্ঞা বা তোলা মিউটের ক্ষেত্রে null।
উদাহরণ
{
  "until": 1758624600000
}

Tag

একটি ট্যাগ আর কতগুলো পোস্টে তা আছে।

ফিল্ডধরনঅর্থ
tagstringট্যাগ, # ছাড়া।
postsintegerকতগুলো সাম্প্রতিক পোস্টে এটি আছে।
উদাহরণ
{
  "tag": "garden",
  "posts": 58
}

SearchResult

তিনটি তালিকা, হয়তো খালি।

ফিল্ডধরনঅর্থ
postsPost[]মিলে যাওয়া পোস্ট, নতুনগুলো আগে।
profilesProfileBrief[]মিলে যাওয়া প্রোফাইল, ছোট নাম অনুযায়ী।
tagsTag[]মিলে যাওয়া ট্যাগ, সবচেয়ে বেশি ব্যবহৃতগুলো আগে।
উদাহরণ
{
  "posts": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
          "kind": "image",
          "poster": null,
          "ai": "without"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": null,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "giftDrop": {
        "item": "plan",
        "quantity": 3,
        "places": 10,
        "left": 4,
        "audience": "followers",
        "newAccounts": false,
        "status": "open",
        "claimed": true
      },
      "createdAt": 1758624000000
    }
  ],
  "profiles": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "verified": true,
      "accountKind": "person"
    }
  ],
  "tags": [
    {
      "tag": "garden",
      "posts": 58
    }
  ]
}

Emoji

এই সার্ভারের একটি ইমোজি।

ফিল্ডধরনঅর্থ
namestringনাম, কোলনের মাঝে যেমন থাকে।
urlstringছবির ঠিকানা, এই সার্ভারের সাপেক্ষে।
উদাহরণ
{
  "name": "tellmelo",
  "url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}

Notification

একটি বিজ্ঞপ্তি। একটি সারি একই ধরনের কয়েকটি ঘটনা একত্র করতে পারে।

ফিল্ডধরনঅর্থ
idstringবিজ্ঞপ্তির id।
kindstringকী ঘটেছে।
  • reply — কেউ তোমাকে উত্তর দিয়েছে।
  • like — কেউ তোমার পোস্ট পছন্দ করেছে।
  • reply_like — কেউ তোমার উত্তরে আপভোট দেয়।
  • duel — কেউ তোমাকে ফিড ডুয়েলে চ্যালেঞ্জ করেছে, বা তোমার চ্যালেঞ্জ খেলা হয়েছে।
  • reply_pick — কোনো পোস্টের লেখক তোমার উত্তর হাইলাইট করেন।
  • repost — কেউ তোমার পোস্ট রিপোস্ট করেছে।
  • follow — কেউ তোমাকে ফলো করে।
  • mention — কেউ তোমাকে উল্লেখ করেছে।
  • group_mention — কেউ তোমার পরিচালিত একটি গ্রুপ উল্লেখ করেছে; text তার নাম।
  • channel_mention — কেউ তোমার কোনো গ্রুপের চ্যাট চ্যানেলে তোমাকে উল্লেখ করেছে, @everyone সহ; সদস্যটি actor, বাক্যে চ্যানেল ও গ্রুপের নাম থাকে, বার্তা কখনো নয়।
  • message — কেউ তোমাকে বার্তা লিখেছে।
  • scheduled — তোমার একটি নির্ধারিত পোস্ট প্রকাশিত হয়েছে।
  • video — তোমার একটি পোস্ট, যা তার ভিডিওর অপেক্ষায় ছিল, প্রকাশিত হয়েছে বা আবার খসড়া হয়েছে।
  • reminder — সংরক্ষিত পোস্টের একটি রিমাইন্ডারের সময় হয়েছে।
  • report — তোমার পাঠানো রিপোর্টের কী হলো।
  • moderation — তোমার অ্যাকাউন্ট নিয়ে একটি সিদ্ধান্ত: সতর্কবার্তা, সীমাবদ্ধতা, আপত্তি।
  • team — টিমের জন্য নতুন কাজ (শুধু মালিক, অ্যাডমিন ও মডারেটর)।
  • reward — আমন্ত্রণের পুরস্কার শেষ হতে চলেছে বা শেষ হয়েছে।
  • gift — টিমের পক্ষ থেকে উপহার: একটি প্ল্যান, বা তোমার জন্য বা তোমার পরিচালিত গ্রুপের জন্য স্ফুলিঙ্গ।
  • present — কোনো সদস্যের উপহার: স্ফুলিঙ্গ বা প্ল্যানের সময়; সদস্যটি হলো actor।
  • spark — স্ফুলিঙ্গের মেয়াদ শিগগির ফুরাবে, বা তোমার চালানো কোনো গ্রুপের সুবিধার জন্য স্ফুলিঙ্গ আর যথেষ্ট নেই।
  • loyalty — আনুগত্যের ছন্দ নিয়ে: সক্রিয় সপ্তাহ গণ্য হয়েছে বা এক দিন কম, পুরস্কার নতুন বা মুছে যেতে চলেছে।
  • impact — বারো ঘণ্টার তোমার পোস্টগুলো এক দিন পর কেমন গেল, একটি নোটিফিকেশনে।
  • discovery — “আবিষ্কৃত” প্রোগ্রামের আমন্ত্রণ, বা সেখানে একটি জায়গা শুরু বা শেষ হওয়ার খবর।
  • group_post — এমন গ্রুপে নতুন পোস্ট যার ঘণ্টা এর জন্য বাজে।
  • group_moderation — কোনো গ্রুপের নেতৃত্ব তোমার একটি পোস্ট বা তোমাকে গ্রুপ থেকে সরিয়েছে।
  • group — কোনো সদস্য কোনো গ্রুপে তোমার সঙ্গে যা করেছেন: আমন্ত্রণ, গ্রহণ বা প্রত্যাখ্যান, সহ-প্রশাসক করা, গ্রুপ হস্তান্তর বা বিলুপ্ত করা, অথবা তোমার গ্রুপে আবেদন; সদস্যটি হলো actor, গ্রুপের নাম বাক্যের শেষে থাকে।
  • coauthor — কেউ তোমাকে একটি পোস্টের সহ-লেখক হতে আমন্ত্রণ জানিয়েছে।
  • partner — অংশীদার প্রোগ্রাম থেকে মনে করিয়ে দেওয়া, বা অংশীদার ব্যাজের শেষ।
  • news — তুমি ফলো করো এমন এলাকায় নতুন লেখা।
  • pick — তোমার কোনো পোস্ট সপ্তাহের বা বছরের পোস্টের জন্য মনোনীত, বা জিতেছে।
  • advent — আগমনকালের ক্যালেন্ডারের নতুন দরজা খুলেছে, একটা দরজা খোলা হয়েছে বা আজকেরটা এখনও অপেক্ষায়।
  • team_message — tellmelo টিম বাছাই করা সদস্যদের যে বার্তা লিখেছে।
  • challenge — সপ্তাহের নতুন চ্যালেঞ্জ শুরু হয়েছে।
  • nudge — একবারই: এমন একটি পোস্ট যার এখনও কেউ উত্তর দেয়নি, বা চলমান চ্যালেঞ্জ।
  • signin — কোনো কম্পিউটার জিজ্ঞেস করছে তুমি এখন সেখানে সাইন ইন করছ কি না।
textstringবা nullশুধু রিপোর্ট আর মডারেশনের জন্য: সংশ্লিষ্ট লেখা, নইলে null।
actorActorকে করেছে।
postIdstringবা nullযে পোস্ট নিয়ে (কোনোটি নিয়ে না হলে null)।
readbooleanপড়া হিসেবে চিহ্নিত কি না।
moreintegerউল্লিখিতটি ছাড়া এই সারি আর কতগুলো ঘটনার প্রতিনিধিত্ব করে।
createdAtintegerপ্রথম কখন ঘটেছে।
updatedAtintegerশেষবার কখন আরেকটি ঘটনা যুক্ত হয়েছে। তালিকা এটি অনুযায়ী সাজানো।
উদাহরণ
{
  "id": "3f2e1d0c-9b8a-4765-8432-10fedcba9876",
  "kind": "like",
  "text": null,
  "actor": {
    "handle": "jon",
    "name": "Jon"
  },
  "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "read": false,
  "more": 2,
  "createdAt": 1758624300000,
  "updatedAt": 1758624900000
}

Actor

কে বিজ্ঞপ্তিটি ঘটিয়েছে।

ফিল্ডধরনঅর্থ
handlestringছোট নাম।
namestringপ্রদর্শিত নাম।
উদাহরণ
{
  "handle": "jon",
  "name": "Jon"
}

Conversation

তোমার ইনবক্সের একটি সারি।

ফিল্ডধরনঅর্থ
withstringঅন্য অ্যাকাউন্টের id: যা /conversations/{with}/messages আশা করে।
handlestringতাঁর ছোট নাম।
namestringতাঁর প্রদর্শিত নাম।
excerptstringবা nullশেষ বার্তার শুরু (লেখা না থাকলে null)।
truncatedbooleanঅংশটি কেটে ছোট করা হয়েছে কি না।
fromMebooleanশেষ বার্তাটি তোমার কি না।
lastMessageIdstringশেষ বার্তার id।
unreadintegerতাঁর কতগুলো বার্তা তুমি এখনো পড়োনি।
updatedAtintegerশেষ বার্তা কখন লেখা হয়েছে।
উদাহরণ
{
  "with": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
  "handle": "jon",
  "name": "Jon",
  "excerpt": "See you on Saturday at the market!",
  "truncated": false,
  "fromMe": true,
  "lastMessageId": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
  "unread": 0,
  "updatedAt": 1758624060000
}

Message

একটি আলাপের একটি বার্তা।

ফিল্ডধরনঅর্থ
idstringবার্তার id।
textstringবা nullলেখা (শুধু ছবির বার্তায় null)।
fromstringযে অ্যাকাউন্ট লিখেছে তার id।
tostringযে অ্যাকাউন্টকে লেখা হয়েছে তার id।
readbooleanপ্রাপক পড়েছেন কি না।
mediaMedia[]এর ছবি; না থাকলে খালি।
replyTostringবা nullএটি যে বার্তার উত্তর তার id (কোনোটির উত্তর না হলে null)। 2.2 থেকে।
createdAtintegerকখন পাঠানো হয়েছে।
উদাহরণ
{
  "id": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
  "text": "See you on Saturday at the market!",
  "from": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "to": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
  "read": true,
  "media": [],
  "replyTo": null,
  "createdAt": 1758624060000
}

PlannedMessage

পরে পাঠানোর জন্য নির্ধারিত তোমার একটি বার্তা।

ফিল্ডধরনঅর্থ
idstringনির্ধারিত বার্তার id।
tostringপ্রাপক অ্যাকাউন্টের id।
textstringবা nullলেখা, এন্ড-টু-এন্ড এনক্রিপশনে null।
sendAtintegerকখন পাঠানো হবে।
statestringতার অবস্থা।
  • waiting — নিজের সময়ের অপেক্ষায়।
  • held — প্ল্যান শেষ হওয়ায় আটকে রাখা। তুমি নিজে পাঠাতে বা মুছতে পারো।
  • failed — পাঠানো যায়নি।
উদাহরণ
{
  "id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
  "to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "text": "Happy birthday! 🎂",
  "sendAt": 1758710400000,
  "state": "waiting"
}

ScheduledPost

তোমার একটি পোস্ট যা এখনো আসেনি।

ফিল্ডধরনঅর্থ
idstringপোস্টের id।
textstringবা nullলেখা।
communityIdstringবা nullযে গ্রুপে আসবে (গ্রুপের বাইরে null)।
publishAtintegerবা nullকখন আসবে (অন্য কিছুর অপেক্ষায় থাকলে null)।
deleteAtintegerবা nullনিজে থেকে কখন মুছবে (null: কখনো না)।
waitingForstringকীসের অপেক্ষায়।
  • time — নিজের সময়ের।
  • review — পর্যালোচনার জন্য লেখা লেখার অনুমোদনের।
  • check — স্বয়ংক্রিয় মডারেশনের যাচাইয়ের।
  • payment — নিজের উপহারের পেমেন্টের।
createdAtintegerকখন লেখা হয়েছে।
উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "text": "Market day tomorrow – see you at the bee stand! #garden",
  "communityId": null,
  "publishAt": 1758710400000,
  "deleteAt": null,
  "waitingFor": "time",
  "createdAt": 1758624000000
}

Collection

সংরক্ষিত পোস্টের একটি সংগ্রহ।

ফিল্ডধরনঅর্থ
idstringসংগ্রহের id।
namestringতার নাম।
countintegerতাতে কতটি পোস্ট আছে।
উদাহরণ
{
  "id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
  "name": "Recipes",
  "count": 12
}

Event

একটি প্রোফাইলের আসন্ন ইভেন্ট।

ফিল্ডধরনঅর্থ
idstringইভেন্টের id।
titlestringশিরোনাম।
startsAtintegerশুরু।
endsAtintegerবা nullশেষ, শেষ না থাকলে null।
placestringবা nullস্থান।
descriptionstringবা nullবিবরণ।
signupsEventSignupsবা nullনাম লেখানো, না থাকলে null।
উদাহরণ
{
  "id": "2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b",
  "title": "Seed swap",
  "startsAt": 1758883200000,
  "endsAt": 1758890400000,
  "place": "Community garden",
  "description": "Bring seeds, take seeds.",
  "signups": {
    "count": 14,
    "going": true
  }
}

EventSignups

কতজন নাম লিখিয়েছে।

ফিল্ডধরনঅর্থ
countintegerনাম লেখানোর সংখ্যা।
goingbooleanতুমি নাম লিখিয়েছ কি না।
উদাহরণ
{
  "count": 14,
  "going": true
}

EventSignup

তোমার কোনো ইভেন্টে নাম লেখানো কেউ।

ফিল্ডধরনঅর্থ
idstringঅ্যাকাউন্টের id।
handlestringইউজারনেম।
namestringপ্রদর্শিত নাম।
atintegerকখন নাম লিখিয়েছে।
উদাহরণ
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "at": 1758624000000
}

Picture

আপলোড করা একটি ছবি।

ফিল্ডধরনঅর্থ
idstringছবির id।
urlstringকোথায় দেখা যায়।
উদাহরণ
{
  "id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}

EmojiPicture

একটি ইমোজির আপলোড করা ছবি।

ফিল্ডধরনঅর্থ
idstringছবির id।
urlstringকোথায় দেখা যায়।
animatedbooleanচলমান কি না।
উদাহরণ
{
  "id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "animated": false
}

OwnEmoji

তোমার নিজের একটি ইমোজি।

ফিল্ডধরনঅর্থ
namestringতার নাম।
urlstringতার ছবি।
animatedbooleanচলমান কি না।
restingbooleanবিশ্রামে, কারণ প্ল্যান এখন কম ইমোজি দেয়: থাকে, কিন্তু ব্যবহার করা যায় না।
উদাহরণ
{
  "name": "sunflower",
  "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "animated": false,
  "resting": false
}

GroupEmoji

একটি গ্রুপের ইমোজি।

ফিল্ডধরনঅর্থ
namestringতার নাম।
urlstringতার ছবি।
animatedbooleanচলমান কি না।
উদাহরণ
{
  "name": "seedling",
  "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "animated": false
}

BotEvent

বটের একটি গ্রুপের একটি ঘটনা।

ফিল্ডধরনঅর্থ
idstringএর নম্বর, ঊর্ধ্বক্রমে; এটি দিয়েই এগোনো যায় (since, Last-Event-ID)।
typestringকী ঘটেছে।
  • message.created — একটি বার্তা লেখা হয়েছে।
  • message.deleted — একটি বার্তা মুছে ফেলা হয়েছে।
  • member.joined — কেউ যোগ দিয়েছে।
  • member.left — কেউ চলে গেছে বা সরানো হয়েছে।
  • voice.joined — কেউ একটি ভয়েস চ্যানেলে এসেছে।
  • command — কেউ বটের একটি কমান্ড ব্যবহার করেছে।
  • interaction — কেউ বটের বার্তায় একটি বোতাম চেপেছে।
communitystringগ্রুপ।
channelstringবা nullচ্যানেল; পুরো গ্রুপের জন্য null।
createdAtintegerকখন ঘটেছে।
dataobjectধরন অনুযায়ী সংশ্লিষ্ট তথ্য: message, member (reason-সহ), command বা interaction।
উদাহরণ
{
  "id": "4711",
  "type": "message.created",
  "community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
  "createdAt": 1758634800000,
  "data": {
    "message": {
      "id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
      "text": "/dice 6",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "bot": false
      },
      "media": 0,
      "replyTo": null,
      "threadOf": null,
      "createdAt": 1758634800000
    }
  }
}

BotCommand

একটি বটের কমান্ড।

ফিল্ডধরনঅর্থ
namestringএর নাম, “/” ছাড়া।
descriptionstringএটি কী করে।
উদাহরণ
{
  "name": "dice",
  "description": "Rolls a die"
}

VoiceSeat

ভয়েস চ্যানেলে একটি জায়গা।

ফিল্ডধরনঅর্থ
urlstringমিডিয়া সার্ভারের ঠিকানা (LiveKit)।
tokenstringএই চ্যানেলের টোকেন, কয়েক মিনিট বৈধ।
iceServersobject[]সংযোগের জন্য STUN ও TURN সার্ভার।
speakbooleanবট সেখানে শব্দ পাঠাতে পারে কি না।
videobooleanবট সেখানে ভিডিও পাঠাতে পারে কি না।
উদাহরণ
{
  "url": "wss://voice.example.org",
  "token": "eyJhbGciOiJIUzI1NiJ9…",
  "iceServers": [
    {
      "urls": [
        "stun:turn.example.org:3478"
      ]
    }
  ],
  "speak": true,
  "video": false
}

Webhook

তোমার একটি ওয়েবহুক।

ফিল্ডধরনঅর্থ
idstringওয়েবহুকের id।
urlstringতার ঠিকানা।
kindsstring[]কোন বিষয়ে খবর পায়।
activebooleanপাঠানো পায় কি না। পরপর অনেকবার ব্যর্থ হলে বন্ধ হয়ে যায়।
lastStatusintegerবা nullশেষ পাঠানোর HTTP স্ট্যাটাস।
lastAtintegerবা nullশেষ কবে পাঠানো হয়েছে।
failuresintegerপরপর ব্যর্থতা।
উদাহরণ
{
  "id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
  "url": "https://example.org/tellmelo-hook",
  "kinds": [
    "reply",
    "mention"
  ],
  "active": true,
  "lastStatus": 200,
  "lastAt": 1758624000000,
  "failures": 0
}

WebhookCreated

গোপন কোডসহ একটি নতুন ওয়েবহুক।

ফিল্ডধরনঅর্থ
idstringওয়েবহুকের id।
secretstringস্বাক্ষরের গোপন কোড, শুধু এবারই।
উদাহরণ
{
  "id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
  "secret": "whsec_3f9a…"
}

GroupBot

একটি গ্রুপের বট।

ফিল্ডধরনঅর্থ
idstringবট অ্যাকাউন্টের id।
handlestringতার ছোট নাম।
namestringতার নাম।
descriptionstringসে কী করে, মালিকের ভাষায়।
permissionsstring[]গ্রুপে তার ভূমিকা যা করতে দেয়।
উদাহরণ
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "gardenbot",
  "name": "Garden bot",
  "description": "Reminds the group of watering days.",
  "permissions": [
    "send",
    "view"
  ]
}

VoiceRoom

একটি ভয়েস চ্যানেল আর তাতে থাকা মানুষ।

ফিল্ডধরনঅর্থ
channelstringচ্যানেলের id।
peopleVoicePerson[]এখন কে আছে।
উদাহরণ
{
  "channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
  "people": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "muted": false,
      "deaf": false,
      "camera": false,
      "screen": true
    }
  ]
}

VoicePerson

ভয়েস চ্যানেলে কেউ।

ফিল্ডধরনঅর্থ
idstringঅ্যাকাউন্টের id।
handlestringছোট নাম।
namestringপ্রদর্শিত নাম।
mutedbooleanমাইক বন্ধ কি না।
deafbooleanকিছুই শুনছে না কি না (নিজের পছন্দে)।
camerabooleanক্যামেরা চালু কি না।
screenbooleanস্ক্রিন শেয়ার করছে কি না।
উদাহরণ
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "muted": true,
  "deaf": false,
  "camera": false,
  "screen": false
}

GiftDrop

পোস্টের নিচের উপহার – যারা নিয়েছে তাদের নাম কখনো নয়।

ফিল্ডধরনঅর্থ
itemstringএকটি জায়গায় কী আছে।
  • plan — প্ল্যানের মাস (সমর্থক)।
  • sparks — স্ফুলিঙ্গ।
quantityintegerপ্রতিটি জায়গায় কতটা: মাস বা স্ফুলিঙ্গ।
placesintegerমোট কতগুলো জায়গা।
leftintegerকতগুলো এখনো খালি।
audiencestringকারা নিতে পারবে।
  • all — সবাই।
  • followers — শুধু উপহারদাতার ফলোয়ার।
  • group — শুধু পোস্টের গ্রুপের সদস্য।
newAccountsboolean৭ দিনের কম পুরোনো অ্যাকাউন্টও নিতে পারবে কি না।
statusstringঅবস্থা।
  • awaiting_payment — পেমেন্টের অপেক্ষায়; পোস্ট এখনো আসেনি।
  • open — এখনো জায়গা বাকি আছে।
  • closed — শেষ: সব নেওয়া হয়েছে, টাকা ফেরত দেওয়া হয়েছে বা পোস্ট মুছে ফেলা হয়েছে।
claimedbooleanতোমার নিজের জায়গা আছে কি না (পাবলিক পথে সবসময় false)।
উদাহরণ
{
  "item": "plan",
  "quantity": 3,
  "places": 10,
  "left": 4,
  "audience": "followers",
  "newAccounts": false,
  "status": "open",
  "claimed": true
}

OwnGiftDrop

পোস্টের নিচে তোমার উপহার, পোস্ট ও পেমেন্টসহ।

GiftDrop-এর সব ফিল্ড, আর এর সঙ্গে:

ফিল্ডধরনঅর্থ
postIdstringযে পোস্টের নিচে আছে।
fundingstringকীভাবে টাকা দেওয়া হয়েছে।
  • free — বিনামূল্যে।
  • quota — কোটা থেকে।
  • payment — টাকা দেওয়া।
createdAtintegerকখন তৈরি হয়েছে।
উদাহরণ
{
  "item": "plan",
  "quantity": 3,
  "places": 10,
  "left": 4,
  "audience": "followers",
  "newAccounts": false,
  "status": "open",
  "claimed": false,
  "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "funding": "quota",
  "createdAt": 1758624000000
}

Quota

কোটায় কী আছে।

ফিল্ডধরনঅর্থ
monthsintegerএখনো দেওয়ার মতো প্ল্যানের মাস।
sparksintegerএখনো দেওয়ার মতো স্ফুলিঙ্গ।
looksQuotaLook[]মজুতে এখনো দেওয়ার মতো লুক (2.13 থেকে)।
উদাহরণ
{
  "months": 120,
  "sparks": 500,
  "looks": [
    {
      "id": "frame-gold",
      "name": "Goldring",
      "kind": "frame",
      "quantity": 25
    }
  ]
}

QuotaLook

কোনো অংশীদারের মজুতে থাকা একটি লুক, বাকি পিসসহ (2.13 থেকে)।

ফিল্ডধরনঅর্থ
idstringলুকের ID; উপহার দেওয়ার সময় এটি itemId হিসেবে পাঠাও।
namestringলুকের নাম।
kindstringলুকের ধরন।
  • frame — প্রোফাইল ফ্রেম।
  • background — কভার ইফেক্ট।
  • card — প্রোফাইল কার্ড।
quantityintegerকতগুলো পিস বাকি।
উদাহরণ
{
  "id": "frame-gold",
  "name": "Goldring",
  "kind": "frame",
  "quantity": 25
}

QuotaGift

কোটা থেকে দেওয়া একটি উপহার।

ফিল্ডধরনঅর্থ
itemstringকী দেওয়া হয়েছে।
  • plan — প্ল্যানের মাস (সমর্থক)।
  • sparks — স্ফুলিঙ্গ।
  • shop — মজুত থেকে একটি লুক (2.13 থেকে)।
quantityintegerকতটা।
itemIdstringবা nullitem যখন shop, তখন দেওয়া লুকটি; না হলে null।
recipientActorকাকে।
createdAtintegerকখন।
উদাহরণ
{
  "item": "plan",
  "quantity": 3,
  "itemId": null,
  "recipient": {
    "handle": "jon",
    "name": "Jon"
  },
  "createdAt": 1758627600000
}

MediaItem

মিডিয়া লাইব্রেরির একটি GIF বা ভিডিও (2.14 থেকে)।

ফিল্ডধরনঅর্থ
idstringID; পোস্ট করার সময় media-র জন্য।
kindstringGIF বা ভিডিও।
  • gif — একটি GIF, শব্দহীন লুপ করা MP4 হিসেবে।
  • video — MP4 হিসেবে একটি ভিডিও, শব্দসহ।
namestringনাম।
keywordsstringকীওয়ার্ড, ছোট হাতের অক্ষরে।
widthintegerপিক্সেলে প্রস্থ।
heightintegerপিক্সেলে উচ্চতা।
secondsintegerসেকেন্ডে দৈর্ঘ্য; GIF-এর জন্য 0।
urlstringMP4 ফাইল, এই ইনস্ট্যান্সের সাপেক্ষে। হেডারে কী দিয়ে এটি লোড করো।
posterstringপ্রিভিউ ছবি, এটিও কী দিয়ে।
uploaderActorকে আপলোড করেছে।
minebooleanএটি তোমার কি না।
sharedbooleanএটি tellmelo-তে সবার সাথে শেয়ার করা কি না।
anywherebooleanএটি অন্য ওয়েবসাইটেও দেখা যেতে পারে কি না।
embedEmbedবা nullঅন্য ওয়েবসাইটের জন্য ঠিকানা; যতক্ষণ সেখানে অনুমতি নেই, null।
উদাহরণ
{
  "id": "b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
  "kind": "gif",
  "name": "Happy bees",
  "keywords": "bees garden happy",
  "width": 480,
  "height": 270,
  "seconds": 0,
  "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
  "poster": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918&poster=1",
  "uploader": {
    "handle": "mara",
    "name": "Mara 🌻"
  },
  "mine": false,
  "shared": true,
  "anywhere": true,
  "embed": {
    "page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
    "file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
    "poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
    "code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
  }
}

Embed

অন্য ওয়েবসাইটের জন্য ঠিকানা। এগুলো কী ছাড়াই কাজ করে।

ফিল্ডধরনঅর্থ
pagestringএকটি <iframe>-এর জন্য প্লেয়ার।
filestringনিজের প্লেয়ারের জন্য MP4 ফাইল।
posterstringপ্রিভিউ ছবি।
codestringএম্বেড করার তৈরি কোড।
উদাহরণ
{
  "page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
  "file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
  "poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
  "code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
}

UploadStarted

শুরু হওয়া একটি আপলোড।

ফিল্ডধরনঅর্থ
uploadstringএই আপলোডের ID।
pieceintegerএকটি টুকরো সর্বোচ্চ কত বড় হতে পারে, বাইটে।
উদাহরণ
{
  "upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
  "piece": 4194304
}

UploadPiece

পৌঁছানো একটি টুকরো।

ফিল্ডধরনঅর্থ
receivedintegerকত বাইট পৌঁছেছে।
itemMediaItemবা nullশেষ টুকরোর পর নতুন GIF বা ভিডিও, নইলে null।
উদাহরণ
{
  "received": 4194304,
  "item": null
}

Created

এমন লেখার অনুরোধের উত্তর যা কিছু তৈরি করেছে।

ফিল্ডধরনঅর্থ
idstringযা তৈরি হয়েছে তার id।
scheduledForintegerবা nullকখন আসবে, যদি প্রকাশ নির্ধারিত হয়ে থাকে (নইলে null)।
deleteAtintegerবা nullকখন নিজে মুছে যাবে, যদি তা ঠিক করা থাকে (নইলে null)।
উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "scheduledFor": null,
  "deleteAt": null
}

DropCreated

উপহারসহ পোস্ট তৈরি হলে যে উত্তর আসে।

ফিল্ডধরনঅর্থ
idstringনতুন পোস্টের id।
fundingstringউপহারের টাকা কীভাবে দেওয়া হয়েছে।
  • free — বিনামূল্যে।
  • quota — কোটা থেকে।
উদাহরণ
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "funding": "quota"
}

Made

এইমাত্র যা তৈরি বা বদলানো হলো।

ফিল্ডধরনঅর্থ
idstringid; আমন্ত্রণ লিংকের ক্ষেত্রে তার কোড।
উদাহরণ
{
  "id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}

Ok

এমন লেখার অনুরোধের উত্তর যার ফেরত দেওয়ার কিছু নেই।

ফিল্ডধরনঅর্থ
okbooleanসবসময় true।
উদাহরণ
{
  "ok": true
}

যন্ত্রে পাঠযোগ্য বিবরণ

এই পাতার পেছনের সারণিটি OpenAPI হিসেবে https://api.tellmelo.com/v2/openapi.json-এ পাওয়া যায়।

https://api.tellmelo.com/v2/openapi.json

অন্য ওয়েবসাইটে GIF ও ভিডিও

কোনো সদস্য যা শেয়ার করে এবং অন্য ওয়েবসাইটেও অনুমতি দেয়, তা যেকোনো ওয়েবসাইট দেখাতে পারে: anywhere=true দিয়ে খুঁজলে এটি পাওয়া যায়, আর এর embed-এ ঠিকানাগুলো থাকে। সদস্য এটি ফিরিয়ে নিলে কয়েক মিনিটের মধ্যে সেখান থেকে সরে যায়।

টুকরো টুকরো করে আপলোড

প্রথমে শুরু করো, তারপর ফাইলটি টুকরো করে পাঠাও। বড় ফাইলকে piece বাইটের টুকরোয় ভাগ করো, প্রতিটির জায়গায় offset দিয়ে। শেষ টুকরোর পর তৈরি GIF বা ভিডিও আসে।

curl -X POST -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"kind":"gif","size":2400000,"name":"Happy bees","shared":true,"anywhere":true}' \
  "https://api.tellmelo.com/v2/media/uploads"
→ { "upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b", "piece": 4194304 }

curl -X PUT -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @bees.gif \
  "https://api.tellmelo.com/v2/media/uploads/e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b?offset=0"
→ { "received": 2400000, "item": { "id": "…", "embed": { … } } }

এম্বেড করা

প্লেয়ার GIF লুপে বা ভিডিও কন্ট্রোলসহ দেখায়, নিচে নাম আর কে শেয়ার করেছে। embed.code থেকে কোডটি পেজে বসাও:

<iframe src="https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918" width="480" height="300" title="Happy bees" style="border:0;max-width:100%" loading="lazy" allowfullscreen></iframe>

যেসব ফোরাম ও প্রোগ্রাম oEmbed চেনে, প্লেয়ারের ঠিকানা দিলে তারা নিজেরাই কোড নিয়ে নেয়:

https://tellmelo.com/api/oembed?url=https%3A%2F%2Ftellmelo.com%2Fmedia-embed%2Fb2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918

কী থাকবে তোমার সার্ভারে, কখনো কোনো ওয়েবপেজের কোডে নয়। তোমার সার্ভারের মাধ্যমে খোঁজো ও আপলোড করো; embed-এর ঠিকানাগুলোর কী লাগে না।

তোমার ওয়েবসাইটের জন্য GIF পিকার

একটি সাইট চাবি দিয়ে (ডেভেলপার অংশ → তোমার ওয়েবসাইটের জন্য GIF পিকার) তোমার ওয়েবসাইট পায় একটি তৈরি খোঁজ: পেজে দুটি লাইন, আর বোতামে একটি ক্লিকেই সেটি খোলে। চাবিটি সর্বজনীন এবং শুধু সেই ঠিকানাগুলোতেই কাজ করে, যা তুমি এর জন্য লেখো। পিকার শুধু সেটুকুই দেখায়, যা সদস্যরা অন্য ওয়েবসাইটের জন্য অনুমতি দিয়েছে।

<script src="https://tellmelo.com/picker.js" data-key="tmsk_…" defer></script>
<button type="button" data-tellmelo-picker>GIF</button>

কিছু বাছাই করলে বোতামটি আইটেমসহ tellmelo:pick পাঠায়: এমবেড করার জন্য code, file, poster, name ও author। data-target="#field" দিলে এটি code সরাসরি একটি টেক্সট ফিল্ডে বসিয়ে দেয়, data-kind="video" দিলে ভিডিও খোঁজে। ফাইলটি নিজে এমবেড করলে, যিনি এটি শেয়ার করেছেন তাঁর নাম দেখাও।

document.addEventListener('tellmelo:pick', (event) => {
  const { code, file, name, author } = event.detail;
});

tellmelo দিয়ে সাইন ইন

অন্য সাইটগুলো সদস্যদের OpenID Connect দিয়ে তাদের tellmelo অ্যাকাউন্টে সাইন ইন করতে দেয় (PKCE সহ অনুমোদন কোড)। সাইট শুধু ইউজারনেম, নিশ্চিত করা ইমেল ঠিকানা আর প্রতি সদস্যের জন্য নিজস্ব একটি পরিচয় (sub) পায়।

অ্যাপের আবেদন তুমি “ডেভেলপার অংশ → tellmelo দিয়ে সাইন ইন”-এ করো। দল প্রতিটি অ্যাপ যাচাই করে; এরপর সেখানে ক্লায়েন্ট ID দেখো, আর সার্ভারসহ অ্যাপের জন্য ক্লায়েন্ট সিক্রেট তৈরি করো, যা একবার দেখানো হয়।

একটি লাইব্রেরির যা দরকার, সবই ডিসকভারি ডকুমেন্টে আছে:

https://tellmelo.com/.well-known/openid-configuration
  1. সদস্যকে /oauth/authorize-এ পাঠাও, সঙ্গে response_type=code, client_id, redirect_uri (ঠিক যেমন নিবন্ধিত), scope=openid profile email, state, nonce আর code_challenge_method=S256 সহ code_challenge।
  2. এক মিনিটের মধ্যে /oauth/token-এ কোডটি বদলাও: grant_type=authorization_code, code, redirect_uri আর code_verifier; সার্ভারসহ অ্যাপ সঙ্গে সিক্রেটও পাঠায়, Basic প্রমাণীকরণে বা ফর্মে।
  3. ID টোকেনে (RS256, কী /oauth/jwks-এ) থাকে sub, profile সহ preferred_username-ও, email সহ email আর email_verified-ও। অ্যাক্সেস টোকেন ১০ মিনিট বৈধ এবং শুধু /oauth/userinfo পড়ে।
https://tellmelo.com/oauth/authorize?response_type=code&client_id=tm_…
  &redirect_uri=https%3A%2F%2Fexample.com%2Fcallback&scope=openid%20profile%20email
  &state=…&nonce=…&code_challenge=…&code_challenge_method=S256

curl -u "tm_…:tms_…" https://tellmelo.com/oauth/token \
  -d grant_type=authorization_code -d code=… \
  -d redirect_uri=https://example.com/callback -d code_verifier=…
{
  "iss": "https://example.social",
  "sub": "Xq3vR0b8yJm1cW4tZ2kPn6sLd9fHa7gE5uTo0iBeVxY",
  "aud": "tm_5f2c9e1a7b3d4c6e8f0a1b2c",
  "iat": 1760432400,
  "exp": 1760433000,
  "nonce": "n-0S6_WzA2Mj",
  "at_hash": "HK6E_P6Dh8Y93mRNtsDB1Q",
  "preferred_username": "anna",
  "email": "anna@example.com",
  "email_verified": true
}

রিফ্রেশ টোকেন নেই: tellmelo সাইন ইন করায়, স্থায়ী অ্যাক্সেস দেয় না। কোনো সদস্য সাইট সরালে বা দল অ্যাপ স্থগিত করলে /oauth/userinfo সঙ্গে সঙ্গে 401 দেয়। prompt=none পাতা ছাড়া যাচাই করে, prompt=consent আবার জিজ্ঞেস করে।

আমরা যা আশা করি

সব জায়গার মতো একই নিয়ম: হয়রানি নয়, স্প্যাম নয়, এমন বিষয়বস্তু নয় যার অধিকার তোমার নেই। তোমার চাবি যা পোস্ট করে তার দায় তোমার।

অন্যদের GIF ও ভিডিও তোমার ওয়েবসাইটে কেবল তখনই দেখাও, যখন সেগুলোর embed আছে, এই ঠিকানাগুলোর মাধ্যমে এবং যে শেয়ার করেছে তার নামসহ। কিছু আর পাওয়া না গেলে সেটি দেখানো বন্ধ করো। ফাইলগুলো নিজের কোনো সংগ্রহে কপি করো না।

প্রকাশকের তথ্যগোপনীয়তাব্যবহারের শর্তাবলিঅবস্থাঅ্যাপ