Содержание Обзор v2 позволяет твоим собственным программам общаться с 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.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/v2Не в URL: он попал бы в логи и в историю браузера.
Тот же ключ загружает изображения: каждый url ведёт на /api/media; передавай ключ в заголовке и там.
curl -H "Authorization: Bearer tm_key_…" \
-o picture.webp "https://tellmelo.com/api/media?id=…"Что может ключ У ключа одно из двух прав, и у каждого пути ниже указано, какое ему нужно:
read : чтение. Публичные посты, профили, группы и теги, а также твоя лента, уведомления и сообщения.write : действия. Публиковать, отвечать, голосовать, отправлять сообщения, подписываться, вступать, блокировать, отмечать уведомления прочитанными.Чего не может ни один ключ Ни один ключ не достаёт до пароля, адреса эл. почты, типа аккаунта, места, роли, удаления, сеансов, push-устройств и других ключей, а также до администрирования и руководства группами. Что защищает пароль, ни один ключ не может.
Страницы Каждый список принимает 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Записи также учитываются в лимитах приложения, например сколько постов за несколько минут. Это тоже отвечает 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/v2readВерсия API и название этого сервера. Посты 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/v2Версия API и название этого сервера.
Без слеша в конце: /api/v2/ перенаправляет на /api/v2 с 308, и не каждая программа следует за этим.
Пример запроса 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в query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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.
На публичных путях 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в query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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}Профиль по его короткому имени.
Параметры Имя Тип Значение 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в query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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Открытые группы этого сервера.
Отсортированы по числу участников и без пагинации; next всегда null.
Параметры Имя Тип Значение limitв query 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.
Параметры Имя Тип Значение 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в query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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Теги, которые сейчас в ходу.
Не больше 10 популярных тегов по весу: каждое использование даёт 1 и вдвое уменьшается каждые 3 дня, один аккаунт даёт не больше 3 в день. posts — округлённый вес. limit только укорачивает список. Теги, выделенные командой, могут стоять выше.
Параметры Имя Тип Значение limitв query 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Поиск по постам, именам, коротким именам и тегам.
Ищет только публичное: посты вне групп, профили и теги. limit действует для каждого вида.
Параметры Имя Тип Значение qв query stringобязательно Искомые слова. typeв query stringнеобязательно Какой вид результатов. Без него — все виды.allpostsprofilestags limitв query 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Собственные эмодзи сервера с адресами их картинок.
В текстах эмодзи выглядит как :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, который ждут остальные пути.
Пример запроса 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в query stringнеобязательно Какая лента: for-you, following, latest или bookmarks. По умолчанию latest.for-youfollowinglatestbookmarks tagв query stringнеобязательно Только посты об этом теге: написанные с ним или распознанные сервером. Без него — без фильтра. limitв query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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в query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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в query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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в query integerнеобязательно Записей на страницу: по умолчанию 20, максимум 50. cursorв query 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.
target — пост для like, save и repost, группа для 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. versionstringВерсия API, например 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Пост, везде в одной и той же форме.
Поле Тип Значение idstringid поста. 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Профиль, как он появляется внутри других объектов: как автор, в поиске.
Поле Тип Значение idstringid аккаунта: то, что ждут /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Уведомление. Одна строка может объединять несколько событий одного вида.
Поле Тип Значение idstringid уведомления. 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Одна строка твоего ящика.
Поле Тип Значение withstringid другого аккаунта: то, что ждёт /conversations/{with}/messages. handlestringЕго короткое имя. namestringЕго отображаемое имя. excerptstringили null Начало последнего сообщения (null, если в нём нет текста). truncatedbooleanОбрезан ли отрывок. fromMebooleanТвоё ли последнее сообщение. lastMessageIdstringid последнего сообщения. 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Сообщение в переписке.
Поле Тип Значение idstringid сообщения. textstringили null Текст (null для сообщения только из картинок). fromstringid аккаунта, который его написал. tostringid аккаунта, которому оно написано. 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Ответ записи, которая что-то создала.
Поле Тип Значение idstringid созданного. 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Чего мы ждём Действуют те же правила, что и везде: никакой травли, никакого спама, никакого контента, на который у тебя нет прав. За то, что публикует твой ключ, отвечаешь ты.