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).

نمای کلی

نسخهٔ ۲ به برنامه‌های خودتان اجازه می‌دهد با tellmelo حرف بزنند: یک کلید در هر درخواست، پاسخ JSON، و همهٔ فهرست‌ها یکسان صفحه‌بندی می‌شوند. همان قوانین برنامه برقرار است.

  • هر مسیر با https://api.tellmelo.com/v2 آغاز می‌شود.
  • درخواست‌ها و پاسخ‌ها JSON با UTF-8 هستند. نام فیلدها، کدها و مقدارها انگلیسی‌اند و انگلیسی می‌مانند.
  • کلید به‌جای حساب شما عمل می‌کند: آنچه در برنامه نمی‌توانید ببینید، آن هم نمی‌تواند بخواند.
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 به /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 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. هر پاسخ application/json با UTF-8 است، از جمله خطاها. فقط تصویرها به‌صورت تصویر می‌آیند.
  • آنچه می‌فرستید. یک POST فیلدهایش را به‌صورت JSON در بدنه می‌برد. اگر فیلدی در نشانی هم باشد، بدنه برنده است.
  • زمان‌ها میلی‌ثانیه از ۱ ژانویهٔ ۱۹۷۰ به وقت UTC هستند.
  • شناسه‌ها رشته‌اند. فقط به‌صورت کامل مقایسه‌شان کنید.
  • هر فیلد همیشه هست. آنچه کم است null است؛ فهرست‌ها ممکن است خالی باشند.
  • متن‌ها ساده‌اند، دقیقاً همان‌طور که نوشته شده‌اند. #tags، @names و پیوندها همان‌طور می‌مانند، و ایموجی‌های اختصاصی سرور هم به‌صورت :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، ۲۰ ورودی، حداکثر ۵۰. بعضی فهرست‌ها صفحه‌بندی نمی‌شوند؛ nextِ آن‌ها همیشه null است.

فقط چیزهای تازه

هر پاسخ یک ETag دارد. دفعهٔ بعد آن را به‌عنوان If-None-Match پس بفرستید: اگر چیزی تغییر نکرده باشد، 304 بدون بدنه می‌گیرید.

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

استثناها: /feed هیچ ETagای ندارد چون ترتیبش مدام تغییر می‌کند، و نوشتن‌ها هرگز 304 پاسخ نمی‌دهند.

سقف‌ها

هر کلید می‌تواند ۱۲۰ درخواست در دقیقه بدهد، با اشتراک «سازمان» ۶۰۰، مگر اینکه مدیریت چیز دیگری تعیین کند. بیش از آن 429 می‌گیرید و چیزی انجام نشده است. یک دقیقه صبر کنید و درخواست را دوباره بفرستید.

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

نوشتن‌ها از سقف‌های برنامه هم کم می‌کنند، مثلاً چند پست در چند دقیقه. آن هم با 429 و rate_limited پاسخ می‌دهد.

سرآیندها

جز کلید، هیچ سرآیندی لازم نیست.

آنچه می‌فرستید

سرآیندمعنا
Authorizationکلید را می‌برد: Bearer tm_key_…. راه معمول.
X-Tellmelo-Keyکلید، به‌جای Authorization.
Content-Typeapplication/json، برای درخواستی با بدنه.
If-None-MatchETag آخرین پاسخ. اگر از آن زمان چیزی تغییر نکرده باشد، پاسخ 304 بدون بدنه است.

آنچه برمی‌گردد

سرآیندمعنا
ETagاثر انگشت این پاسخ (W/). آن را به‌عنوان If-None-Match پس بفرستید.
X-RateLimit-Limitاین کلید در هر دقیقه چند درخواست می‌تواند بدهد.
X-RateLimit-Remainingچند تا از آن‌ها در دقیقهٔ جاری مانده است.
X-RateLimit-Resetدقیقهٔ بعد کی شروع می‌شود، بر حسب ثانیه از ۱۹۷۰ به وقت UTC.
X-Tellmelo-Scopeاین کلید چه می‌تواند بکند: read یا read write.
Retry-Afterهمراه 429: چند ثانیه پیش از پرسیدن دوباره صبر کنید.
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 }

