فهرست مطالب نمای کلی نسخهٔ ۲ به برنامههای خودتان اجازه میدهد با tellmelo حرف بزنند: یک کلید در هر درخواست، پاسخ JSON، و همهٔ فهرستها یکسان صفحهبندی میشوند. همان قوانین برنامه برقرار است.
همهٔ مسیرها با /api/v2 در نشانی این سرور شروع میشوند. درخواستها و پاسخها JSON با UTF-8 هستند. نام فیلدها، کدها و مقدارها انگلیسیاند و انگلیسی میمانند. کلید بهجای حساب شما عمل میکند: آنچه در برنامه نمیتوانید ببینید، آن هم نمیتواند بخواند. https://tellmelo.com/api/v2شروع سریع در «تنظیمات ← برنامه و دادهها ← API» کلیدی بسازید و کپیاش کنید. فقط یک بار نشان داده میشود. با آن ریشه را فراخوانی کنید. پاسخ، نسخه، اختیارات کلید و درخواستهای باقیماندهٔ این دقیقه را نشان میدهد. همهٔ مسیرها یکسان کار میکنند: کلید در سرآیند، پاسخ JSON، و برای فهرستها items و next. curl -H "Authorization: Bearer tm_key_…" https://tellmelo.com/api/v2{
"name": "tellmelo",
"version": "2.9",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/legal/api",
"spec": "/api/v2/openapi.json"
}بعدی: /me برای پروفایلتان، /posts برای پستهای عمومی، /feed برای فیدتان.
امتحانش کنید کاری انتخاب کنید، فیلدها را پر کنید و درخواست را کپی کنید یا از همینجا بفرستید. نوشتن ابتدا میپرسد. کد کلید را از TELLMELO_KEY میخواند.
کار GET / GET /posts GET /posts/{id} POST /posts DELETE /posts/{id} GET /posts/{id}/replies POST /posts/{id}/replies POST /posts/{id}/vote GET /profiles/{handle} GET /profiles/{handle}/posts GET /communities GET /communities/{id} GET /communities/{id}/posts GET /tags GET /search GET /emojis GET /me GET /feed GET /notifications POST /notifications/read GET /conversations GET /conversations/{with}/messages POST /conversations/{with}/messages POST /conversations/{with}/read POST /relations read نسخهٔ API و نام این سرور.
curl \
-H "Authorization: Bearer $TELLMELO_KEY" \
"https://tellmelo.com/api/v2"کلید شما یک کلید برای هر حساب. با tm_key_ شروع میشود و فقط یک بار نشان داده میشود. گمش کردید؟ کلید تازهای بسازید؛ قبلی از کار میافتد.
آن را در «تنظیمات ← برنامه و دادهها ← API» میسازید. در سرآیند درخواست فرستاده میشود:
curl -H "Authorization: Bearer tm_key_…" \
https://tellmelo.com/api/v2/postsیا اگر راحتتر است، در یک سرآیند جداگانه:
curl -H "X-Tellmelo-Key: tm_key_…" https://tellmelo.com/api/v2نه در نشانی: آنجا در گزارشها و تاریخچهٔ مرورگر میماند.
همان کلید تصویرها را هم بارگیری میکند: هر url به /api/media اشاره میکند؛ آنجا هم کلید را در سرآیند بفرستید.
curl -H "Authorization: Bearer tm_key_…" \
-o picture.webp "https://tellmelo.com/api/media?id=…"یک کلید چه کاری میتواند بکند هر کلید یکی از دو اختیار را دارد، و هر مسیر در زیر میگوید به کدام نیاز دارد:
read : خواندن. پستها، پروفایلها، گروهها و برچسبهای عمومی، بهعلاوهٔ فید، اعلانها و پیامهای شما.write : انجام دادن. انتشار، پاسخ، رأی، ارسال پیام، دنبال کردن، پیوستن، مسدود کردن، علامت زدن اعلانها بهعنوان خواندهشده.آنچه هیچ کلیدی نمیتواند هیچ کلیدی به رمز عبور، نشانی ایمیل، نوع حساب، مکان، نقش، حذف، نشستها، دستگاههای اعلان یا کلیدهای دیگر نمیرسد، و نه به مدیریت یا ادارهٔ گروه. آنچه رمز عبور از آن محافظت میکند، هیچ کلیدی نمیتواند.
صفحهها هر فهرست limit و cursor میگیرد و با items و next پاسخ میدهد. next را بهعنوان cursor پس بفرستید تا صفحهٔ بعد را بگیرید؛ وقتی next خالی است، تمام است. نشانگر مبهم است: آن را تجزیه نکنید، خودتان نسازید.
{ "items": [ … ], "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx" }
curl -H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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 پاسخ میدهد.
وقتی چیزی کار نمیکند خطاها بهصورت 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حساب شما اجازهٔ این کار را ندارد، مثلاً بهخاطر اختیار پسگرفتهشده یا مسدودی. 404unknown_pathچنین مسیری نیست، یا با این روش نیست. 404not_foundپیدا نشد، یا اجازهٔ دیدنش را ندارید. 409conflictبا چیزی که از قبل هست برخورد دارد، مثلاً نامی که گرفته شده. 413too_largeبرای این سرور خیلی بزرگ است. 422unprocessableخواندنی است، اما به این شکل ممکن نیست. 429rate_limitedدرخواستها زیادند. اتفاقی نیفتاد؛ صبر کنید و دوباره تلاش کنید. 500internal_errorدر سرور مشکلی پیش آمد.
نسخهها نسخه در مسیر آمده است. تا وقتی v2 نوشته شده، مسیرها و فیلدها همان میمانند؛ فقط چیزهای تازه اضافه میشوند.
افزودهها عدد دوم را بالا میبرند. هر مسیر میگوید از کی وجود دارد.
/api/v1/ دیگر نیست: مسیرهای قدیمی 410 پاسخ میدهند و راه تازه را در بدنه نام میبرند.
نقطههای پایانی همهٔ مسیرها در یک نگاه، سپس هر کدام با مثال.
راه ورود اولین درخواست هر برنامه: کلید کار میکند، و چه میتواند بکند؟
GET /api/v2نسخهٔ API و نام این سرور.
اختیار read با ETag از v2.0 بدون اسلش در پایان: /api/v2/ با 308 به /api/v2 میرود، و همهٔ برنامهها دنبالش نمیروند.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2"پاسخ با یک Service پاسخ میدهد.
مثال {
"name": "tellmelo",
"version": "2.9",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/legal/api",
"spec": "/api/v2/openapi.json"
}وضعیتهای ممکن: 200304401429
پستها خواندن پستهای عمومی، انتشار پستهای خودتان و حذف دوبارهشان.
GET /api/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://tellmelo.com/api/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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}وضعیتهای ممکن: 200304401429
GET /api/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://tellmelo.com/api/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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"createdAt": 1758624000000
}وضعیتهای ممکن: 200304400401404429
POST /api/v2/postsانتشار یک پست.
پست به متن یا نظرسنجی نیاز دارد. طول، گزینههای نظرسنجی و آهنگ را سرور تعیین میکند؛ فراتر از آن 400 یا 429 میگیرید.
هنوز نمیتوان از طریق API تصویر پیوست کرد، فقط در برنامه.
پارامترها نام نوع معنا textدر بدنه stringاختیاری متن پست، پاسخ یا پیام. communityدر بدنه stringاختیاری id گروهی که پست به آن میرود. بدون آن، بیرون از همهٔ گروهها.quotesدر بدنه stringاختیاری id پستی که این پست نقل میکند.pollدر بدنه 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://tellmelo.com/api/v2/posts"پاسخ با یک Created پاسخ میدهد.
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}وضعیتهای ممکن: 200400401403429
DELETE /api/v2/posts/{id}حذف یکی از پستهای خودتان.
پارامترها نام نوع معنا idدر مسیر stringاجباری id یک پست.
درخواست نمونه curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"پاسخ با یک Ok پاسخ میدهد.
مثال {
"ok": true
}وضعیتهای ممکن: 200400401403404429
پاسخها پاسخهای زیر یک پست، بهصورت فهرست با parentId.
GET /api/v2/posts/{id}/repliesپاسخهای یک پست، بدون حسابهای مسدود.
اختیار read صفحهبندیپذیر با ETag از v2.0 فهرست تخت و به ترتیب نوشتن است؛ parentId آن را به درخت تبدیل میکند. هر صفحه همیشه رشتههای کامل دارد. پاسخهای حسابهای مسدود حذف میشوند.
پارامترها نام نوع معنا idدر مسیر stringاجباری id یک پست.limitدر پرسوجو integerاختیاری شمار ورودی در هر صفحه: پیشفرض ۲۰، حداکثر ۵۰. cursorدر پرسوجو stringاختیاری مقدار next پاسخ قبلی. بدون آن، از آغاز.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}وضعیتهای ممکن: 200304400401404429
POST /api/v2/posts/{id}/repliesپاسخ به یک پست.
در حالت آهسته، هر نفر هر ۱۰ دقیقه یک پاسخ، وگرنه 429. نویسنده و حسابهایی که دنبال میکند مستثنا هستند.
پارامترها نام نوع معنا idدر مسیر stringاجباری id یک پست.textدر بدنه stringاجباری متن پست، پاسخ یا پیام. parentIdدر بدنه stringاختیاری id پاسخی که این پاسخ به آن است. بدون آن، مستقیم به پست.
درخواست نمونه curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Same here, the lavender is full of them."}' \
"https://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies"پاسخ با یک Created پاسخ میدهد.
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}وضعیتهای ممکن: 200400401403404429
نظرسنجیها نظرسنجی پستی است که poll آن تنظیم شده است. رأی دادن مسیر خودش را دارد.
POST /api/v2/posts/{id}/voteشرکت در نظرسنجی.
رأیهای هر گزینه تا وقتی رأی ندهید یا نظرسنجی تمام نشود 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://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/vote"پاسخ با یک Ok پاسخ میدهد.
مثال {
"ok": true
}وضعیتهای ممکن: 200400401403404429
پروفایلها پروفایلهای عمومی با نام کوتاهشان، و آنچه منتشر کردهاند.
GET /api/v2/profiles/{handle}یک پروفایل، با نام کوتاهش.
اختیار read با ETag از v2.0 پارامترها نام نوع معنا handleدر مسیر stringاجباری نام کوتاه یک پروفایل.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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 /api/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://tellmelo.com/api/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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}وضعیتهای ممکن: 200304400401404429
گروهها گروههای باز و پستهایشان.
GET /api/v2/communitiesگروههای باز این سرور.
اختیار read با ETag از v2.0 بر اساس شمار اعضا مرتب شده و صفحهبندی نمیشود؛ next همیشه null است.
پارامترها نام نوع معنا limitدر پرسوجو integerاختیاری شمار ورودی در هر صفحه: پیشفرض ۲۰، حداکثر ۵۰.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2/communities?limit=20"پاسخ با یک صفحه از Community پاسخ میدهد، بهصورت `items` و `next`.
مثال {
"items": [
{
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"description": "Balconies, allotments, rooftops: whatever grows.",
"tags": [
"garden",
"bees"
],
"members": 312,
"joinPolicy": "open",
"visibility": "open"
}
],
"next": null
}وضعیتهای ممکن: 200304401429
GET /api/v2/communities/{id}یک گروه، با id آن.
اختیار read با ETag از v2.0 پارامترها نام نوع معنا idدر مسیر stringاجباری id یک گروه.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"پاسخ با یک Community پاسخ میدهد.
مثال {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"description": "Balconies, allotments, rooftops: whatever grows.",
"tags": [
"garden",
"bees"
],
"members": 312,
"joinPolicy": "open",
"visibility": "open"
}وضعیتهای ممکن: 200304400401404429
GET /api/v2/communities/{id}/postsپستهای عمومی یک گروه، تازهترین اول.
اختیار read صفحهبندیپذیر با ETag از v2.0 در مسیرهای عمومی، counts.likes و counts.reposts همیشه 0 و pinned همیشه false است.
پارامترها نام نوع معنا idدر مسیر stringاجباری id یک گروه.limitدر پرسوجو integerاختیاری شمار ورودی در هر صفحه: پیشفرض ۲۰، حداکثر ۵۰. cursorدر پرسوجو stringاختیاری مقدار next پاسخ قبلی. بدون آن، از آغاز.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}وضعیتهای ممکن: 200304400401404429
کاوش روندها، جستوجو و ایموجیهای اختصاصی سرور.
GET /api/v2/tagsبرچسبهایی که اکنون در جریاناند.
اختیار read با ETag از v2.0 حداکثر ۱۰ برچسب روز بر اساس امتیاز: هر استفاده ۱ حساب میشود و هر ۳ روز نصف میشود، هر حساب در روز حداکثر ۳ حساب میشود. posts امتیاز گردشده است. limit فقط فهرست را کوتاه میکند. برچسبهایی که تیم برجسته میکند ممکن است بالاتر بایستند.
پارامترها نام نوع معنا limitدر پرسوجو integerاختیاری شمار ورودی در هر صفحه: پیشفرض ۲۰، حداکثر ۵۰.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2/tags?limit=10"پاسخ با یک صفحه از Tag پاسخ میدهد، بهصورت `items` و `next`.
مثال {
"items": [
{
"tag": "garden",
"posts": 58
}
],
"next": null
}وضعیتهای ممکن: 200304401429
GET /api/v2/searchجستوجو در پستها، نامها، نامهای کوتاه و برچسبها.
اختیار read با ETag از v2.0 فقط محتوای عمومی را جستوجو میکند: پستهای بیرون از گروهها، پروفایلها و برچسبها. limit برای هر نوع اعمال میشود.
پارامترها نام نوع معنا qدر پرسوجو stringاجباری واژههایی که دنبالشان هستید. typeدر پرسوجو stringاختیاری کدام نوع نتیجه. بدون آن، همهٔ انواع.allpostsprofilestags limitدر پرسوجو integerاختیاری شمار ورودی در هر صفحه: پیشفرض ۲۰، حداکثر ۵۰.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"createdAt": 1758624000000
}
],
"profiles": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"tags": [
{
"tag": "garden",
"posts": 58
}
]
}وضعیتهای ممکن: 200304400401429
GET /api/v2/emojisایموجیهای اختصاصی سرور، با نشانی تصویرهایشان.
اختیار read با ETag از v2.1 در متنها ایموجی بهصورت :name: میآید. آن را با تصویر این فهرست جایگزین کنید؛ نامهای ناشناخته متن میمانند.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2/emojis"پاسخ با یک صفحه از Emoji پاسخ میدهد، بهصورت `items` و `next`.
مثال {
"items": [
{
"name": "tellmelo",
"url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}
],
"next": null
}وضعیتهای ممکن: 200304401429
حساب شما پروفایل و فید شما.
GET /api/v2/meپروفایل خودتان، با idای که مسیرهای دیگر انتظار دارند.
اختیار read با ETag از v2.0 درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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 /api/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://tellmelo.com/api/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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}وضعیتهای ممکن: 200400401429
اعلانها آنچه پیرامون حساب شما اتفاق افتاد، صفحه به صفحه.
GET /api/v2/notificationsاعلانهای شما، تازهترین اول.
اختیار read صفحهبندیپذیر با ETag از v2.0 خواندن چیزی را خواندهشده علامت نمیزند؛ POST /notifications/read این کار را میکند. رویدادهای همنوع روی یک پست یک ردیف مشترک دارند؛ more میگوید چند تا.
پارامترها نام نوع معنا limitدر پرسوجو integerاختیاری شمار ورودی در هر صفحه: پیشفرض ۲۰، حداکثر ۵۰. cursorدر پرسوجو stringاختیاری مقدار next پاسخ قبلی. بدون آن، از آغاز.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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 /api/v2/notifications/readعلامتگذاری اعلانها بهعنوان خواندهشده.
درخواست نمونه curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2/notifications/read"پاسخ با یک Ok پاسخ میدهد.
مثال {
"ok": true
}وضعیتهای ممکن: 200401403429
پیامها صندوق و گفتوگوهای شما. هر گفتوگو به نام حساب طرف مقابل است.
GET /api/v2/conversationsصندوق شما: یک ردیف برای هر گفتوگو، تازهترین اول.
اختیار read صفحهبندیپذیر با ETag از v2.0 پارامترها نام نوع معنا limitدر پرسوجو integerاختیاری شمار ورودی در هر صفحه: پیشفرض ۲۰، حداکثر ۵۰. cursorدر پرسوجو stringاختیاری مقدار next پاسخ قبلی. بدون آن، از آغاز.
درخواست نمونه curl \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/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 /api/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://tellmelo.com/api/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 /api/v2/conversations/{with}/messagesارسال پیام در یک گفتوگو.
قوانین برنامه برقرار است: به کسی که شما را مسدود کرده نمیتوان رسید، و تنظیمات طرف مقابل حساب میشود.
هنوز نمیتوان از طریق 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://tellmelo.com/api/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages"پاسخ با یک Ok پاسخ میدهد.
مثال {
"ok": true
}وضعیتهای ممکن: 200400401403404429
POST /api/v2/conversations/{with}/readعلامت زدن همهٔ پیامهای یک گفتوگو بهعنوان خواندهشده.
پارامترها نام نوع معنا withدر مسیر stringاجباری id حساب طرف مقابل. گفتوگو id جداگانه ندارد.
درخواست نمونه curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://tellmelo.com/api/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/read"پاسخ با یک Ok پاسخ میدهد.
مثال {
"ok": true
}وضعیتهای ممکن: 200400401403404429
رابطهها پسندیدن، ذخیره، بازنشر، دنبال کردن، پیوستن، مسدود کردن: یک مسیر، برقرار و برداشته با active.
POST /api/v2/relationsپسندیدن، ذخیره، بازنشر، دنبال کردن، پیوستن، مسدود کردن، بیصدا کردن، بسته به kind.
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://tellmelo.com/api/v2/relations"پاسخ با یک Ok پاسخ میدهد.
مثال {
"ok": true
}وضعیتهای ممکن: 200400401403429
اشیا همهٔ اشیا، فیلد به فیلد. [] یعنی فهرست.
Serviceپاسخ ریشه: چه کسی پاسخ میدهد، و این کلید چه میتواند بکند.
فیلد نوع معنا namestringهمیشه tellmelo. versionstringنسخهٔ API، مثلاً 2.1. scopestringاین کلید چه میتواند بکند: read یا read write. rateLimitRateLimitسهمیهٔ این کلید. docsstringاین مستندات کجاست، بهصورت مسیری روی این سرور. specstringتوضیح ماشینخوان کجاست.
مثال {
"name": "tellmelo",
"version": "2.9",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/legal/api",
"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اینکه بالای پروفایل نویسندهاش سنجاق شده است یا نه. 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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"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,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}Countsیک پست چند پاسخ، پسند و بازنشر دارد.
فیلد نوع معنا repliesintegerپاسخها، همهٔ سطحها با هم. likesintegerپسندها. repostsintegerبازنشرها.
مثال {
"replies": 4,
"likes": 31,
"reposts": 2
}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": 1758710400000,
"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 — یک حساب خودکار، مثلاً بات.
مثال {
"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
}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"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"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 — کسی پاسخ شما را پسندید.repost — کسی پست شما را بازنشر کرد.follow — کسی شما را دنبال میکند.mention — کسی از شما نام برد.group_mention — کسی از گروهی که ادارهاش میکنید نام برد؛ text نام آن است.message — کسی برایتان پیامی نوشت.scheduled — یکی از پستهای زمانبندیشدهٔ شما منتشر شد.reminder — یادآوریای دربارهٔ یک پست ذخیرهشده سررسید شده است.report — نتیجهٔ گزارشی که فرستادهاید.moderation — تصمیمی دربارهٔ حساب شما: هشدار، محدودیت، اعتراض.team — کار تازه برای تیم (فقط مالکان، مدیران و ناظران).reward — پاداشی برای دعوت بهزودی از دست میرود یا از دست رفته است.gift — هدیهای از تیم: یک اشتراک، یا جرقه برای شما یا برای گروهی که رهبری میکنید.present — هدیهای از یک عضو: جرقه یا زمان اشتراک؛ عضو همان actor است.spark — جرقهها بهزودی تمام میشوند، یا گروهی که رهبری میکنید به سطحی رسیده یا آن را فقط برای مدتی نگه میدارد.loyalty — دربارهٔ ریتم وفاداری: هفتهای فعال شمرده میشود یا یک روز کم دارد، پاداشی تازه است یا رو به محو شدن.impact — پستهای دوازده ساعت شما پس از یک روز چطور بودند، در یک اعلان.discovery — دعوتی به برنامهٔ کشف، یا اینکه جایگاهی آنجا آغاز یا پایان مییابد.group_post — پستی تازه در گروهی که زنگش برای آن به صدا درمیآید.group_moderation — رهبری یک گروه یکی از پستهای شما یا خودتان را از گروه برداشت. 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یا null id پیامی که این پیام به آن پاسخ میدهد (اگر به هیچ پیامی پاسخ ندهد 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
}Createdپاسخ نوشتنی که چیزی ساخت.
فیلد نوع معنا idstringشناسهٔ آنچه ساخته شد. scheduledForintegerیا null کی منتشر میشود، اگر انتشار زمانبندی شده باشد (وگرنه null). deleteAtintegerیا null کی خودش را حذف میکند، اگر تنظیم شده باشد (وگرنه null).
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}Okپاسخ نوشتنی که چیزی برای پس دادن ندارد.
فیلد نوع معنا okbooleanهمیشه true.
مثال {
"ok": true
}توضیح ماشینخوان جدول پشت این صفحه بهصورت OpenAPI در /api/v2/openapi.json در دسترس است.
https://tellmelo.com/api/v2/openapi.jsonآنچه از شما انتظار داریم همان قوانینی برقرار است که همهجا: بدون آزار، بدون هرزنامه، بدون محتوایی که حقش را ندارید. مسئولیت آنچه کلید شما منتشر میکند با شماست.