সূচি সংক্ষিপ্ত বিবরণ v2 তোমার নিজের প্রোগ্রামকে tellmelo-র সঙ্গে কথা বলতে দেয়: প্রতি অনুরোধে একটি চাবি, উত্তরে JSON, প্রতিটি তালিকা একইভাবে পাতায় ভাগ হয়। অ্যাপের মতোই নিয়ম।
প্রতিটি পাথ এই সার্ভারের ঠিকানায় /api/v2 দিয়ে শুরু হয়। অনুরোধ আর উত্তর UTF-8-এ JSON। ফিল্ডের নাম, কোড আর মান ইংরেজিতে এবং ইংরেজিতেই থাকে। চাবি তোমার অ্যাকাউন্টের মতো কাজ করে: অ্যাপে যা তুমি দেখতে পাও না, তা-ও পড়তে পারে না। https://tellmelo.com/api/v2দ্রুত শুরু “সেটিংস → অ্যাপ ও ডেটা → API”-এ একটি চাবি তৈরি করে কপি করো। এটি একবারই দেখানো হয়। এটি দিয়ে রুট কল করো। উত্তরে সংস্করণ, চাবির অধিকার আর এই মিনিটে বাকি অনুরোধ দেখা যায়। প্রতিটি পাথ একইভাবে কাজ করে: হেডারে চাবি, উত্তরে JSON, তালিকার জন্য items আর next। curl -H "Authorization: Bearer tm_key_…" https://tellmelo.com/api/v2{
"name": "tellmelo",
"version": "2.10",
"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 JavaScript Python
কপি করো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/v2URL-এ নয়: তা লগ আর ব্রাউজারের ইতিহাসে চলে যাবে।
একই চাবি ছবি লোড করে: প্রতিটি 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 ছাড়া 20টি এন্ট্রি, সর্বোচ্চ 50। কিছু তালিকা পাতায় ভাগ হয় না; সেগুলোর next সবসময় null।
শুধু যা নতুন প্রতিটি উত্তরে একটি ETag থাকে। পরের বার এটি If-None-Match হিসেবে পাঠাও: কিছু না বদলালে বডি ছাড়া 304 পাবে।
ETag: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"
If-None-Match: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc" → 304ব্যতিক্রম: /feed-এর কোনো ETag নেই কারণ এর ক্রম বারবার বদলায়, আর লেখার অনুরোধ কখনো 304 দেয় না।
সীমা একটি চাবি প্রতি মিনিটে 120টি অনুরোধ করতে পারে, “সংগঠন” প্ল্যানে 600, যদি না প্রশাসন অন্য কিছু ঠিক করে। এর বেশি হলে তুমি 429 পাবে এবং কিছুই করা হয়নি। এক মিনিট অপেক্ষা করে আবার পাঠাও।
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1758624060লেখার অনুরোধ অ্যাপের সীমাতেও গোনা হয়, যেমন কয়েক মিনিটে কতগুলো পোস্ট। সেটিও rate_limited-সহ 429 দেয়।
যখন কিছু কাজ করে না ত্রুটি JSON হিসেবে আসে: তোমার প্রোগ্রামের জন্য error-এ একটি নির্দিষ্ট ইংরেজি কোড আর মানুষের জন্য message-এ একটি বাক্য, সঙ্গে মানানসই স্ট্যাটাস কোড। শুধু কোড তুলনা করো; বাক্য বদলাতে পারে।
{ "error": "rate_limited",
"message": "Too many requests. Try again in a minute.",
"limit": 120 }কিছু ত্রুটিতে আরও একটি ফিল্ড থাকে: চাবি না থাকার 401-এ docs, 429-এ limit।
স্ট্যাটাস কোড অর্থ 400bad_requestঅনুরোধ পড়া যায় না, একটি আবশ্যক ফিল্ড নেই, বা কোনো মান অনুমোদিত নয়। 401key_missingহেডারে কোনো চাবি নেই। 401key_invalidচাবিটি বৈধ নয়: ভুল লেখা, বদলানো, বা অ্যাকাউন্ট নিষিদ্ধ। 401unauthorizedসাইন ইন নেই বলে প্রত্যাখ্যাত, চাবি ছাড়া অন্য কারণে। 403scope_missingচাবির প্রয়োজনীয় অধিকার নেই, সাধারণত write। 403account_data_lockedপাসওয়ার্ড, ইমেল ঠিকানা বা মুছে ফেলার মতো অ্যাকাউন্টের ডেটা চাবির নাগালের বাইরে। 403forbiddenতোমার অ্যাকাউন্ট এটি করতে পারে না, যেমন প্রত্যাহার করা অধিকার বা ব্লকের কারণে। 404unknown_pathএমন কোনো পাথ নেই, বা এই পদ্ধতিতে নেই। 404not_foundপাওয়া যায়নি, বা তুমি এটি দেখতে পারো না। 409conflictযা আগে থেকে আছে তার সঙ্গে সংঘাত, যেমন নেওয়া হয়ে গেছে এমন নাম। 413too_largeএই সার্ভারের জন্য খুব বড়। 422unprocessableপড়া যায়, কিন্তু এই রূপে সম্ভব নয়। 429rate_limitedঅনেক বেশি অনুরোধ। কিছুই হয়নি; অপেক্ষা করে আবার চেষ্টা করো। 500internal_errorসার্ভারে কিছু একটা ভুল হয়েছে।
সংস্করণ সংস্করণ পাথে থাকে। যতদিন সেখানে v2 লেখা, পাথ আর ফিল্ড একই থাকে; শুধু নতুন জিনিস যোগ হয়।
সংযোজন দ্বিতীয় সংখ্যাটি বাড়ায়। প্রতিটি পাথ বলে সেটি কবে থেকে আছে।
/api/v1/ আর নেই: পুরোনো পাথগুলো 410 দিয়ে উত্তর দেয় এবং বডিতে নতুন পথ জানায়।
এন্ডপয়েন্ট সব পাথ এক নজরে, তারপর প্রতিটি একটি উদাহরণসহ।
পাথ অধিকার কীসের জন্য প্রবেশপথ GET /api/v2readAPI সংস্করণ আর এই সার্ভারের নাম। পোস্ট GET /api/v2/postsreadসর্বজনীন পোস্ট, নতুনগুলো আগে। GET /api/v2/posts/{id}readএকটি পোস্ট, তার id দিয়ে। POST /api/v2/postswriteএকটি পোস্ট প্রকাশ করো। DELETE /api/v2/posts/{id}writeনিজের একটি পোস্ট সরাও। উত্তর GET /api/v2/posts/{id}/repliesreadএকটি পোস্টের উত্তর, ব্লক করা অ্যাকাউন্ট বাদে। POST /api/v2/posts/{id}/replieswriteএকটি পোস্টের উত্তর দাও। পোল POST /api/v2/posts/{id}/votewriteএকটি পোলে অংশ নাও। প্রোফাইল GET /api/v2/profiles/{handle}readএকটি প্রোফাইল, তার ছোট নাম দিয়ে। GET /api/v2/profiles/{handle}/postsreadএকটি প্রোফাইলের সর্বজনীন পোস্ট, নতুনগুলো আগে। গ্রুপ GET /api/v2/communitiesreadএই সার্ভারের খোলা গ্রুপগুলো। GET /api/v2/communities/{id}readএকটি গ্রুপ, তার id দিয়ে। GET /api/v2/communities/{id}/postsreadএকটি গ্রুপের সর্বজনীন পোস্ট, নতুনগুলো আগে। ঘুরে দেখো GET /api/v2/tagsreadএখন চলমান ট্যাগগুলো। GET /api/v2/searchreadপোস্ট, নাম, ছোট নাম আর ট্যাগে খোঁজ। GET /api/v2/emojisreadসার্ভারের নিজস্ব ইমোজি, ছবির ঠিকানাসহ। তোমার অ্যাকাউন্ট GET /api/v2/mereadতোমার নিজের প্রোফাইল, সেই id-সহ যা অন্য পাথগুলো আশা করে। GET /api/v2/feedreadতোমার নিজের ফিড, অ্যাপ যেভাবে সাজায়। বিজ্ঞপ্তি GET /api/v2/notificationsreadতোমার বিজ্ঞপ্তি, নতুনগুলো আগে। POST /api/v2/notifications/readwriteতোমার বিজ্ঞপ্তিগুলো পড়া হিসেবে চিহ্নিত করো। বার্তা GET /api/v2/conversationsreadতোমার ইনবক্স: প্রতি আলাপে এক সারি, সবচেয়ে নতুন আগে। GET /api/v2/conversations/{with}/messagesreadএকটি আলাপের বার্তা, নতুনগুলো আগে। POST /api/v2/conversations/{with}/messageswriteএকটি আলাপে বার্তা পাঠাও। POST /api/v2/conversations/{with}/readwriteএকটি আলাপের সব বার্তা পড়া হিসেবে চিহ্নিত করো। সম্পর্ক POST /api/v2/relationswriteপছন্দ, সংরক্ষণ, রিপোস্ট, ফলো, যোগদান, ব্লক, মিউট, kind অনুযায়ী।
প্রবেশপথ প্রতিটি প্রোগ্রামের প্রথম অনুরোধ: চাবি কাজ করে কি না, আর তা কী করতে পারে?
GET /api/v2API সংস্করণ আর এই সার্ভারের নাম।
অধিকার 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.10",
"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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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",
"kind": "image",
"poster": null
}
],
"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",
"kind": "image",
"poster": null
}
],
"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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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একটি পোস্টের উত্তর দাও।
ধীর মোডে প্রতি জনের প্রতি 10 মিনিটে একটি উত্তর, নইলে 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আবশ্যক কোন বিকল্প, 0 থেকে গুনে। একাধিক বাছাইয়ে প্রতি বিকল্পে একবার কল করো। 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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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",
"kind": "image",
"poster": null
}
],
"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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
অনুরোধের উদাহরণ 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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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",
"kind": "image",
"poster": null
}
],
"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 থেকে স্কোর অনুযায়ী সর্বোচ্চ 10টি ট্রেন্ডিং ট্যাগ: প্রতিটি ব্যবহার 1 গোনা হয় এবং প্রতি 3 দিনে অর্ধেক হয়, একটি অ্যাকাউন্ট দিনে সর্বোচ্চ 3 গোনা হয়। posts হলো গোলাকার করা স্কোর। limit শুধু তালিকা ছোট করে। টিম যেসব ট্যাগ তুলে ধরে সেগুলো আরও ওপরে থাকতে পারে।
প্যারামিটার নাম ধরন অর্থ limitকোয়েরিতে integerঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
অনুরোধের উদাহরণ 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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50।
অনুরোধের উদাহরণ 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",
"kind": "image",
"poster": null
}
],
"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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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",
"kind": "image",
"poster": null
}
],
"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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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ঐচ্ছিক প্রতি পাতায় এন্ট্রি: শুরুতে 20, সর্বোচ্চ 50। 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, যার উত্তর এটি। 2.2 থেকে।
অনুরোধের উদাহরণ curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"See you on Saturday at the market!"}' \
"https://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 অনুযায়ী।
like, save আর repost-এর জন্য target একটি পোস্ট, join-এর জন্য একটি গ্রুপ, follow, block আর mute-এর জন্য একটি অ্যাকাউন্ট। active: false সম্পর্ক সরিয়ে দেয়।
প্যারামিটার নাম ধরন অর্থ kindবডিতে stringআবশ্যক কোন সম্পর্ক: like, save, repost, follow, join, block বা mute (2.2 থেকে)।likesaverepostfollowjoinblockmute targetবডিতে stringআবশ্যক পোস্ট, প্রোফাইল বা গ্রুপের id, kind অনুযায়ী। activeবডিতে booleanঐচ্ছিক true সম্পর্ক স্থাপন করে, false সরিয়ে দেয়।
অনুরোধের উদাহরণ curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"kind":"like","target":"5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1","active":true}' \
"https://tellmelo.com/api/v2/relations"উত্তর একটি Ok দিয়ে উত্তর দেয়।
উদাহরণ {
"ok": true
}সম্ভাব্য স্ট্যাটাস: 200400401403429
অবজেক্ট সব অবজেক্ট, ফিল্ড ধরে ধরে। [] মানে তালিকা।
Serviceরুটের উত্তর: কে উত্তর দিচ্ছে, আর এই চাবি কী করতে পারে।
ফিল্ড ধরন অর্থ namestringসবসময় tellmelo। versionstringAPI-র সংস্করণ, যেমন 2.1। scopestringএই চাবি কী করতে পারে: read বা read write। rateLimitRateLimitএই চাবির বাজেট। docsstringএই ডকুমেন্টেশন কোথায়, এই সার্ভারে পাথ হিসেবে। specstringযন্ত্রে পাঠযোগ্য বিবরণ কোথায়।
উদাহরণ {
"name": "tellmelo",
"version": "2.10",
"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পোস্টের id। textstringবা null লেখা যেমন লেখা হয়েছে (শুধু পোল বা শুধু ছবির পোস্টে null)। kindstringপোস্টটি কী।post — লেখা, ছবি বা উদ্ধৃতিসহ পোস্ট।poll — পোলসহ পোস্ট। authorProfileBriefকে লিখেছে। communityCommunityBriefবা null যে গ্রুপে লেখা (সব গ্রুপের বাইরে null)। mediaMedia[]এর ছবি, ক্রমানুসারে; না থাকলে খালি। pollPollবা null পোল (না থাকলে null)। quotesstringবা null এটি যে পোস্ট উদ্ধৃত করে তার id। continuesstringবা null এটি সংযোজন হিসেবে যে পোস্ট এগিয়ে নেয় তার id। 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",
"kind": "image",
"poster": null
}
],
"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 0 থেকে গোনা হয়। totalintegerসব ভোট মিলিয়ে, সবসময় থাকে। multiplebooleanএকাধিক উত্তর বেছে নেওয়া যায় কি না। endsAtintegerবা null পোল কখন শেষ হয় (শেষ ছাড়া চললে null)। runningbooleanএখনো ভোট দেওয়া যায় কি না। resultsVisiblebooleanপ্রতি উত্তরের ভোট দেখানো হয় কি না (votes দেখো)। myVotesinteger[]তোমার বাছাই করা উত্তর, 0 থেকে গুনে।
উদাহরণ {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": 1758710400000,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
}PollOptionপোলের একটি উত্তর।
ফিল্ড ধরন অর্থ textstringউত্তর। votesintegerবা null এর ভোট (ফল আটকে থাকা পর্যন্ত null)।
উদাহরণ {
"text": "Lavender",
"votes": 12
}ProfileBriefঅন্য অবজেক্টের ভেতরে যেমন দেখায় তেমন প্রোফাইল: লেখক হিসেবে, খোঁজে।
ফিল্ড ধরন অর্থ idstringঅ্যাকাউন্টের id: যা /relations আর /conversations/{with} আশা করে। handlestringছোট নাম, @ ছাড়া। namestringপ্রদর্শিত নাম। এতে ইমোজি থাকতে পারে, :name:-সহ। verifiedbooleanঅ্যাকাউন্টটি যাচাইকৃত কি না। accountKindstringঅ্যাকাউন্টের ধরন।person — একজন মানুষ।business — একটি ব্যবসা।association — একটি ক্লাব বা সমিতি।automated — একটি স্বয়ংক্রিয় অ্যাকাউন্ট, যেমন বট।
উদাহরণ {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}Profileনিজস্ব একটি প্রোফাইল, বিবরণ আর ফলোয়ারসহ।
ProfileBrief -এর সব ফিল্ড, আর এর সঙ্গে:
ফিল্ড ধরন অর্থ aboutstringবা null বিবরণ (না থাকলে null)। websitestringবা null প্রোফাইলের ওয়েবসাইট (না থাকলে null)। 2.3 থেকে। websiteVerifiedbooleanওয়েবসাইটটি rel=me দিয়ে এই প্রোফাইলে ফিরতি লিংক দেয় কি না, প্রতি সপ্তাহে যাচাই হয়। 2.3 থেকে। followersintegerকতগুলো অ্যাকাউন্ট একে ফলো করে। createdAtintegerবা null অ্যাকাউন্ট কখন তৈরি (সদস্য যোগদানের তারিখ লুকিয়ে রাখলে null; 2.9 থেকে)।
উদাহরণ {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person",
"about": "Beekeeper, allotment, too many seeds. :tellmelo:",
"website": "https://mara-imkerei.example/",
"websiteVerified": true,
"followers": 148,
"createdAt": 1750848000000
}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
}
],
"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বিজ্ঞপ্তির id। 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অন্য অ্যাকাউন্টের id: যা /conversations/{with}/messages আশা করে। handlestringতাঁর ছোট নাম। namestringতাঁর প্রদর্শিত নাম। excerptstringবা null শেষ বার্তার শুরু (লেখা না থাকলে null)। truncatedbooleanঅংশটি কেটে ছোট করা হয়েছে কি না। fromMebooleanশেষ বার্তাটি তোমার কি না। lastMessageIdstringশেষ বার্তার id। unreadintegerতাঁর কতগুলো বার্তা তুমি এখনো পড়োনি। updatedAtintegerশেষ বার্তা কখন লেখা হয়েছে।
উদাহরণ {
"with": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"excerpt": "See you on Saturday at the market!",
"truncated": false,
"fromMe": true,
"lastMessageId": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
"unread": 0,
"updatedAt": 1758624060000
}Messageএকটি আলাপের একটি বার্তা।
ফিল্ড ধরন অর্থ idstringবার্তার id। textstringবা null লেখা (শুধু ছবির বার্তায় null)। fromstringযে অ্যাকাউন্ট লিখেছে তার id। tostringযে অ্যাকাউন্টকে লেখা হয়েছে তার id। readbooleanপ্রাপক পড়েছেন কি না। mediaMedia[]এর ছবি; না থাকলে খালি। replyTostringবা null এটি যে বার্তার উত্তর তার id (কোনোটির উত্তর না হলে null)। 2.2 থেকে। createdAtintegerকখন পাঠানো হয়েছে।
উদাহরণ {
"id": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
"text": "See you on Saturday at the market!",
"from": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"to": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"read": true,
"media": [],
"replyTo": null,
"createdAt": 1758624060000
}Createdএমন লেখার অনুরোধের উত্তর যা কিছু তৈরি করেছে।
ফিল্ড ধরন অর্থ idstringযা তৈরি হয়েছে তার id। 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আমরা যা আশা করি সব জায়গার মতো একই নিয়ম: হয়রানি নয়, স্প্যাম নয়, এমন বিষয়বস্তু নয় যার অধিকার তোমার নেই। তোমার চাবি যা পোস্ট করে তার দায় তোমার।