بعضی خطاها یک فیلد بیشتر دارند: docs همراه 401 برای کلید غایب، limit همراه 429.

وضعیتکدمعنا
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/v2readنسخهٔ API و نام این سرور.
پست‌ها
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/mediareadGIF یا ویدیوهای اشتراکی، پراستفاده‌ترین‌ها اول.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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 می‌گیرید.

تصاویر، یک GIF یا یک ویدیو را با media پیوست کنید. GIF یا ویدیو به‌تنهایی می‌آید. می‌توانید GIF و ویدیوهای اشتراکی دیگران را در tellmelo استفاده کنید.

پست برای دوستان نزدیک یا با هم‌نویسنده فوراً منتشر می‌شود، نه در گروه و نه زمان‌بندی‌شده. هر دو با هم ممکن نیست.

پارامترها

نامنوعمعنا
textدر بدنهstringاختیاریمتن پست، پاسخ یا پیام.
communityدر بدنهstringاختیاریid گروهی که پست به کانال فید آن می‌رود؛ باید روشن باشد و مجوزش را داشته باشی. بدون آن پست بیرون از هر گروهی است.
quotesدر بدنهstringاختیاریid پستی که این پست نقل می‌کند.
pollدر بدنهstring[]اختیاریگزینه‌های پاسخ به‌صورت فهرستی از متن‌ها.
mediaدر بدنهstring[]اختیاریشناسهٔ تصاویری که در اپ بارگذاری شده‌اند، یا یک GIF یا ویدیو از کتابخانهٔ رسانه (از 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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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

در حالت آهسته، هر نفر هر ۱۰ دقیقه یک پاسخ، وگرنه 429. نویسنده و حساب‌هایی که دنبال می‌کند مستثنا هستند.

با media حداکثر یک تصویر، GIF یا ویدیو.

پارامترها

نامنوعمعنا
idدر مسیرstringاجباریid یک پست.
textدر بدنهstringاجباریمتن پست، پاسخ یا پیام.
parentIdدر بدنهstringاختیاریid پاسخی که این پاسخ به آن است. بدون آن، مستقیم به پست.
mediaدر بدنهstring[]اختیاریشناسهٔ تصاویری که در اپ بارگذاری شده‌اند، یا یک GIF یا ویدیو از کتابخانهٔ رسانه (از 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اجباریشناسهٔ پاسخ.
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اجباریشناسهٔ پاسخ.

درخواست نمونه

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اجباریشناسهٔ پاسخ.
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اجباریشناسهٔ پاسخ.
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اجباریشناسهٔ پاسخ.
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اجباریشناسهٔ پاسخ.
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اجباریکدام گزینه، شمرده از ۰. برای چندگزینه‌ای، برای هر گزینه یک بار فراخوانی کنید.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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[]اختیاریشناسهٔ تصاویری که در اپ بارگذاری شده‌اند، یا یک GIF یا ویدیو از کتابخانهٔ رسانه (از 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اجباریid از POST /me/emojis/pictures.

درخواست نمونه

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 بارگذاری کرده‌اید.
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 بارگذاری کرده‌اید.
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 بارگذاری کرده‌اید.
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 بارگذاری کرده‌اید.
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

فقط با توکن یک ربات، به اندازه‌ای که نقش ربات در کانال اجازه می‌دهد. برنامه با یک SDK از LiveKit وصل می‌شود و صدایش را به‌عنوان میکروفون می‌فرستد؛ هر کس بلندی صدای آن را خودش تنظیم می‌کند.

پارامترها

نامنوعمعنا
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

حداکثر ۱۰ برچسب روز بر اساس امتیاز: هر استفاده ۱ حساب می‌شود و هر ۳ روز نصف می‌شود، هر حساب در روز حداکثر ۳ حساب می‌شود. posts امتیاز گردشده است. limit فقط فهرست را کوتاه می‌کند. برچسب‌هایی که تیم برجسته می‌کند ممکن است بالاتر بایستند.

پارامترها

نامنوعمعنا
limitدر پرس‌وجوintegerاختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.

درخواست نمونه

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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.

درخواست نمونه

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

بدون حساب‌هایی که مسدودشان کرده‌اید یا شما را مسدود کرده‌اند. url و poster را با کلید در هدر بارگیری کنید، برای پست‌ها در tellmelo.

برای وب‌سایت‌های دیگر فقط مواردی که embed دارند: نشانی‌های آن بدون کلید و در هر مرورگری کار می‌کنند.

پارامترها

نامنوعمعنا
kindدر پرس‌وجوstringاختیاریgif یا video؛ بدون تعیین، gif.gifvideo
qدر پرس‌وجوstringاختیاریواژه‌هایی که در نام یا کلیدواژه‌ها آمده‌اند.
anywhereدر پرس‌وجوbooleanاختیاریtrue: فقط مواردی که در وب‌سایت‌های دیگر هم اجازهٔ نمایش دارند.
limitدر پرس‌وجوintegerاختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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 یا ویدیو.

درخواست نمونه

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} بفرستید. بدون تکهٔ جدید، بارگذاری پس از ۱۵ دقیقه پایان می‌یابد.

محدودیت‌های اپ اعمال می‌شوند: GIF تا ۱۵ مگابایت، ویدیو بر اساس اشتراک در اندازه و طول، تعداد GIF در روز، GIFهای خصوصی، امتیاز ویدیو در هفته. وگرنه 409، 413 یا 429 برمی‌گردد.

پارامترها

نامنوعمعنا
kindدر بدنهstringاجباریgif یا video؛ بدون تعیین، gif.gifvideo
sizeدر بدنهintegerاجباریاندازهٔ کل فایل به بایت.
nameدر بدنهstringاجبارینامی که با آن پیدا می‌شود: ۲ تا ۴۰ نویسه.
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. اگر در ادامه نباشد، 409 همراه با received برمی‌گردد: از همان‌جا ادامه دهید. پس از آخرین تکه، فایل تبدیل می‌شود؛ آن‌وقت پاسخ 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 یا ویدیو.
nameدر بدنهstringاختیارینامی که با آن پیدا می‌شود: ۲ تا ۴۰ نویسه.
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 یا ویدیو.

درخواست نمونه

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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اجباریid از POST /me/emojis/pictures.

درخواست نمونه

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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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 پیامی پیشین در همین گفت‌وگو که این پیام به آن پاسخ می‌دهد. از نسخهٔ ۲٫۲.

درخواست نمونه

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اجباریشناسهٔ پیام.

درخواست نمونه

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

target برای like، save و repost یک پست است، برای join یک گروه، برای follow، block و mute یک حساب. active: false رابطه را برمی‌دارد.

پارامترها

نامنوعمعنا
kindدر بدنهstringاجباریکدام رابطه: like، save، repost، follow، join، block یا mute (از ۲٫۲).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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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 برای یک ظاهر از ذخیرهٔ شما (از ۲٫۱۳).plansparksshop
quantityدر بدنهintegerاختیاریچقدر: تا ۱۲ ماه یا ۳۵ جرقه برای هر هدیه.
itemIdدر بدنهstringاختیاریبرای shop: شناسهٔ ظاهر، همان‌طور که 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اختیاریشمار ورودی در هر صفحه: پیش‌فرض ۲۰، حداکثر ۵۰.
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.
versionstringنسخهٔ API، مثلاً 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شناسهٔ پست.
textstringیا nullمتن، همان‌طور که نوشته شده (null برای پستی که فقط نظرسنجی یا فقط تصویر است).
kindstringپست چیست.
  • post — پستی با متن، تصویر یا نقل‌قول.
  • poll — پستی با نظرسنجی.
authorProfileBriefچه کسی آن را نوشت.
communityCommunityBriefیا nullگروهی که در آن نوشته شد (null بیرون از همهٔ گروه‌ها).
mediaMedia[]تصویرهایش، به ترتیب؛ اگر نباشند خالی.
pollPollیا nullنظرسنجی (null اگر نباشد).
quotesstringیا nullشناسهٔ پستی که این پست نقل می‌کند.
continuesstringیا nullشناسهٔ پستی که این پست، به‌عنوان افزوده، ادامه‌اش می‌دهد.
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

یکی از پاسخ‌های شما که برای بعد زمان‌بندی شده است.

فیلدنوعمعنا
idstringid پاسخ زمان‌بندی‌شده.
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). ویدیوها و گیف‌ها فایل MP4 هستند.
  • image — یک تصویر (WebP یا JPEG).
  • video — یک ویدیو به‌صورت MP4، با صدا.
  • gif — یک گیف، به‌صورت MP4 بی‌صدا و تکرارشونده.
posterstringیا nullبرای ویدیو و گیف نشانی تصویر پیش‌نمایش، وگرنه null (از 2.10).
aistringیا nullاینکه تصویر با هوش مصنوعی ساخته شده یا نه، طبق گفتهٔ بارگذارنده یا علامت تیم پس از گزارش؛ بدون برچسب null (از 2.11).
  • with — ساخته‌شده با هوش مصنوعی.
  • without — ساخته‌شده بدون هوش مصنوعی.
مثال
{
  "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
  "kind": "image",
  "poster": null,
  "ai": "without"
}

Poll

نظرسنجی یک پست.

فیلدنوعمعنا
optionsPollOption[]گزینه‌ها، به ترتیب. option در رأی از ۰ شمرده می‌شود.
totalintegerهمهٔ رأی‌ها با هم، همیشه هست.
multiplebooleanاینکه بیش از یک گزینه را می‌توان انتخاب کرد یا نه.
endsAtintegerیا nullنظرسنجی کی تمام می‌شود (null اگر بی‌پایان باشد).
runningbooleanاینکه هنوز می‌توان رأی داد یا نه.
resultsVisiblebooleanاینکه رأی‌های هر گزینه نشان داده می‌شوند یا نه (نگاه کنید به votes).
myVotesinteger[]گزینه‌هایی که انتخاب کردید، شمرده از ۰.
مثال
{
  "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شناسهٔ حساب: آنچه /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). از نسخهٔ ۲٫۳.
websiteVerifiedbooleanاینکه آیا وب‌سایت با rel=me به این پروفایل پیوند برمی‌گرداند؛ هر هفته بررسی می‌شود. از نسخهٔ ۲٫۳.
followersintegerچند حساب آن را دنبال می‌کنند.
createdAtintegerیا nullحساب کی ساخته شد (null، تا وقتی عضو تاریخ پیوستن را پنهان کند؛ از ۲٫۹).
مثال
{
  "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شناسهٔ گروه.
namestringیا nullنامش.
مثال
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening"
}

Community

گروهی از این سرور.

فیلدنوعمعنا
idstringشناسهٔ گروه.
namestringنامش.
handlestringیا nullنام کوتاه برای نام بردن از گروه با @#. از 2.15.
descriptionstringیا nullتوضیحات (null اگر نباشد).
tagsstring[]موضوع‌هایی که دربارهٔ آن‌هاست.
membersintegerچند عضو دارد.
joinPolicystringچطور می‌توان وارد شد.
  • open — هر کسی می‌تواند بپیوندد.
  • application — پیوستن به درخواستی نیاز دارد که گروه بپذیرد.
  • invite — فقط با دعوت.
visibilitystringچه کسی آن را می‌بیند. internal و hidden فقط اعضایش (از 2.15).
  • open — برای همه قابل مشاهده.
  • internal — در فهرست نیست، اما با نشانی‌اش پیدا می‌شود.
  • hidden — فقط برای اعضایش.
feedChannelbooleanآیا کانال فیدش روشن است. از 2.15.
sparksintegerگروه هم‌اکنون چند جرقه دارد (از ۲.۱۹).
perksstring[]مزیت‌هایی که جرقه‌هایش هزینه‌شان را می‌دهند (از ۲.۱۹).
membershipMembershipیا nullحسابتان در گروه چه جایگاهی دارد و چه می‌تواند؛ اگر عضو نباشد null. از 2.15.
مثال
{
  "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

یک عضو، کوتاه.

فیلدنوعمعنا
idstringid حساب.
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یا nullid پیامی که به آن پاسخ می‌دهد؛ اگر نباشد 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

آنچه یک نقش در کانال متفاوت از گروه می‌تواند.

فیلدنوعمعنا
rolestringid نقش.
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

پیوستن با پیوند دعوت.

فیلدنوعمعنا
communitystringid گروه.
مثال
{
  "community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}

LogEntry

یک ردیف در گزارش رهبری.

فیلدنوعمعنا
idstringid.
actionstringچه اتفاقی افتاد.
  • post_removed — یک پست.
  • member_removed — عضوی که پیش از 2.16 برداشته شد (۹۰ روز بیرون).
  • 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شناسهٔ اعلان.
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شناسهٔ حساب طرف مقابل: آنچه /conversations/{with}/messages انتظار دارد.
handlestringنام کوتاه او.
namestringنام نمایشی او.
excerptstringیا nullآغاز آخرین پیام (null اگر متن نداشته باشد).
truncatedbooleanاینکه گزیده کوتاه شده است یا نه.
fromMebooleanاینکه آخرین پیام مال شماست یا نه.
lastMessageIdstringشناسهٔ آخرین پیام.
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شناسهٔ پیام.
textstringیا nullمتن (null برای پیامی که فقط تصویر است).
fromstringشناسهٔ حسابی که آن را نوشت.
tostringشناسهٔ حسابی که برایش نوشته شد.
readbooleanاینکه گیرنده آن را خوانده است یا نه.
mediaMedia[]تصویرهایش؛ اگر نباشند خالی.
replyTostringیا nullid پیامی که این پیام به آن پاسخ می‌دهد (اگر به هیچ پیامی پاسخ ندهد null). از نسخهٔ ۲٫۲.
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

یکی از پیام‌های شما که برای بعد زمان‌بندی شده است.

فیلدنوعمعنا
idstringid پیام زمان‌بندی‌شده.
tostringid حساب گیرنده.
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شناسهٔ پست.
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

مجموعه‌ای از پست‌های ذخیره‌شده.

فیلدنوعمعنا
idstringid مجموعه.
namestringنام آن.
countintegerشمار پست‌های آن.
مثال
{
  "id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
  "name": "Recipes",
  "count": 12
}

Event

رویداد پیش‌روی یک نمایه.

فیلدنوعمعنا
idstringid رویداد.
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

کسی که برای یکی از رویدادهای شما ثبت‌نام کرده است.

فیلدنوعمعنا
idstringid حساب.
handlestringنام کاربری.
namestringنام نمایشی.
atintegerزمان ثبت‌نام.
مثال
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "at": 1758624000000
}

Picture

یک تصویر بارگذاری‌شده.

فیلدنوعمعنا
idstringid تصویر.
urlstringکجا می‌توان آن را دید.
مثال
{
  "id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
  "url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}

EmojiPicture

تصویر بارگذاری‌شدهٔ یک شکلک.

فیلدنوعمعنا
idstringid تصویر.
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

یکی از وب‌هوک‌های شما.

فیلدنوعمعنا
idstringid وب‌هوک.
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

یک وب‌هوک تازه با راز آن.

فیلدنوعمعنا
idstringid وب‌هوک.
secretstringراز امضاها، فقط همین یک بار.
مثال
{
  "id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
  "secret": "whsec_3f9a…"
}

GroupBot

ربات یک گروه.

فیلدنوعمعنا
idstringid حساب ربات.
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

یک کانال صوتی با افراد درون آن.

فیلدنوعمعنا
channelstringid کانال.
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

کسی در یک کانال صوتی.

فیلدنوعمعنا
idstringid حساب.
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[]ظاهرهای ذخیره که هنوز می‌شود هدیه داد (از ۲٫۱۳).
مثال
{
  "months": 120,
  "sparks": 500,
  "looks": [
    {
      "id": "frame-gold",
      "name": "Goldring",
      "kind": "frame",
      "quantity": 25
    }
  ]
}

QuotaLook

یک ظاهر در ذخیرهٔ یک شریک، با تعداد باقی‌مانده (از ۲٫۱۳).

فیلدنوعمعنا
idstringشناسهٔ ظاهر؛ هنگام هدیه دادن، آن را به‌عنوان itemId بفرستید.
namestringنام ظاهر.
kindstringنوع ظاهر.
  • frame — قاب پروفایل.
  • background — افکت جلد.
  • card — کارت پروفایل.
quantityintegerچند عدد باقی مانده است.
مثال
{
  "id": "frame-gold",
  "name": "Goldring",
  "kind": "frame",
  "quantity": 25
}

QuotaGift

هدیه‌ای از سهمیه.

فیلدنوعمعنا
itemstringچه چیزی هدیه داده شد.
  • plan — ماه‌های اشتراک (حامی).
  • sparks — جرقه.
  • shop — یک ظاهر از ذخیره (از ۲٫۱۳).
quantityintegerچقدر.
itemIdstringیا nullظاهری که هدیه داده شد، وقتی item برابر shop باشد؛ وگرنه null.
recipientActorبه چه کسی.
createdAtintegerچه زمانی.
مثال
{
  "item": "plan",
  "quantity": 3,
  "itemId": null,
  "recipient": {
    "handle": "jon",
    "name": "Jon"
  },
  "createdAt": 1758627600000
}

MediaItem

یک GIF یا ویدیو از کتابخانهٔ رسانه (از 2.14).

فیلدنوعمعنا
idstringشناسه؛ برای media هنگام پست کردن.
kindstringGIF یا ویدیو.
  • gif — یک GIF، به‌صورت MP4 بی‌صدا و تکرارشونده.
  • video — یک ویدیو به‌صورت MP4، با صدا.
namestringنام.
keywordsstringکلیدواژه‌ها، با حروف کوچک.
widthintegerعرض به پیکسل.
heightintegerارتفاع به پیکسل.
secondsintegerطول به ثانیه؛ برای GIFها 0.
urlstringفایل MP4، نسبت به این نمونه. آن را با کلید در هدر بارگیری کنید.
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شناسهٔ این بارگذاری.
pieceintegerحداکثر اندازهٔ یک تکه، به بایت.
مثال
{
  "upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
  "piece": 4194304
}

UploadPiece

یک تکهٔ رسیده.

فیلدنوعمعنا
receivedintegerچند بایت رسیده است.
itemMediaItemیا nullپس از آخرین تکه، GIF یا ویدیوی جدید؛ وگرنه null.
مثال
{
  "received": 4194304,
  "item": null
}

Created

پاسخ نوشتنی که چیزی ساخت.

فیلدنوعمعنا
idstringشناسهٔ آنچه ساخته شد.
scheduledForintegerیا nullکی منتشر می‌شود، اگر انتشار زمان‌بندی شده باشد (وگرنه null).
deleteAtintegerیا nullکی خودش را حذف می‌کند، اگر تنظیم شده باشد (وگرنه null).
مثال
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "scheduledFor": null,
  "deleteAt": null
}

DropCreated

پاسخ هنگام ساخته شدن پستی با هدیه.

فیلدنوعمعنا
idstringشناسهٔ پست تازه.
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» می‌دهید. تیم هر برنامه را بررسی می‌کند؛ سپس شناسهٔ کلاینت را آنجا می‌بینید و برای برنامه‌های دارای سرور، رمز کلاینت را می‌سازید که یک بار نشان داده می‌شود.

هر آنچه یک کتابخانه لازم دارد در سند کشف آمده است:

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 با code_challenge_method=S256.
  2. کد را ظرف یک دقیقه در /oauth/token عوض کنید: grant_type=authorization_code، code، redirect_uri و code_verifier؛ برنامه‌های دارای سرور رمز را هم با احراز هویت Basic یا در فرم می‌فرستند.
  3. توکن شناسه (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 دارند، از طریق همین نشانی‌ها و با نام کسی که آن را به اشتراک گذاشته. اگر چیزی دیگر در دسترس نیست، دیگر نشانش ندهید. فایل‌ها را در مجموعهٔ خودتان کپی نکنید.

شناسنامهٔ ناشرحریم خصوصیشرایط استفادهوضعیتبرنامه‌ها