Conteúdo Quero … Escolha o que você tem em mente; abaixo estão só os passos para isso. A referência completa vem mais abaixo.
criar um bot ligar a minha app entrar com tellmelo no meu site incorporar GIFs e vídeosCria o bot num dos teus grupos, no menu do grupo em “Bots → Meus bots”, com imagem, nome e @nome. O seu token só o vês uma vez. Partilha o seu link “Adicionar bot” ou envia-o para o diretório de bots, onde aparece após a verificação da equipa; quem pode gerir funções num grupo aceita-o com as permissões que aprova. Receba o que acontece nos grupos dele como fluxo (GET /v2/events/stream) ou no seu endereço, e escreva com POST /v2/channels/{id}/messages. Mais em Bots . Regista comandos (PUT /v2/me/commands) e responde com cartões e botões; um bot toca música com um lugar num canal de voz (POST /v2/channels/{id}/voice). Visão geral A v2 permite que seus próprios programas conversem com o tellmelo: uma chave por solicitação, JSON de volta, todas as listas paginam do mesmo jeito. Valem as mesmas regras do app.
Todo caminho começa com https://api.tellmelo.com/v2. Solicitações e respostas são JSON em UTF-8. Nomes de campos, códigos e valores são em inglês e continuam em inglês. Uma chave age como a sua conta: o que você não vê no app, ela também não pode ler. https://api.tellmelo.com/v2Início rápido Crie uma chave em “Área de desenvolvedores → API” e copie-a. Ela só aparece uma vez. Chame a raiz com ela. A resposta mostra a versão, os direitos da chave e as solicitações que restam neste minuto. Todo caminho funciona igual: chave no cabeçalho, JSON de volta, items e next para listas. curl -H "Authorization: Bearer tm_key_…" https://api.tellmelo.com/v2{
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}Depois: /me para o seu perfil, /posts para posts públicos, /feed para o seu feed.
Experimente Escolha uma tarefa, preencha os campos e copie a requisição ou envie daqui. Escrita pede confirmação antes. O código lê a chave de TELLMELO_KEY.
Tarefa GET / GET /posts GET /posts/{id} POST /posts DELETE /posts/{id} GET /me/scheduled POST /posts/{id}/schedule POST /posts/{id}/edit GET /posts/{id}/reply-settings PUT /posts/{id}/reply-settings POST /posts/{id}/coauthor DELETE /posts/{id}/coauthor POST /posts/{id}/pin GET /posts/{id}/replies POST /posts/{id}/replies POST /replies/{id}/edit DELETE /replies/{id} POST /replies/{id}/like POST /replies/{id}/vote POST /replies/{id}/pick GET /posts/{id}/replies/waiting POST /replies/{id}/decide GET /posts/{id}/replies/planned PUT /me/planned-replies/{id} POST /me/planned-replies/{id}/send DELETE /me/planned-replies/{id} POST /posts/{id}/vote GET /profiles/{handle} GET /profiles/{handle}/posts GET /profiles/{handle}/events POST /me/events PUT /me/events/{id} DELETE /me/events/{id} GET /me/events/{id}/signups POST /events/{id}/signup GET /communities GET /communities/{id} GET /communities/{id}/posts GET /communities/{id}/members GET /communities/{id}/roles GET /communities/{id}/bell GET /invites/{code} PUT /roles/{id}/self GET /communities/{id}/emojis PUT /communities/{id}/bell POST /invites/{code}/join GET /communities/{id}/bots GET /communities/{id}/channels GET /channels/{id}/messages POST /channels/{id}/messages POST /channels/{id}/read DELETE /channel-messages/{id} GET /communities/{id}/voice POST /communities/{id}/emojis DELETE /communities/{id}/emojis/{name} POST /communities/{id}/roles PUT /roles/{id} DELETE /roles/{id} PUT /communities/{id}/roles/order PUT /roles/{id}/members/{member} POST /communities/{id}/channels PUT /channels/{id} DELETE /channels/{id} PUT /communities/{id}/channels/order PUT /communities/{id}/channels/shape GET /channels/{id}/overrides PUT /channels/{id}/overrides/{role} POST /communities/{id}/categories PUT /categories/{id} DELETE /categories/{id} PUT /communities/{id}/feed GET /communities/{id}/invites POST /communities/{id}/invites DELETE /invites/{code} POST /channel-messages/{id}/remove POST /communities/{id}/posts/{post}/remove DELETE /communities/{id}/members/{member} PUT /communities/{id}/members/{member}/timeout DELETE /communities/{id}/members/{member}/timeout GET /communities/{id}/bans PUT /communities/{id}/bans/{member} DELETE /communities/{id}/bans/{member} GET /communities/{id}/log POST /communities PUT /communities/{id} GET /events GET /events/stream GET /me/commands PUT /me/commands POST /interactions/{id}/reply POST /channels/{id}/voice GET /tags GET /search GET /emojis GET /media GET /media/mine GET /media/{id} POST /media/uploads POST /media/{id} DELETE /media/{id} GET /me GET /feed POST /me/pictures PUT /me/profile GET /me/emojis POST /me/emojis/pictures POST /me/emojis DELETE /me/emojis/{name} PUT /me/emojis/sharing GET /me/webhooks POST /me/webhooks DELETE /me/webhooks/{id} POST /me/webhooks/{id}/test GET /notifications POST /notifications/read GET /conversations GET /conversations/{with}/messages POST /conversations/{with}/messages POST /conversations/{with}/read DELETE /conversations/{with}/messages/{id} POST /conversations/{with}/planned GET /me/planned-messages POST /me/planned-messages/{id}/send DELETE /me/planned-messages/{id} POST /relations GET /profiles/{handle}/followers GET /profiles/{handle}/following GET /me/relations GET /me/collections POST /me/collections PUT /me/collections/{id} DELETE /me/collections/{id} GET /me/collections/{id}/posts POST /me/collections/{id}/posts GET /partner/quota GET /partner/gifts POST /partner/gifts GET /gift-drops POST /gift-drops read Versão da API e nome desta instância.
curl JavaScript Python
Copiarcurl \
-H "Authorization: Bearer $TELLMELO_KEY" \
"https://api.tellmelo.com/v2"Sua chave Até 10 chaves por conta, cada uma com nome, permissões próprias e, se quiser, data de validade. Uma chave começa com tm_key_ e é mostrada só uma vez. Perdeu? Renove-a; o valor antigo deixa de funcionar.
Você a cria em “Área de desenvolvedores → API”. Ela vai no cabeçalho da solicitação:
curl -H "Authorization: Bearer tm_key_…" \
https://api.tellmelo.com/v2/postsOu, se for mais prático, num cabeçalho próprio:
curl -H "X-Tellmelo-Key: tm_key_…" https://api.tellmelo.com/v2Não na URL: ela acabaria em logs e no histórico do navegador.
A mesma chave carrega imagens: todo url aponta para /api/media; envie a chave no cabeçalho lá também.
curl -H "Authorization: Bearer tm_key_…" \
-o picture.webp "https://api.tellmelo.com/media?id=…"O que uma chave pode fazer Uma chave sempre pode ler e, se você permitir, também escrever, presentear, enviar mídia e gerenciar grupos. Cada caminho abaixo diz do que precisa:
read : ler. Publicações públicas, perfis, grupos e tags, além do seu feed, notificações, mensagens e dos canais dos seus grupos.write : agir. Publicar, responder, votar, enviar mensagens, escrever no chat de um grupo, seguir, entrar, bloquear, marcar notificações como lidas.gifts : presentear. Da cota de um parceiro para um membro, e presentes numa nova publicação. Uma permissão à parte, para que uma chave feita para publicar nunca possa dar nada.media : sua própria biblioteca de mídia. Enviar, alterar, compartilhar e remover GIFs e vídeos. Uma permissão separada, porque os envios custam pontos de vídeo da conta. Encontrar GIFs e vídeos compartilhados só precisa de read .groups : gerir grupos. Funções, canais, categorias, links de convite, o canal do feed, as remoções, silêncios, expulsões e banimentos, na medida em que a sua conta pode no grupo. Uma permissão própria, para que uma chave de publicar nunca mude quem pode o quê num grupo.O que nenhuma chave pode fazer Nenhuma chave alcança senha, e-mail, tipo de conta, lugar, função, exclusão, sessões, dispositivos de push ou outras chaves, nem a administração ou a liderança de grupos. O que a senha protege, nenhuma chave pode fazer.
Bots Um bot é uma conta própria, do tipo bot, para grupos: sem senha nem e-mail, controlada pelo seu programa com uma chave própria. Usa a mesma API que qualquer conta e pode fazer nos grupos o que o cargo dele ali permitir.
Num dos seus grupos, abra o menu do grupo e, em “Bots → Meus bots”, crie um bot com imagem, capa, nome, nome de utilizador e descrição. O token só é mostrado uma vez; tem as permissões read, write, media e groups. Partilhe o link do bot ou envie-o para o diretório de bots; aparece lá assim que a equipa o tiver verificado. Quem pode gerir funções num grupo escolhe as permissões; o bot entra e recebe uma função própria. Seu programa envia o token como Authorization: Bearer …, lê os eventos dos grupos dele como fluxo e trabalha com as rotas em Bots , Canais e Grupos . Um pequeno bot que lê os eventos como fluxo e responde ao comando /ping com pong, só para quem perguntou:
// Node 18 or newer: reads the events of the bot's groups as they happen and answers /ping.
const BASE = 'https://api.tellmelo.com/v2';
const KEY = process.env.TELLMELO_BOT_TOKEN;
const call = (method, path, body) =>
fetch(BASE + path, {
method,
headers: { Authorization: 'Bearer ' + KEY, 'Content-Type': 'application/json' },
body: body && JSON.stringify(body),
}).then((r) => r.json());
await call('PUT', '/me/commands', { commands: [{ name: 'ping', description: 'Answers pong' }] });
let last = '';
for (;;) {
// The stream closes after ten minutes; Last-Event-ID goes on where it stopped.
const res = await fetch(BASE + '/events/stream', {
headers: { Authorization: 'Bearer ' + KEY, ...(last && { 'Last-Event-ID': last }) },
});
const reader = res.body.pipeThrough(new TextDecoderStream()).getReader();
let buffer = '';
for (;;) {
const { value, done } = await reader.read();
if (done) break;
buffer += value;
let end;
while ((end = buffer.indexOf('
')) >= 0) {
const data = buffer.slice(0, end).split('
').find((l) => l.startsWith('data: '));
buffer = buffer.slice(end + 2);
if (!data) continue;
const event = JSON.parse(data.slice(6));
last = event.id;
if (event.type === 'command' && event.data.command === 'ping')
await call('POST', '/interactions/' + event.data.interaction + '/reply', { text: 'pong', private: true });
}
}
}O mesmo bot em Python, que vai buscar os eventos página a página:
# Python 3 with requests: the same bot, reading the events page by page.
import os, time, requests
BASE = 'https://api.tellmelo.com/v2'
H = {'Authorization': 'Bearer ' + os.environ['TELLMELO_BOT_TOKEN']}
requests.put(BASE + '/me/commands', headers=H,
json={'commands': [{'name': 'ping', 'description': 'Answers pong'}]})
since = '0'
while True:
page = requests.get(BASE + '/events', headers=H, params={'since': since}).json()
for event in page['items']:
if event['type'] == 'command' and event['data']['command'] == 'ping':
requests.post(f"{BASE}/interactions/{event['data']['interaction']}/reply",
headers=H, json={'text': 'pong'})
since = page['next'] or since
time.sleep(2)O que um bot pode fazer num grupo é decidido pela sua função lá, não pelo token. A função tem o nome dele; o grupo altera as permissões nas funções das configurações do grupo e remove o bot no menu do grupo, em “Bots → Neste grupo”. Até 5 bots por conta; por grupo, tantos quantos as suas vantagens permitirem. Um bot escreve no máximo 30 mensagens por minuto e grupo, não se encontra na pesquisa e só escreve a quem lhe escreveu primeiro. Aplicam-se os limites . Os eventos também chegam a um endereço HTTPS seu (assinados como os webhooks, com novas tentativas). Além disso: comandos (PUT /v2/me/commands) com respostas para todos ou só para quem perguntou, cartões e botões nas mensagens, e música nos canais de voz (POST /v2/channels/{id}/voice): tudo em Bots . Páginas Toda lista aceita limit e cursor e responde com items e next. Envie next de volta como cursor para obter a próxima página; quando next estiver vazio, acabou. O cursor é opaco: não o analise, não monte um.
{ "items": [ … ], "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx" }
curl -H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts?limit=20&cursor=MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"Sem limit, 20 itens, no máximo 50. Algumas listas não paginam; o next delas é sempre null.
Só o que é novo Toda resposta traz um ETag. Envie-o de volta como If-None-Match da próxima vez: se nada mudou, você recebe 304 sem corpo.
ETag: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"
If-None-Match: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc" → 304Exceções: /feed não tem ETag porque a ordem muda o tempo todo, e escritas nunca respondem 304.
Limites Uma chave pode fazer 120 solicitações por minuto, 600 com o plano “Organização”, salvo se a administração definir outra coisa. Acima disso você recebe 429 e nada foi executado. Espere um minuto e envie de novo.
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1758624060Escritas também contam para os limites do app, como quantos posts em poucos minutos. Isso também responde 429 com rate_limited.
Quando algo não funciona Erros vêm como JSON: um código fixo em inglês em error para o seu programa e uma frase em message para pessoas, além do código de status correspondente. Compare só o código; a frase pode mudar.
{ "error": "rate_limited",
"message": "Too many requests. Try again in a minute.",
"limit": 120 }Alguns erros trazem um campo a mais: docs com um 401 por falta de chave, limit com um 429.
Status Código Significado 400bad_requestA solicitação não pode ser lida, falta um campo obrigatório ou um valor não é permitido. 401key_missingNenhuma chave no cabeçalho. 401key_invalidA chave não é válida: digitada errado, substituída ou a conta está banida. 401unauthorizedRecusada como não conectada, por um motivo que não é a chave. 403scope_missingFalta à chave o direito necessário, geralmente write. 403account_data_lockedDados da conta como senha, e-mail ou exclusão estão fora do alcance das chaves. 403forbiddenSua conta não pode fazer isso, por exemplo por um direito revogado ou um bloqueio. 403timed_outUm silêncio temporário silencia agora a sua conta neste grupo. 404unknown_pathEsse caminho não existe, ou não com este método. 404not_foundNão encontrado, ou você não pode ver. 409conflictEntra em conflito com o que já existe, por exemplo um nome já em uso. 409feed_offO canal do feed deste grupo está desligado. 413too_largeGrande demais para esta instância. 422unprocessableLegível, mas não é possível nesta forma. 429rate_limitedSolicitações demais. Nada aconteceu; espere e tente de novo. 500internal_errorAlgo deu errado no servidor.
Versões A versão está no caminho. Enquanto estiver v2, caminhos e campos continuam iguais; só são acrescentadas coisas novas.
Acréscimos aumentam o segundo número. Cada caminho diz desde quando existe.
https://api.tellmelo.com/v1/ acabou: os caminhos antigos respondem 410 e indicam o novo caminho no corpo.
Endpoints Todos os caminhos num relance, depois cada um com um exemplo.
Caminho Direito Para quê A entrada GET /v2readVersão da API e nome desta instância. Posts GET /v2/postsreadOs posts públicos, os mais recentes primeiro. GET /v2/posts/{id}readUm único post, pelo seu id. POST /v2/postswritePublicar um post. DELETE /v2/posts/{id}writeRemover um dos seus próprios posts. GET /v2/me/scheduledreadSuas publicações que ainda não saíram, e o que elas estão esperando. POST /v2/posts/{id}/schedulewriteMudar quando uma publicação agendada sai, ou quando uma publicação se apaga sozinha. POST /v2/posts/{id}/editwriteAlterar o texto de uma publicação sua. GET /v2/posts/{id}/reply-settingsreadQuem pode responder à sua publicação, se as respostas aguardam aprovação e o modo lento. PUT /v2/posts/{id}/reply-settingswriteMudar as configurações de resposta da sua publicação. O que você não informar continua igual. POST /v2/posts/{id}/coauthorwriteAceitar ou recusar um convite para ser coautor. DELETE /v2/posts/{id}/coauthorwriteSair como coautor ou, como autor, tirar o coautor da publicação. POST /v2/posts/{id}/pinwriteFixar sua publicação no topo do perfil, ou desafixá-la. Respostas GET /v2/posts/{id}/repliesreadAs respostas a um post, sem contas bloqueadas. POST /v2/posts/{id}/replieswriteResponder a um post. POST /v2/replies/{id}/editwriteAlterar o texto de uma resposta sua. DELETE /v2/replies/{id}writeRemover uma resposta sua. POST /v2/replies/{id}/likewriteVotar positivamente numa resposta (uma curtida é um voto positivo desde que as respostas são votadas) ou retirar o voto; um voto negativo permanece. POST /v2/replies/{id}/votewriteVotar uma resposta para cima ou para baixo, ou retirar seu voto. Responde com seu voto e a pontuação resultante. POST /v2/replies/{id}/pickwriteDestacar uma resposta na sua publicação como a melhor, ou retirar o destaque. GET /v2/posts/{id}/replies/waitingreadAs respostas aguardando aprovação em uma publicação: todas na sua, senão só as suas. POST /v2/replies/{id}/decidewriteAprovar ou recusar uma resposta pendente na sua publicação. Recusada, ela é apagada. GET /v2/posts/{id}/replies/plannedreadSuas respostas agendadas para mais tarde em uma publicação. PUT /v2/me/planned-replies/{id}writeMudar o texto ou o horário de uma resposta agendada. Uma que falhou volta a aguardar. POST /v2/me/planned-replies/{id}/sendwriteEnviar agora uma resposta agendada. DELETE /v2/me/planned-replies/{id}writeApagar uma resposta agendada. Enquetes POST /v2/posts/{id}/votewriteParticipar de uma enquete. Perfis GET /v2/profiles/{handle}readUm perfil, pelo seu nome curto. GET /v2/profiles/{handle}/postsreadOs posts públicos de um perfil, os mais recentes primeiro. GET /v2/profiles/{handle}/eventsreadOs próximos eventos de um perfil, os mais próximos primeiro. POST /v2/me/eventswriteCriar um evento. Responde com o id dele. PUT /v2/me/events/{id}writeMudar um evento seu. Todos os campos são definidos de novo. DELETE /v2/me/events/{id}writeApagar um evento seu. GET /v2/me/events/{id}/signupsreadQuem se inscreveu em um evento seu. POST /v2/events/{id}/signupwriteInscrever-se em um evento ou cancelar a inscrição. Grupos GET /v2/communitiesreadOs grupos abertos desta instância; com mine=true, os grupos da sua conta. GET /v2/communities/{id}readUm único grupo, pelo seu id. GET /v2/communities/{id}/postsreadAs publicações do canal do feed de um grupo, as mais novas primeiro. GET /v2/communities/{id}/membersreadOs membros de um grupo com suas funções. GET /v2/communities/{id}/rolesreadAs funções de um grupo, a mais alta primeiro, @everyone por último. GET /v2/communities/{id}/bellreadQuais notificações um grupo envia a você. GET /v2/invites/{code}readO grupo por trás de um link de convite, antes de entrar. PUT /v2/roles/{id}/selfwriteAssumir ou deixar uma função escolhível. GET /v2/communities/{id}/emojisreadOs emojis próprios de um grupo. PUT /v2/communities/{id}/bellwriteDefinir quais notificações um grupo envia a você. POST /v2/invites/{code}/joinwriteEntrar num grupo com um link de convite. GET /v2/communities/{id}/botsreadOs bots de um grupo com o que a função deles permite. Canais GET /v2/communities/{id}/channelsreadOs canais de um grupo que você vê, na ordem deles. GET /v2/channels/{id}/messagesreadAs mensagens de um canal de chat, as mais novas primeiro. POST /v2/channels/{id}/messageswriteEscrever uma mensagem num canal de chat. POST /v2/channels/{id}/readwriteMarcar um canal de chat como lido até um momento. DELETE /v2/channel-messages/{id}writeApagar uma mensagem sua num canal de chat. GET /v2/communities/{id}/voicereadQuem está agora nos canais de voz de um grupo, por canal. Gerenciar grupos POST /v2/communities/{id}/emojisgroupsDar um emoji ao grupo. DELETE /v2/communities/{id}/emojis/{name}groupsRemover um emoji do grupo. POST /v2/communities/{id}/rolesgroupsCriar uma função. PUT /v2/roles/{id}groupsMudar nome, cor e permissões de uma função. DELETE /v2/roles/{id}groupsApagar uma função. PUT /v2/communities/{id}/roles/ordergroupsDefinir a hierarquia das funções. PUT /v2/roles/{id}/members/{member}groupsDar ou tirar uma função de um membro. POST /v2/communities/{id}/channelsgroupsCriar um canal de chat. PUT /v2/channels/{id}groupsMudar nome, tema e categoria de um canal. DELETE /v2/channels/{id}groupsApagar um canal de chat com suas mensagens. PUT /v2/communities/{id}/channels/ordergroupsDefinir a ordem das categorias e dos canais de chat. PUT /v2/communities/{id}/channels/shapegroupsDefinir a forma de todos os símbolos de canal do grupo. GET /v2/channels/{id}/overridesgroupsO que funções podem de outro modo num canal do que no grupo. PUT /v2/channels/{id}/overrides/{role}groupsDefinir o que uma função pode de outro modo num canal. POST /v2/communities/{id}/categoriesgroupsCriar uma categoria para canais. PUT /v2/categories/{id}groupsRenomear uma categoria. DELETE /v2/categories/{id}groupsApagar uma categoria. PUT /v2/communities/{id}/feedgroupsLigar ou desligar o canal do feed de um grupo. GET /v2/communities/{id}/invitesgroupsOs links de convite de um grupo que ainda valem. POST /v2/communities/{id}/invitesgroupsCriar um link de convite. DELETE /v2/invites/{code}groupsRetirar um link de convite. POST /v2/channel-messages/{id}/removegroupsRemover de um canal a mensagem de outro membro. POST /v2/communities/{id}/posts/{post}/removegroupsRemover uma publicação de um grupo. DELETE /v2/communities/{id}/members/{member}groupsExpulsar um membro de um grupo. PUT /v2/communities/{id}/members/{member}/timeoutgroupsSilenciar um membro. DELETE /v2/communities/{id}/members/{member}/timeoutgroupsRetirar um silêncio. GET /v2/communities/{id}/bansgroupsOs banimentos em vigor de um grupo. PUT /v2/communities/{id}/bans/{member}groupsBanir um membro. DELETE /v2/communities/{id}/bans/{member}groupsRetirar um banimento. GET /v2/communities/{id}/loggroupsO registro da liderança: quem removeu o quê e por quê. POST /v2/communitiesgroupsFundar um grupo. Responde com o id dele; você é o fundador. PUT /v2/communities/{id}groupsMudar um grupo que você lidera. O que você não informar continua igual. Bots GET /v2/eventsreadOs eventos dos grupos do bot desde um evento, página a página. GET /v2/events/streamreadOs eventos dos grupos do bot assim que acontecem (server-sent events). GET /v2/me/commandsreadOs comandos do bot. PUT /v2/me/commandswriteDefinir os comandos do bot, todos de uma vez. POST /v2/interactions/{id}/replywriteResponder a um comando ou botão. POST /v2/channels/{id}/voicewriteOcupar um lugar num canal de voz para tocar música ou som. Descobrir GET /v2/tagsreadAs tags em alta no momento. GET /v2/searchreadUma busca em posts, nomes, nomes curtos e tags. GET /v2/emojisreadOs emojis próprios da instância, com o endereço das imagens. GIFs e vídeos GET /v2/mediareadGIFs ou vídeos compartilhados, os mais usados primeiro. GET /v2/media/minemediaSua própria biblioteca de mídia, os mais novos primeiro. GET /v2/media/{id}readUm GIF ou vídeo, seu ou compartilhado. POST /v2/media/uploadsmediaIniciar um envio. PUT /v2/media/uploads/{upload}mediaEnviar um pedaço do arquivo. POST /v2/media/{id}mediaAlterar um dos seus GIFs ou vídeos. DELETE /v2/media/{id}mediaRemover um dos seus GIFs ou vídeos. Sua conta GET /v2/mereadO seu próprio perfil, com o id que os outros caminhos esperam. GET /v2/feedreadO seu próprio feed, do jeito que o aplicativo o monta. POST /v2/me/pictureswriteEnviar uma imagem, como seus bytes. Responde com id e url; depois você usa o id como foto de perfil, capa ou em uma publicação. PUT /v2/me/profileprofileMudar seu perfil: nome, sobre você, foto de perfil, capa e cor do perfil. O que você não informar continua igual. GET /v2/me/emojisreadSeus próprios emojis. POST /v2/me/emojis/picturesprofileEnviar a imagem de um emoji seu, como seus bytes. POST /v2/me/emojisprofileCriar um emoji seu. Responde com todos os seus emojis. DELETE /v2/me/emojis/{name}profileRemover um emoji seu. Responde com os demais. PUT /v2/me/emojis/sharingprofileDefinir se seus seguidores podem usar seus emojis nos próprios textos. GET /v2/me/webhookswebhooksSeus webhooks com o estado deles. POST /v2/me/webhookswebhooksCriar um webhook. Responde com o id e o segredo das assinaturas, só desta vez. DELETE /v2/me/webhooks/{id}webhooksApagar um webhook. POST /v2/me/webhooks/{id}/testwebhooksEnviar um teste a um webhook. Notificações GET /v2/notificationsreadSuas notificações, as mais recentes primeiro. POST /v2/notifications/readwriteMarcar suas notificações como lidas. Mensagens GET /v2/conversationsreadSua caixa de entrada: uma linha por conversa, a mais recente primeiro. GET /v2/conversations/{with}/messagesreadAs mensagens de uma conversa, as mais recentes primeiro. POST /v2/conversations/{with}/messageswriteEnviar uma mensagem numa conversa. POST /v2/conversations/{with}/readwriteMarcar todas as mensagens de uma conversa como lidas. DELETE /v2/conversations/{with}/messages/{id}writeApagar uma mensagem sua. POST /v2/conversations/{with}/plannedwriteAgendar uma mensagem para mais tarde. Responde com o id da mensagem agendada. GET /v2/me/planned-messagesreadSuas mensagens que ainda serão enviadas, em ordem de horário. POST /v2/me/planned-messages/{id}/sendwriteEnviar agora uma mensagem agendada retida ou que falhou. DELETE /v2/me/planned-messages/{id}writeApagar uma mensagem agendada antes do envio. Relações POST /v2/relationswriteCurtir, salvar, repostar, seguir, entrar, bloquear, silenciar, conforme kind. GET /v2/profiles/{handle}/followersreadQuem segue um perfil, os mais recentes primeiro. GET /v2/profiles/{handle}/followingreadQuem um perfil segue, os mais recentes primeiro. GET /v2/me/relationsreadQuem você bloqueou, silenciou ou bloqueou só para mensagens, os mais recentes primeiro. Coleções GET /v2/me/collectionsreadSuas coleções com o número de publicações. POST /v2/me/collectionswriteCriar uma coleção. Responde com o id dela. PUT /v2/me/collections/{id}writeRenomear uma coleção. DELETE /v2/me/collections/{id}writeApagar uma coleção. GET /v2/me/collections/{id}/postsreadAs publicações de uma coleção, como na aba de salvos. POST /v2/me/collections/{id}/postswriteColocar uma publicação em uma coleção ou tirá-la. Presentes GET /v2/partner/quotareadQuanto ainda há para presentear na sua cota. GET /v2/partner/giftsreadO que você deu da sua cota, a quem e quando – o mais recente primeiro. POST /v2/partner/giftsgiftsDar meses de plano ou faíscas da sua cota a um membro. GET /v2/gift-dropsreadSeus presentes em publicações: quantas vagas ainda estão livres e como foram pagos. POST /v2/gift-dropsgiftsPublicar uma publicação com presentes para os outros pegarem.
A entrada A primeira solicitação de todo programa: a chave funciona, e o que ela pode fazer?
GET /v2Versão da API e nome desta instância.
Direito read com ETag desde v2.0 Sem barra no final: https://api.tellmelo.com/v2/ redireciona para https://api.tellmelo.com/v2 com 308, e nem todo programa segue.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2"Resposta Responde com um Service .
Exemplo {
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}Status possíveis: 200304401429
Posts Ler posts públicos, publicar os seus e removê-los de novo.
GET /v2/postsOs posts públicos, os mais recentes primeiro.
Direito read paginável com ETag desde v2.0 Em caminhos públicos, counts.likes e counts.reposts são sempre 0 e pinned é false.
Posts em grupos não estão aqui, mas em /communities/{id}/posts.
Parâmetros Nome Tipo Significado limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts?limit=20"Resposta Responde com uma página de Post , como `items` e `next`.
Exemplo {
"items": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304401429
GET /v2/posts/{id}Um único post, pelo seu id.
Direito read com ETag desde v2.0 Em caminhos públicos, counts.likes e counts.reposts são sempre 0 e pinned é false.
Posts em grupos não estão aqui, mas em /communities/{id}/posts.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"Resposta Responde com um Post .
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}Status possíveis: 200304400401404429
POST /v2/postsPublicar um post.
Um post precisa de texto ou de uma enquete. Tamanho, opções da enquete e ritmo são definidos pela instância; além disso você recebe 400 ou 429.
Anexe imagens, um GIF ou um vídeo com media. Um GIF ou vídeo vai sozinho. Você pode usar no tellmelo GIFs e vídeos compartilhados por outros.
Uma publicação para amigos próximos ou com coautor sai na hora, não em um grupo nem agendada. As duas coisas juntas não são possíveis.
Parâmetros Nome Tipo Significado textno corpo stringopcional O texto do post, da resposta ou da mensagem. communityno corpo stringopcional O id do grupo para cujo canal do feed vai a publicação; ele precisa estar ligado e você precisa da permissão. Sem ele, a publicação fica fora de qualquer grupo. quotesno corpo stringopcional O id do post que este cita. pollno corpo string[]opcional As opções de resposta como lista de textos. mediano corpo string[]opcional IDs de imagens enviadas no app, ou de um GIF ou vídeo da biblioteca de mídia (desde 2.14). audienceno corpo stringopcional Quem vê a publicação: everyone todos que podem vê-la, close só seus amigos próximos.everyoneclose coauthorno corpo stringopcional O id de uma conta que você convida como coautora. Vocês precisam se seguir mutuamente.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"The bees are back in the garden 🐝 #garden","audience":"everyone"}' \
"https://api.tellmelo.com/v2/posts"Resposta Responde com um Created .
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}Status possíveis: 200400401403429
DELETE /v2/posts/{id}Remover um dos seus próprios posts.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/me/scheduledSuas publicações que ainda não saíram, e o que elas estão esperando.
Direito read com ETag desde v2.12 Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/scheduled"Resposta Responde com uma página de ScheduledPost , como `items` e `next`.
Exemplo {
"items": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "Market day tomorrow – see you at the bee stand! #garden",
"communityId": null,
"publishAt": 1758710400000,
"deleteAt": null,
"waitingFor": "time",
"createdAt": 1758624000000
}
],
"next": null
}Status possíveis: 200304401429
POST /v2/posts/{id}/scheduleMudar quando uma publicação agendada sai, ou quando uma publicação se apaga sozinha.
Só suas próprias publicações. Enquanto os presentes de uma publicação não forem pagos, ela não pode ser agendada.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. publishAtno corpo integeropcional Quando a publicação agendada sai, em milissegundos desde 1970. deleteAtno corpo integeropcional Quando a publicação se apaga sozinha, em milissegundos desde 1970.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/schedule"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/posts/{id}/editAlterar o texto de uma publicação sua.
Só dentro do prazo de edição que o seu plano dá. Publicações agendadas não podem ser editadas.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. textno corpo stringobrigatório O texto do post, da resposta ou da mensagem.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"The bees are back in the garden 🐝🌻 #garden"}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/edit"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/posts/{id}/reply-settingsQuem pode responder à sua publicação, se as respostas aguardam aprovação e o modo lento.
Direito read com ETag desde v2.19 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/reply-settings"Resposta Responde com um ReplySettings .
Exemplo {
"audience": "following",
"approval": false,
"slow": "auto"
}Status possíveis: 200304400401404429
PUT /v2/posts/{id}/reply-settingsMudar as configurações de resposta da sua publicação. O que você não informar continua igual.
Só suas próprias publicações.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. audienceno corpo stringopcional Quem pode responder: todos, contas que você segue, as mencionadas ou ninguém.allfollowingmentionednobody approvalno corpo booleanopcional Se as respostas só aparecem depois da sua aprovação. slowno corpo stringopcional Modo lento: auto liga sozinho quando chegam muitas respostas, on sempre, off nunca.autoonoff
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"audience":"following","approval":false,"slow":"auto"}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/reply-settings"Resposta Responde com um ReplySettings .
Exemplo {
"audience": "following",
"approval": false,
"slow": "auto"
}Status possíveis: 200400401403404429
POST /v2/posts/{id}/coauthorAceitar ou recusar um convite para ser coautor.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. acceptno corpo booleanobrigatório true aceita o convite, false o recusa.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"accept":true}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/coauthor"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/posts/{id}/coauthorSair como coautor ou, como autor, tirar o coautor da publicação.
Para o coautor e o autor da publicação.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/coauthor"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/posts/{id}/pinFixar sua publicação no topo do perfil, ou desafixá-la.
Só suas publicações visíveis. Quantas podem ficar fixadas depende do plano.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. activeno corpo booleanobrigatório true fixa a publicação, false a desafixa.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/pin"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Respostas Respostas sob um post, como lista com parentId.
GET /v2/posts/{id}/repliesAs respostas a um post, sem contas bloqueadas.
Direito read paginável com ETag desde v2.0 A lista é plana e na ordem em que foi escrita; parentId a transforma em árvore. Uma página sempre traz conversas inteiras. Respostas de contas bloqueadas ficam de fora.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies?limit=20"Resposta Responde com uma página de Reply , como `items` e `next`.
Exemplo {
"items": [
{
"id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
"text": "Same here, the lavender is full of them.",
"kind": "post",
"author": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"verified": false,
"accountKind": "person"
},
"community": null,
"media": [],
"poll": null,
"quotes": null,
"continues": null,
"counts": {
"replies": 0,
"likes": 3,
"reposts": 0
},
"pinned": false,
"giftDrop": null,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401404429
POST /v2/posts/{id}/repliesResponder a um post.
No modo lento, uma resposta por pessoa a cada 10 minutos, senão 429. O autor e as contas que ele segue estão isentos.
Com media, no máximo uma imagem, um GIF ou um vídeo.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. textno corpo stringobrigatório O texto do post, da resposta ou da mensagem. parentIdno corpo stringopcional O id da resposta a que esta responde. Sem ele, direto ao post. mediano corpo string[]opcional IDs de imagens enviadas no app, ou de um GIF ou vídeo da biblioteca de mídia (desde 2.14). publishAtno corpo integeropcional Quando a resposta deve sair, em milissegundos desde 1970. Sem isso, sai na hora.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Same here, the lavender is full of them."}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies"Resposta Responde com um Created .
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}Status possíveis: 200400401403404429
POST /v2/replies/{id}/editAlterar o texto de uma resposta sua.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta. textno corpo stringobrigatório O texto do post, da resposta ou da mensagem.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Same here, the lavender and the clover are full of them."}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/edit"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/replies/{id}Remover uma resposta sua.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/replies/{id}/likeVotar positivamente numa resposta (uma curtida é um voto positivo desde que as respostas são votadas) ou retirar o voto; um voto negativo permanece.
Direito write desde v2.12 obsoleta Obsoleta desde a 2.19: use POST /replies/{id}/vote. Esta rota continua por enquanto.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta. activeno corpo booleanobrigatório true define a relação, false a remove.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/like"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/replies/{id}/voteVotar uma resposta para cima ou para baixo, ou retirar seu voto. Responde com seu voto e a pontuação resultante.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta. voteno corpo stringobrigatório up vota para cima, down para baixo, none retira seu voto.updownnone
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"vote":"up"}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/vote"Resposta Responde com um ReplyVote .
Exemplo {
"vote": "up",
"score": 12
}Status possíveis: 200400401403404429
POST /v2/replies/{id}/pickDestacar uma resposta na sua publicação como a melhor, ou retirar o destaque.
Só nas suas publicações e só respostas diretas à publicação. Um novo destaque substitui o anterior.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta. activeno corpo booleanobrigatório true destaca a resposta, false retira o destaque.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/pick"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/posts/{id}/replies/waitingAs respostas aguardando aprovação em uma publicação: todas na sua, senão só as suas.
Direito read com ETag desde v2.19 Se as respostas aguardam, quem define é o autor nas configurações de resposta.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/waiting"Resposta Responde com uma página de Reply , como `items` e `next`.
Exemplo {
"items": [
{
"id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
"text": "Same here, the lavender is full of them.",
"kind": "post",
"author": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"verified": false,
"accountKind": "person"
},
"community": null,
"media": [],
"poll": null,
"quotes": null,
"continues": null,
"counts": {
"replies": 0,
"likes": 3,
"reposts": 0
},
"pinned": false,
"giftDrop": null,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}
],
"next": null
}Status possíveis: 200304400401404429
POST /v2/replies/{id}/decideAprovar ou recusar uma resposta pendente na sua publicação. Recusada, ela é apagada.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta. approveno corpo booleanobrigatório true aprova a resposta, false a recusa.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"approve":true}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/decide"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/posts/{id}/replies/plannedSuas respostas agendadas para mais tarde em uma publicação.
Direito read com ETag desde v2.19 Agende com publishAt ao responder. No máximo 20 respostas agendadas ao mesmo tempo.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/planned"Resposta Responde com uma página de PlannedReply , como `items` e `next`.
Exemplo {
"items": [
{
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"parentId": null,
"text": "Count me in for Saturday!",
"publishAt": 1758710400000,
"state": "waiting"
}
],
"next": null
}Status possíveis: 200304400401404429
PUT /v2/me/planned-replies/{id}Mudar o texto ou o horário de uma resposta agendada. Uma que falhou volta a aguardar.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta agendada. textno corpo stringopcional O texto do post, da resposta ou da mensagem. publishAtno corpo integeropcional Quando a resposta deve sair, em milissegundos desde 1970. Sem isso, sai na hora.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"See you there!","publishAt":1758700000000}' \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/me/planned-replies/{id}/sendEnviar agora uma resposta agendada.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta agendada.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/me/planned-replies/{id}Apagar uma resposta agendada.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da resposta agendada.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Enquetes Uma enquete é um post cujo poll está definido. Votar tem um caminho próprio.
POST /v2/posts/{id}/voteParticipar de uma enquete.
Os votos por opção são null até você votar ou a enquete acabar. total está sempre lá.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um post. optionno corpo integerobrigatório Qual opção, contando a partir de 0. Em múltipla escolha, chame uma vez por opção. retractno corpo booleanopcional true retira o voto.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"option":0}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/vote"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Perfis Perfis públicos pelo nome curto, e o que publicaram.
GET /v2/profiles/{handle}Um perfil, pelo seu nome curto.
Direito read com ETag desde v2.0 Parâmetros Nome Tipo Significado handleno caminho stringobrigatório O nome curto de um perfil, com maiúsculas ou minúsculas, tanto faz.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara"Resposta Responde com um Profile .
Exemplo {
"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
}Status possíveis: 200304400401404429
GET /v2/profiles/{handle}/postsOs posts públicos de um perfil, os mais recentes primeiro.
Direito read paginável com ETag desde v2.0 Em caminhos públicos, counts.likes e counts.reposts são sempre 0 e pinned é false.
Posts em grupos não estão aqui, mas em /communities/{id}/posts.
Parâmetros Nome Tipo Significado handleno caminho stringobrigatório O nome curto de um perfil, com maiúsculas ou minúsculas, tanto faz. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/posts?limit=20"Resposta Responde com uma página de Post , como `items` e `next`.
Exemplo {
"items": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401404429
GET /v2/profiles/{handle}/eventsOs próximos eventos de um perfil, os mais próximos primeiro.
Direito read com ETag desde v2.19 Só enquanto o plano do perfil incluir eventos. Nada entre contas que se bloquearam.
Parâmetros Nome Tipo Significado handleno caminho stringobrigatório O nome curto de um perfil, com maiúsculas ou minúsculas, tanto faz.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/events"Resposta Responde com uma página de Event , como `items` e `next`.
Exemplo {
"items": [
{
"id": "2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b",
"title": "Seed swap",
"startsAt": 1758883200000,
"endsAt": 1758890400000,
"place": "Community garden",
"description": "Bring seeds, take seeds.",
"signups": {
"count": 14,
"going": true
}
}
],
"next": null
}Status possíveis: 200304400401404429
POST /v2/me/eventsCriar um evento. Responde com o id dele.
Precisa de um plano com eventos, senão 403. Quantos podem estar agendados depende do plano.
Parâmetros Nome Tipo Significado titleno corpo stringobrigatório O título. startsAtno corpo integerobrigatório Início, em milissegundos desde 1970. endsAtno corpo integeropcional Fim, em milissegundos desde 1970. Opcional. placeno corpo stringopcional Onde acontece. descriptionno corpo stringopcional Uma descrição. signupsno corpo booleanopcional Se dá para se inscrever. Precisa de um plano com inscrições. capacityno corpo integeropcional Quantas pessoas podem se inscrever no máximo. Sem informar, sem limite.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"title":"Seed swap","startsAt":1758700000000,"place":"Community garden","signups":true,"capacity":30}' \
"https://api.tellmelo.com/v2/me/events"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403429
PUT /v2/me/events/{id}Mudar um evento seu. Todos os campos são definidos de novo.
Um evento que já começou mantém o início.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id do evento. titleno corpo stringobrigatório O título. startsAtno corpo integerobrigatório Início, em milissegundos desde 1970. endsAtno corpo integeropcional Fim, em milissegundos desde 1970. Opcional. placeno corpo stringopcional Onde acontece. descriptionno corpo stringopcional Uma descrição. signupsno corpo booleanopcional Se dá para se inscrever. Precisa de um plano com inscrições. capacityno corpo integeropcional Quantas pessoas podem se inscrever no máximo. Sem informar, sem limite.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"title":"Seed swap","startsAt":1758700000000,"place":"Community garden","signups":true,"capacity":30}' \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
DELETE /v2/me/events/{id}Apagar um evento seu.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id do evento.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/me/events/{id}/signupsQuem se inscreveu em um evento seu.
Direito read com ETag desde v2.19 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id do evento.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b/signups"Resposta Responde com uma página de EventSignup , como `items` e `next`.
Exemplo {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"at": 1758624000000
}
],
"next": null
}Status possíveis: 200304400401404429
POST /v2/events/{id}/signupInscrever-se em um evento ou cancelar a inscrição.
Só em eventos com inscrição, não nos seus. Se estiver lotado, 409.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id do evento. goingno corpo booleanobrigatório true inscreve você, false cancela.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"going":true}' \
"https://api.tellmelo.com/v2/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b/signup"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Grupos Os grupos abertos e os seus, suas publicações, membros, funções e links de convite.
GET /v2/communitiesOs grupos abertos desta instância; com mine=true, os grupos da sua conta.
Direito read com ETag desde v2.0 Ordenados pelo número de membros e sem paginação; next é sempre null.
Parâmetros Nome Tipo Significado limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. minena query booleanopcional true para os grupos da sua conta, também internos e ocultos, por nome.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities?limit=20"Resposta Responde com uma página de Community , como `items` e `next`.
Exemplo {
"items": [
{
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"handle": "urbangardening",
"description": "Balconies, allotments, rooftops: whatever grows.",
"tags": [
"garden",
"bees"
],
"members": 312,
"joinPolicy": "open",
"visibility": "open",
"feedChannel": true,
"sparks": 24,
"perks": [
"tint",
"welcome"
],
"membership": {
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"permissions": [
"attach",
"invite",
"send",
"view"
],
"mutedUntil": null
}
}
],
"next": null
}Status possíveis: 200304401429
GET /v2/communities/{id}Um único grupo, pelo seu id.
Direito read com ETag desde v2.0 Grupos internos e ocultos só se sua conta for membro.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"Resposta Responde com um Community .
Exemplo {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"handle": "urbangardening",
"description": "Balconies, allotments, rooftops: whatever grows.",
"tags": [
"garden",
"bees"
],
"members": 312,
"joinPolicy": "open",
"visibility": "open",
"feedChannel": true,
"sparks": 24,
"perks": [
"tint",
"welcome"
],
"membership": {
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"permissions": [
"attach",
"invite",
"send",
"view"
],
"mutedUntil": null
}
}Status possíveis: 200304400401404429
GET /v2/communities/{id}/postsAs publicações do canal do feed de um grupo, as mais novas primeiro.
Direito read paginável com ETag desde v2.0 Em caminhos públicos, counts.likes e counts.reposts são sempre 0 e pinned é false.
Se o canal do feed estiver desligado, o caminho responde 409 com feed_off.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts?limit=20"Resposta Responde com uma página de Post , como `items` e `next`.
Exemplo {
"items": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401404429
GET /v2/communities/{id}/membersOs membros de um grupo com suas funções.
Direito read com ETag desde v2.15 Primeiro a liderança, depois pela função mais alta; no máximo 300.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members"Resposta Responde com uma página de GroupMember , como `items` e `next`.
Exemplo {
"items": [
{
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false,
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"mutedUntil": null
}
],
"next": null
}Status possíveis: 200304400401404429
GET /v2/communities/{id}/rolesAs funções de um grupo, a mais alta primeiro, @everyone por último.
Direito read com ETag desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles"Resposta Responde com uma página de Role , como `items` e `next`.
Exemplo {
"items": [
{
"id": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"name": "Gardeners",
"everyone": false,
"color": "green",
"permissions": [
"attach",
"invite",
"send",
"view"
],
"members": 24,
"editable": true,
"selfable": false
}
],
"next": null
}Status possíveis: 200304400401404429
GET /v2/communities/{id}/bellQuais notificações um grupo envia a você.
Direito read com ETag desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bell"Resposta Responde com um Bell .
Exemplo {
"level": "important"
}Status possíveis: 200304400401404429
GET /v2/invites/{code}O grupo por trás de um link de convite, antes de entrar.
Direito read com ETag desde v2.15 Parâmetros Nome Tipo Significado codeno caminho stringobrigatório O código de um link de convite, o fim do endereço dele.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa"Resposta Responde com um InvitePreview .
Exemplo {
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
},
"member": false
}Status possíveis: 200304400401404429
PUT /v2/roles/{id}/selfAssumir ou deixar uma função escolhível.
Só funções que a liderança oferece como escolhíveis (selfable), e só para a sua própria conta.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma função. activeno corpo booleanopcional false tira a função; caso contrário ela é dada.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8/self"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/communities/{id}/emojisOs emojis próprios de um grupo.
Direito read com ETag desde v2.20 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis"Resposta Responde com uma página de GroupEmoji , como `items` e `next`.
Exemplo {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}Status possíveis: 200304400401404429
PUT /v2/communities/{id}/bellDefinir quais notificações um grupo envia a você.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. levelno corpo stringobrigatório Quais notificações chegam.allimportantoff
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"level":"important"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bell"Resposta Responde com um Bell .
Exemplo {
"level": "important"
}Status possíveis: 200400401403404429
POST /v2/invites/{code}/joinEntrar num grupo com um link de convite.
Parâmetros Nome Tipo Significado codeno caminho stringobrigatório O código de um link de convite, o fim do endereço dele. rulesno corpo booleanopcional true se você aceita as regras do grupo; necessário se ele tiver regras.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa/join"Resposta Responde com um Joined .
Exemplo {
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}Status possíveis: 200400401403404429
GET /v2/communities/{id}/botsOs bots de um grupo com o que a função deles permite.
Direito read com ETag desde v2.19 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bots"Resposta Responde com uma página de GroupBot , como `items` e `next`.
Exemplo {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "gardenbot",
"name": "Garden bot",
"description": "Reminds the group of watering days.",
"permissions": [
"send",
"view"
]
}
],
"next": null
}Status possíveis: 200304400401404429
Canais Os canais dos seus grupos e o chat deles: ler, escrever, marcar como lido.
GET /v2/communities/{id}/channelsOs canais de um grupo que você vê, na ordem deles.
Direito read com ETag desde v2.15 O canal do feed (kind: feed) só aparece aqui enquanto está ligado; as publicações dele vêm por /communities/{id}/posts.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels"Resposta Responde com uma página de Channel , como `items` e `next`.
Exemplo {
"items": [
{
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"kind": "chat",
"name": "harvest",
"topic": "What came in this week",
"category": {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Garden",
"symbol": {
"emoji": null,
"icon": null,
"image": null,
"color": null,
"shape": null
}
},
"unread": 3,
"permissions": [
"view",
"send"
],
"symbol": {
"emoji": "🌻",
"icon": null,
"image": null,
"color": "amber",
"shape": "circle"
}
}
],
"next": null
}Status possíveis: 200304400401404429
GET /v2/channels/{id}/messagesAs mensagens de um canal de chat, as mais novas primeiro.
Direito read paginável com ETag desde v2.15 Até 50 mensagens por página. Faltam as mensagens de contas que você bloqueou ou que bloquearam você.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início. threadna query stringopcional A mensagem cuja conversa é lida: ela e suas respostas em vez do chat.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/messages"Resposta Responde com uma página de ChannelMessage , como `items` e `next`.
Exemplo {
"items": [
{
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "@jon the first tomatoes are ripe 🍅",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"replyTo": "72b3c4d5-e6f7-4081-92a3-b4c5d6e7f809",
"roleColor": "green",
"threadOf": null,
"threadCount": 3,
"card": null,
"buttons": [],
"createdAt": 1758631200000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401404429
POST /v2/channels/{id}/messagesEscrever uma mensagem num canal de chat.
@nome avisa um membro, @everyone com a permissão avisa todos, no máximo seis vezes por hora.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal. textno corpo stringopcional O texto do post, da resposta ou da mensagem. replyTono corpo stringopcional O id da mensagem do mesmo canal que você responde. mediano corpo string[]opcional IDs de imagens enviadas no app, ou de um GIF ou vídeo da biblioteca de mídia (desde 2.14). threadno corpo stringopcional A mensagem do chat em cuja conversa se responde; sem ela a mensagem vai para o chat. cardno corpo objectopcional Um cartão { title, text, color, fields: [{ name, value }] }, no máximo 10 campos. buttonsno corpo object[]opcional Até 5 botões, cada um { id, label, style } com style primary, secondary ou danger. Um toque chega como evento interaction.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Who has seeds to swap?"}' \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/messages"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
POST /v2/channels/{id}/readMarcar um canal de chat como lido até um momento.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal. atno corpo integerobrigatório Até quando está lido, em milissegundos, em geral o createdAt da mensagem mais nova.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/read"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/channel-messages/{id}Apagar uma mensagem sua num canal de chat.
Só suas próprias mensagens; as dos outros a liderança remove com a permissão groups .
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma mensagem num canal de chat.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/communities/{id}/voiceQuem está agora nos canais de voz de um grupo, por canal.
Direito read com ETag desde v2.19 Só canais que você pode ver. Sem servidor de mídia, a lista fica vazia.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/voice"Resposta Responde com uma página de VoiceRoom , como `items` e `next`.
Exemplo {
"items": [
{
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"people": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"muted": false,
"deaf": false,
"camera": false,
"screen": true
}
]
}
],
"next": null
}Status possíveis: 200304400401404429
Gerenciar grupos O que as configurações de um grupo fazem no app, com a permissão groups . O que sua conta pode, o grupo decide como no app: liderança, funções e sua hierarquia.
POST /v2/communities/{id}/emojisDar um emoji ao grupo.
Direito groups desde v2.20 Só quem pode gerir os canais do grupo. A imagem é enviada como um emoji seu (POST /me/emojis/pictures); um nome só existe uma vez entre todos os emojis.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. nameno corpo stringobrigatório O nome com que você escreve o emoji, como :nome:. pictureno corpo stringobrigatório O id de POST /me/emojis/pictures.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"seedling","picture":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis"Resposta Responde com uma página de GroupEmoji , como `items` e `next`.
Exemplo {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}Status possíveis: 200400401403404429
DELETE /v2/communities/{id}/emojis/{name}Remover um emoji do grupo.
Direito groups desde v2.20 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. nameno caminho stringobrigatório O nome do emoji, sem dois-pontos.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis/seedling"Resposta Responde com uma página de GroupEmoji , como `items` e `next`.
Exemplo {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}Status possíveis: 200400401403404429
POST /v2/communities/{id}/rolesCriar uma função.
Direito groups desde v2.15 Só funções abaixo da sua mais alta e só permissões que você mesmo tem; a liderança fica acima de todas.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. nameno corpo stringopcional O nome da função; @everyone mantém o seu. colorno corpo stringopcional A cor; vazio para nenhuma.indigovioletroseambergreenteal permissionsno corpo string[]opcional As permissões: view, send, attach, post_feed, invite, mention_everyone, moderate, timeout_members, kick_members, ban_members, manage_channels, manage_roles. selfableno corpo booleanopcional true: os membros assumem a função por conta própria. Só para funções que não permitem mais do que participar (view, send, attach, voice_connect, voice_speak, voice_video).
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Gardeners","permissions":["view","send","invite"],"selfable":false}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
PUT /v2/roles/{id}Mudar nome, cor e permissões de uma função.
Direito groups desde v2.15 Substitui nome, cor e permissões; o que você omitir fica vazio.
Só funções abaixo da sua mais alta e só permissões que você mesmo tem; a liderança fica acima de todas.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma função. nameno corpo stringopcional O nome da função; @everyone mantém o seu. colorno corpo stringopcional A cor; vazio para nenhuma.indigovioletroseambergreenteal permissionsno corpo string[]opcional As permissões: view, send, attach, post_feed, invite, mention_everyone, moderate, timeout_members, kick_members, ban_members, manage_channels, manage_roles. selfableno corpo booleanopcional true: os membros assumem a função por conta própria. Só para funções que não permitem mais do que participar (view, send, attach, voice_connect, voice_speak, voice_video).
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Gardeners","permissions":["view","send","invite"],"selfable":false}' \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
DELETE /v2/roles/{id}Apagar uma função.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma função.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
PUT /v2/communities/{id}/roles/orderDefinir a hierarquia das funções.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. rolesno corpo string[]obrigatório Os id de todos os papéis abaixo do seu mais alto, o mais alto primeiro; para a liderança, todos exceto @everyone.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles/order"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
PUT /v2/roles/{id}/members/{member}Dar ou tirar uma função de um membro.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma função. memberno caminho stringobrigatório O id da conta de um membro. activeno corpo booleanopcional false tira a função; caso contrário ela é dada.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/communities/{id}/channelsCriar um canal de chat.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. nameno corpo stringopcional O nome, sem #; vazio para o nome que o app dá em cada idioma. topicno corpo stringopcional O tema mostrado acima do canal. categoryno corpo stringopcional O id da categoria em que o canal fica; vazio para nenhuma. emojino corpo stringopcional Um emoji como símbolo. iconno corpo stringopcional Um símbolo do conjunto da app, pelo nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageno corpo stringopcional O id de uma imagem carregada com /media/emoji. colorno corpo stringopcional A cor do quadro.brandindigovioletroseambergreentealred shapeno corpo stringopcional A forma do quadro; sem ela, um círculo.circlesquaretrianglediamondhexagonoctagonshieldstar
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"harvest","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
PUT /v2/channels/{id}Mudar nome, tema e categoria de um canal.
Direito groups desde v2.15 Substitui nome, tema e categoria; o que você omitir fica vazio.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal. nameno corpo stringopcional O nome, sem #; vazio para o nome que o app dá em cada idioma. topicno corpo stringopcional O tema mostrado acima do canal. categoryno corpo stringopcional O id da categoria em que o canal fica; vazio para nenhuma. emojino corpo stringopcional Um emoji como símbolo. iconno corpo stringopcional Um símbolo do conjunto da app, pelo nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageno corpo stringopcional O id de uma imagem carregada com /media/emoji. colorno corpo stringopcional A cor do quadro.brandindigovioletroseambergreentealred shapeno corpo stringopcional A forma do quadro; sem ela, um círculo.circlesquaretrianglediamondhexagonoctagonshieldstar
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"harvest","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
DELETE /v2/channels/{id}Apagar um canal de chat com suas mensagens.
Direito groups desde v2.15 O canal do feed não pode ser apagado, só desligado.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
PUT /v2/communities/{id}/channels/orderDefinir a ordem das categorias e dos canais de chat.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. categoriesno corpo string[]obrigatório Os ids de todas as categorias do grupo na nova ordem. channelsno corpo string[]obrigatório Os ids de todos os canais de chat do grupo na nova ordem.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/order"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
PUT /v2/communities/{id}/channels/shapeDefinir a forma de todos os símbolos de canal do grupo.
Direito groups desde v2.20 Só a liderança do grupo.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. shapeno corpo stringopcional A forma de todos os símbolos do grupo; omitida, cada canal tem a sua.circlesquaretrianglediamondhexagonoctagonshieldstar
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/shape"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/channels/{id}/overridesO que funções podem de outro modo num canal do que no grupo.
Direito groups com ETag desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/overrides"Resposta Responde com uma página de ChannelOverride , como `items` e `next`.
Exemplo {
"items": [
{
"role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"allow": [
"send"
],
"deny": []
}
],
"next": null
}Status possíveis: 200304400401403404429
PUT /v2/channels/{id}/overrides/{role}Definir o que uma função pode de outro modo num canal.
Direito groups desde v2.15 Não para funções iguais ou acima da sua mais alta.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal. roleno caminho stringobrigatório O id de uma função. allowno corpo string[]opcional O que a função pode fazer aqui a mais: num chat view, send, attach, mention_everyone, moderate, no canal do feed view e post_feed. denyno corpo string[]opcional O que a função não pode aqui, entre as mesmas permissões. As duas listas vazias removem a diferença.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"allow":["view"],"deny":["send"]}' \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/overrides/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/communities/{id}/categoriesCriar uma categoria para canais.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. nameno corpo stringobrigatório O nome da categoria. emojino corpo stringopcional Um emoji como símbolo. iconno corpo stringopcional Um símbolo do conjunto da app, pelo nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageno corpo stringopcional O id de uma imagem carregada com /media/emoji. colorno corpo stringopcional A cor do quadro.brandindigovioletroseambergreentealred
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Garden","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/categories"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
PUT /v2/categories/{id}Renomear uma categoria.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma categoria. nameno corpo stringobrigatório O nome da categoria. emojino corpo stringopcional Um emoji como símbolo. iconno corpo stringopcional Um símbolo do conjunto da app, pelo nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageno corpo stringopcional O id de uma imagem carregada com /media/emoji. colorno corpo stringopcional A cor do quadro.brandindigovioletroseambergreentealred
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Garden","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/categories/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
DELETE /v2/categories/{id}Apagar uma categoria.
Direito groups desde v2.15 Os canais dela ficam, sem categoria.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma categoria.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/categories/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
PUT /v2/communities/{id}/feedLigar ou desligar o canal do feed de um grupo.
Direito groups desde v2.15 Desligado, as publicações continuam guardadas, mas só os autores as veem.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. onno corpo booleanobrigatório true liga o canal do feed, false desliga.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/feed"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/communities/{id}/invitesOs links de convite de um grupo que ainda valem.
Direito groups com ETag desde v2.15 A liderança vê todos; os demais, só os próprios.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/invites"Resposta Responde com uma página de InviteLink , como `items` e `next`.
Exemplo {
"items": [
{
"code": "k7Qm2xPa",
"url": "https://tellmelo.com/groups?join=k7Qm2xPa",
"createdBy": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"createdAt": 1758624000000,
"expiresAt": 1759228800000,
"uses": 3,
"maxUses": 10
}
],
"next": null
}Status possíveis: 200304400401403404429
POST /v2/communities/{id}/invitesCriar um link de convite.
Direito groups desde v2.15 Um link só vale enquanto você puder convidar, e some quando você sai.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. daysno corpo integeropcional Por quantos dias o link vale; sem isso, até ser retirado.1730 usesno corpo integeropcional Quantas vezes o link pode ser usado; sem isso, sem limite.151025100
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"days":7,"uses":10}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/invites"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
DELETE /v2/invites/{code}Retirar um link de convite.
Direito groups desde v2.15 Parâmetros Nome Tipo Significado codeno caminho stringobrigatório O código de um link de convite, o fim do endereço dele.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/channel-messages/{id}/removeRemover de um canal a mensagem de outro membro.
Direito groups desde v2.15 Fica no registro do grupo e no máximo 60 por hora, como no app.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de uma mensagem num canal de chat.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8/remove"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/communities/{id}/posts/{post}/removeRemover uma publicação de um grupo.
Direito groups desde v2.15 Fica no registro do grupo e no máximo 60 por hora, como no app.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. postno caminho stringobrigatório O id de um post. reasonno corpo stringobrigatório O motivo que o membro lê.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"reason":"Advertising for another site, despite rule 2."}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts/post/remove"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/communities/{id}/members/{member}Expulsar um membro de um grupo.
Direito groups desde v2.15 Desde a 2.16 é uma expulsão: o membro pode voltar. Quem deve ficar de fora é banido.
Só com a permissão correspondente e só com membros abaixo da sua função mais alta; a co-liderança só como fundador.
Fica no registro do grupo e no máximo 60 por hora, como no app.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. memberno caminho stringobrigatório O id da conta de um membro. reasonno corpo stringobrigatório O motivo que o membro lê.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"reason":"Advertising for another site, despite rule 2."}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
PUT /v2/communities/{id}/members/{member}/timeoutSilenciar um membro.
Direito groups desde v2.16 Um novo silêncio substitui o que estiver em curso. Sair e entrar de novo não o encerra.
Só com a permissão correspondente e só com membros abaixo da sua função mais alta; a co-liderança só como fundador.
Fica no registro do grupo e no máximo 60 por hora, como no app.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. memberno caminho stringobrigatório O id da conta de um membro. secondsno corpo integerobrigatório Por quanto tempo, em segundos.60300600360086400604800 reasonno corpo stringopcional Um motivo que o membro lê; opcional.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"seconds":600}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d/timeout"Resposta Responde com um Until .
Exemplo {
"until": 1758624600000
}Status possíveis: 200400401403404429
DELETE /v2/communities/{id}/members/{member}/timeoutRetirar um silêncio.
Direito groups desde v2.16 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. memberno caminho stringobrigatório O id da conta de um membro.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d/timeout"Resposta Responde com um Until .
Exemplo {
"until": 1758624600000
}Status possíveis: 200400401403404429
GET /v2/communities/{id}/bansOs banimentos em vigor de um grupo.
Direito groups com ETag desde v2.16 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans"Resposta Responde com uma página de Ban , como `items` e `next`.
Exemplo {
"items": [
{
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"until": 1759228800000,
"createdAt": 1758624000000,
"by": "Mara 🌻"
}
],
"next": null
}Status possíveis: 200304400401403404429
PUT /v2/communities/{id}/bans/{member}Banir um membro.
Direito groups desde v2.16 Sem days, o banimento vale até ser retirado.
Só com a permissão correspondente e só com membros abaixo da sua função mais alta; a co-liderança só como fundador.
Fica no registro do grupo e no máximo 60 por hora, como no app.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. memberno caminho stringobrigatório O id da conta de um membro. daysno corpo integeropcional Por quanto tempo, em dias; omita para um banimento sem fim.1730 reasonno corpo stringobrigatório O motivo que o membro lê.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"days":7,"reason":"Advertising for another site, despite rule 2."}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"Resposta Responde com um Until .
Exemplo {
"until": 1758624600000
}Status possíveis: 200400401403404429
DELETE /v2/communities/{id}/bans/{member}Retirar um banimento.
Direito groups desde v2.16 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. memberno caminho stringobrigatório O id da conta de um membro.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/communities/{id}/logO registro da liderança: quem removeu o quê e por quê.
Direito groups com ETag desde v2.15 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/log"Resposta Responde com uma página de LogEntry , como `items` e `next`.
Exemplo {
"items": [
{
"id": "8f7e6d5c-4b3a-4291-8f7e-6d5c4b3a2918",
"action": "message_removed",
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"reason": "",
"by": "Mara 🌻",
"createdAt": 1758710400000
}
],
"next": null
}Status possíveis: 200304400401403404429
POST /v2/communitiesFundar um grupo. Responde com o id dele; você é o fundador.
Direito groups desde v2.19 Precisa da permissão groups. Sem informar, o grupo é internal e de entrada livre; um oculto só com convite. Se membros podem fundar grupos, quem decide é o operador.
Parâmetros Nome Tipo Significado nameno corpo stringobrigatório O nome, no máximo 60 caracteres. descriptionno corpo stringopcional A descrição, no máximo 240 caracteres. handleno corpo stringopcional O identificador para menções @# e o link: de 3 a 30 letras minúsculas, dígitos ou _. tagsno corpo string[]opcional Até 5 #tags sobre o tema do grupo. joinPolicyno corpo stringopcional Como se entra: open livremente, application com candidatura, invite só com convite.openapplicationinvite visibilityno corpo stringopcional Quem vê o grupo: open todos, internal o conteúdo só os membros, hidden só os membros mesmo.openinternalhidden
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Seed swap","handle":"seedswap","tags":["garden","seeds"],"joinPolicy":"open","visibility":"open"}' \
"https://api.tellmelo.com/v2/communities"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403429
PUT /v2/communities/{id}Mudar um grupo que você lidera. O que você não informar continua igual.
Direito groups desde v2.19 Precisa da permissão groups e de liderar o grupo. Liderança, dissolução e vantagens de faíscas ficam no app.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um grupo. nameno corpo stringopcional O nome, no máximo 60 caracteres. descriptionno corpo stringopcional A descrição, no máximo 240 caracteres. handleno corpo stringopcional O identificador para menções @# e o link: de 3 a 30 letras minúsculas, dígitos ou _. tagsno corpo string[]opcional Até 5 #tags sobre o tema do grupo. joinPolicyno corpo stringopcional Como se entra: open livremente, application com candidatura, invite só com convite.openapplicationinvite visibilityno corpo stringopcional Quem vê o grupo: open todos, internal o conteúdo só os membros, hidden só os membros mesmo.openinternalhidden imageno corpo stringopcional O id de uma imagem enviada (POST /me/pictures) como imagem do grupo. Vazio remove. bannerno corpo stringopcional O id de uma imagem enviada como capa do grupo. Vazio remove.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Seed swap","handle":"seedswap","tags":["garden","seeds"],"joinPolicy":"open","visibility":"open"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Bots O que acontece nos grupos de um bot, em tempo real: como fluxo, página a página ou entregue a um endereço.
GET /v2/eventsOs eventos dos grupos do bot desde um evento, página a página.
Só com o token de um bot. Os eventos de um canal só se o bot o puder ver.
Os eventos ficam um dia. next é o número do último, como since para a página seguinte.
Parâmetros Nome Tipo Significado sincena query stringopcional O número do último evento que o bot já tem. Sem ele, o fluxo começa agora e a lista no mais antigo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/events?since=0"Resposta Responde com uma página de BotEvent , como `items` e `next`.
Exemplo {
"items": [
{
"id": "4711",
"type": "message.created",
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"createdAt": 1758634800000,
"data": {
"message": {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "/dice 6",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": 0,
"replyTo": null,
"threadOf": null,
"createdAt": 1758634800000
}
}
}
],
"next": null
}Status possíveis: 200401429
GET /v2/events/streamOs eventos dos grupos do bot assim que acontecem (server-sent events).
Direito read com ETag desde v2.20 A ligação fica aberta e fecha após dez minutos; o cliente volta a ligar-se e envia Last-Event-ID.
Só com o token de um bot. Os eventos de um canal só se o bot o puder ver.
Parâmetros Nome Tipo Significado sincena query stringopcional O número do último evento que o bot já tem. Sem ele, o fluxo começa agora e a lista no mais antigo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/events/stream?since=0"Resposta Responde com um BotEvent .
Exemplo {
"id": "4711",
"type": "message.created",
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"createdAt": 1758634800000,
"data": {
"message": {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "/dice 6",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": 0,
"replyTo": null,
"threadOf": null,
"createdAt": 1758634800000
}
}
}Status possíveis: 200304401429
GET /v2/me/commandsOs comandos do bot.
Direito read com ETag desde v2.20 Só com o token de um bot. Os eventos de um canal só se o bot o puder ver.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/commands"Resposta Responde com uma página de BotCommand , como `items` e `next`.
Exemplo {
"items": [
{
"name": "dice",
"description": "Rolls a die"
}
],
"next": null
}Status possíveis: 200304401429
PUT /v2/me/commandsDefinir os comandos do bot, todos de uma vez.
Substitui todos os comandos; uma lista vazia remove-os. Nos chats que o bot pode ver, o campo de texto oferece-os após «/».
Parâmetros Nome Tipo Significado commandsno corpo object[]obrigatório Até 25 comandos, cada um { name, description }.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"commands":[{"name":"dice","description":"Rolls a die"}]}' \
"https://api.tellmelo.com/v2/me/commands"Resposta Responde com uma página de BotCommand , como `items` e `next`.
Exemplo {
"items": [
{
"name": "dice",
"description": "Rolls a die"
}
],
"next": null
}Status possíveis: 200400401403429
POST /v2/interactions/{id}/replyResponder a um comando ou botão.
Nos 15 minutos seguintes ao evento command ou interaction; com private, só quem usou o comando ou o botão vê a resposta.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id do evento (data.interaction). textno corpo stringopcional O texto do post, da resposta ou da mensagem. privateno corpo booleanopcional true: só quem usou o comando ou o botão vê a resposta, durante um dia.cardno corpo objectopcional Um cartão { title, text, color, fields: [{ name, value }] }, no máximo 10 campos. buttonsno corpo object[]opcional Até 5 botões, cada um { id, label, style } com style primary, secondary ou danger. Um toque chega como evento interaction.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"You rolled a 4.","private":true}' \
"https://api.tellmelo.com/v2/interactions/9b8c7d6e-5f4a-4b3c-8d2e-1f0a9b8c7d6e/reply"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
POST /v2/channels/{id}/voiceOcupar um lugar num canal de voz para tocar música ou som.
Só com o token de um bot, conforme o seu papel no canal permite. O programa liga-se com um SDK LiveKit e envia o seu som como microfone; cada um ajusta o volume para si.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id de um canal.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/voice"Resposta Responde com um VoiceSeat .
Exemplo {
"url": "wss://voice.example.org",
"token": "eyJhbGciOiJIUzI1NiJ9…",
"iceServers": [
{
"urls": [
"stun:turn.example.org:3478"
]
}
],
"speak": true,
"video": false
}Status possíveis: 200400401403404429
Descobrir Tendências, busca e os emojis próprios da instância.
GET /v2/tagsAs tags em alta no momento.
Direito read com ETag desde v2.0 No máximo 10 tags em alta por pontuação: cada uso conta 1 e cai pela metade a cada 3 dias; uma conta conta no máximo 3 por dia. posts é a pontuação arredondada. limit só encurta a lista. Tags destacadas pela equipe podem ficar mais acima.
Parâmetros Nome Tipo Significado limitna query integeropcional Itens por página: 20 por padrão, no máximo 50.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/tags?limit=10"Resposta Responde com uma página de Tag , como `items` e `next`.
Exemplo {
"items": [
{
"tag": "garden",
"posts": 58
}
],
"next": null
}Status possíveis: 200304401429
GET /v2/searchUma busca em posts, nomes, nomes curtos e tags.
Direito read com ETag desde v2.0 Busca só conteúdo público: posts fora de grupos, perfis e tags. limit vale para cada tipo.
Parâmetros Nome Tipo Significado qna query stringobrigatório As palavras procuradas. typena query stringopcional Qual tipo de resultado. Sem ele, todos os tipos.allpostsprofilestags limitna query integeropcional Itens por página: 20 por padrão, no máximo 50.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/search?q=garden&type=posts"Resposta Responde com um SearchResult .
Exemplo {
"posts": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"profiles": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"tags": [
{
"tag": "garden",
"posts": 58
}
]
}Status possíveis: 200304400401429
GET /v2/emojisOs emojis próprios da instância, com o endereço das imagens.
Direito read com ETag desde v2.1 Nos textos, um emoji aparece como :name:. Substitua-o pela imagem desta lista; nomes desconhecidos ficam como texto.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/emojis"Resposta Responde com uma página de Emoji , como `items` e `next`.
Exemplo {
"items": [
{
"name": "tellmelo",
"url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}
],
"next": null
}Status possíveis: 200304401429
GIFs e vídeos A biblioteca de mídia: encontrar GIFs e vídeos compartilhados, enviar e gerenciar os seus e incorporá-los em outros sites.
GET /v2/mediaGIFs ou vídeos compartilhados, os mais usados primeiro.
Direito read paginável com ETag desde v2.14 Sem contas que você bloqueou ou que bloquearam você. Carregue url e poster com a chave no cabeçalho, para os posts no tellmelo.
Para outros sites, só o que tem embed: os endereços dele funcionam sem chave, em qualquer navegador.
Parâmetros Nome Tipo Significado kindna query stringopcional gif ou video; sem informar, gif.gifvideoqna query stringopcional Palavras que aparecem no nome ou nas palavras-chave. anywherena query booleanopcional true: só o que também pode aparecer em outros sites.limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media?kind=gif&q=bees&anywhere=true&limit=20"Resposta Responde com uma página de MediaItem , como `items` e `next`.
Exemplo {
"items": [
{
"id": "b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "gif",
"name": "Happy bees",
"keywords": "bees garden happy",
"width": 480,
"height": 270,
"seconds": 0,
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"poster": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918&poster=1",
"uploader": {
"handle": "mara",
"name": "Mara 🌻"
},
"mine": false,
"shared": true,
"anywhere": true,
"embed": {
"page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
"poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
"code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
}
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401429
GET /v2/media/mineSua própria biblioteca de mídia, os mais novos primeiro.
Direito media paginável com ETag desde v2.14 Parâmetros Nome Tipo Significado kindna query stringopcional gif ou video; sem informar, gif.gifvideoqna query stringopcional Palavras que aparecem no nome ou nas palavras-chave. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media/mine?kind=gif&q=bees&limit=20"Resposta Responde com uma página de MediaItem , como `items` e `next`.
Exemplo {
"items": [
{
"id": "b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "gif",
"name": "Happy bees",
"keywords": "bees garden happy",
"width": 480,
"height": 270,
"seconds": 0,
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"poster": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918&poster=1",
"uploader": {
"handle": "mara",
"name": "Mara 🌻"
},
"mine": false,
"shared": true,
"anywhere": true,
"embed": {
"page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
"poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
"code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
}
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401403429
GET /v2/media/{id}Um GIF ou vídeo, seu ou compartilhado.
Direito read com ETag desde v2.14 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O ID do GIF ou vídeo.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"Resposta Responde com um MediaItem .
Exemplo {
"id": "b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "gif",
"name": "Happy bees",
"keywords": "bees garden happy",
"width": 480,
"height": 270,
"seconds": 0,
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"poster": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918&poster=1",
"uploader": {
"handle": "mara",
"name": "Mara 🌻"
},
"mine": false,
"shared": true,
"anywhere": true,
"embed": {
"page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
"poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
"code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
}
}Status possíveis: 200304400401404429
POST /v2/media/uploadsIniciar um envio.
Depois envie o arquivo em pedaços de no máximo piece bytes para /media/uploads/{upload}. Sem um novo pedaço, um envio termina após 15 minutos.
Valem os limites do app: GIFs até 15 MB, vídeos conforme o plano em tamanho e duração, GIFs por dia, GIFs privados, pontos de vídeo por semana. Caso contrário, vem 409, 413 ou 429.
Parâmetros Nome Tipo Significado kindno corpo stringobrigatório gif ou video; sem informar, gif.gifvideosizeno corpo integerobrigatório O tamanho do arquivo inteiro em bytes. nameno corpo stringobrigatório O nome pelo qual ele é encontrado: de 2 a 40 caracteres. keywordsno corpo stringopcional Palavras-chave para a busca, separadas por espaços. sharedno corpo booleanopcional true: compartilhado com todos no tellmelo.anywhereno corpo booleanopcional true: compartilhado e permitido também em outros sites. Só junto com shared.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"kind":"gif","size":2400000,"name":"Happy bees","keywords":"bees garden","shared":true,"anywhere":false}' \
"https://api.tellmelo.com/v2/media/uploads"Resposta Responde com um UploadStarted .
Exemplo {
"upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
"piece": 4194304
}Status possíveis: 200400401403429
PUT /v2/media/uploads/{upload}Enviar um pedaço do arquivo.
O corpo é o próprio pedaço (application/octet-stream), não JSON. Se ele não continuar o anterior, vem 409 com received: continue a partir dali. Depois do último pedaço, o arquivo é convertido; a resposta então tem item.
Parâmetros Nome Tipo Significado uploadno caminho stringobrigatório O upload do início. offsetna query integerobrigatório Onde o pedaço começa no arquivo, em bytes; 0 para o primeiro.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/octet-stream" \
--data-binary @piece \
"https://api.tellmelo.com/v2/media/uploads/e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b?offset=0"Resposta Responde com um UploadPiece .
Exemplo {
"received": 4194304,
"item": null
}Status possíveis: 200400401403404429
POST /v2/media/{id}Alterar um dos seus GIFs ou vídeos.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O ID do GIF ou vídeo. nameno corpo stringopcional O nome pelo qual ele é encontrado: de 2 a 40 caracteres. keywordsno corpo stringopcional Palavras-chave para a busca, separadas por espaços. sharedno corpo booleanopcional true: compartilhado com todos no tellmelo.anywhereno corpo booleanopcional true: compartilhado e permitido também em outros sites. Só junto com shared.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Happy bees","anywhere":true}' \
"https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/media/{id}Remover um dos seus GIFs ou vídeos.
Posts que já o mostram continuam com ele. Em outros sites, ele some em poucos minutos.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O ID do GIF ou vídeo.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Sua conta Seu perfil, seu feed, seus próprios emojis e seus webhooks.
GET /v2/meO seu próprio perfil, com o id que os outros caminhos esperam.
Direito read com ETag desde v2.0 Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me"Resposta Responde com um Profile .
Exemplo {
"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
}Status possíveis: 200304401429
GET /v2/feedO seu próprio feed, do jeito que o aplicativo o monta.
Direito read paginável desde v2.0 Sem ETag, porque a ordem muda o tempo todo. Uma lista que você começou fica igual até o fim.
Parâmetros Nome Tipo Significado tabna query stringopcional Qual feed: for-you, following, latest ou bookmarks. latest por padrão.for-youfollowinglatestbookmarks tagna query stringopcional Só posts sobre esta tag: escritos com ela ou reconhecidos nela pelo servidor. Sem ele, sem filtro. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/feed?tab=following&limit=20"Resposta Responde com uma página de Post , como `items` e `next`.
Exemplo {
"items": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200400401429
POST /v2/me/picturesEnviar uma imagem, como seus bytes. Responde com id e url; depois você usa o id como foto de perfil, capa ou em uma publicação.
PNG, JPEG, WebP ou GIF, reconhecido pelos primeiros bytes; salvo de novo sem metadados. Uma imagem não usada em nada é apagada depois.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/octet-stream" \
--data-binary @picture.png \
"https://api.tellmelo.com/v2/me/pictures"Resposta Responde com um Picture .
Exemplo {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}Status possíveis: 200401403429
PUT /v2/me/profileMudar seu perfil: nome, sobre você, foto de perfil, capa e cor do perfil. O que você não informar continua igual.
Direito profile desde v2.19 Precisa da permissão profile. Seu @nome fica no app: ele também é seu nome de login.
Parâmetros Nome Tipo Significado nameno corpo stringopcional O nome exibido, no máximo 60 caracteres. aboutno corpo stringopcional O texto “Sobre você”. avatarno corpo stringopcional O id de uma imagem enviada como foto de perfil. Vazio remove. bannerno corpo stringopcional O id de uma imagem enviada como capa. Vazio remove. colorno corpo stringopcional A cor do perfil, com um plano. null remove.indigovioletrosecoralamberlimegreentealskyslatesandnight
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Mara 🌻","about":"Gardening in the city.","avatar":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
"https://api.tellmelo.com/v2/me/profile"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403429
GET /v2/me/emojisSeus próprios emojis.
Direito read com ETag desde v2.19 Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/emojis"Resposta Responde com uma página de OwnEmoji , como `items` e `next`.
Exemplo {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}Status possíveis: 200304401429
POST /v2/me/emojis/picturesEnviar a imagem de um emoji seu, como seus bytes.
Direito profile desde v2.19 Emojis animados precisam de um plano. Grande demais depois da conversão, a imagem é recusada.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/octet-stream" \
--data-binary @picture.png \
"https://api.tellmelo.com/v2/me/emojis/pictures"Resposta Responde com um EmojiPicture .
Exemplo {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}Status possíveis: 200401403429
POST /v2/me/emojisCriar um emoji seu. Responde com todos os seus emojis.
Direito profile desde v2.19 Quantos emojis você pode criar depende do plano.
Parâmetros Nome Tipo Significado nameno corpo stringobrigatório O nome com que você escreve o emoji, como :nome:. pictureno corpo stringobrigatório O id de POST /me/emojis/pictures.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"sunflower","picture":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
"https://api.tellmelo.com/v2/me/emojis"Resposta Responde com uma página de OwnEmoji , como `items` e `next`.
Exemplo {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}Status possíveis: 200400401403429
DELETE /v2/me/emojis/{name}Remover um emoji seu. Responde com os demais.
Direito profile desde v2.19 Parâmetros Nome Tipo Significado nameno caminho stringobrigatório O nome do emoji, sem dois-pontos.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/emojis/sunflower"Resposta Responde com uma página de OwnEmoji , como `items` e `next`.
Exemplo {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}Status possíveis: 200400401403404429
PUT /v2/me/emojis/sharingDefinir se seus seguidores podem usar seus emojis nos próprios textos.
Direito profile desde v2.19 Parâmetros Nome Tipo Significado sharedno corpo booleanobrigatório true compartilha seus emojis com seus seguidores, false não.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"shared":true}' \
"https://api.tellmelo.com/v2/me/emojis/sharing"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403429
GET /v2/me/webhooksSeus webhooks com o estado deles.
Direito webhooks com ETag desde v2.19 Precisa da permissão webhooks. Webhooks vêm com um plano de organização ou como parceiro.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks"Resposta Responde com uma página de Webhook , como `items` e `next`.
Exemplo {
"items": [
{
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"url": "https://example.org/tellmelo-hook",
"kinds": [
"reply",
"mention"
],
"active": true,
"lastStatus": 200,
"lastAt": 1758624000000,
"failures": 0
}
],
"next": null
}Status possíveis: 200304401403429
POST /v2/me/webhooksCriar um webhook. Responde com o id e o segredo das assinaturas, só desta vez.
Direito webhooks desde v2.19 Cada entrega é assinada com o segredo (X-Tellmelo-Signature). Guarde-o; ele não será mostrado de novo.
Parâmetros Nome Tipo Significado urlno corpo stringobrigatório Um endereço HTTPS fora de redes locais, sem credenciais. kindsno corpo string[]obrigatório Sobre o que o webhook é avisado. Quais tipos estão disponíveis depende do plano e da parceria.replymentiongroup_mentionfollowlikerepostmessagequota_changedquota_giftdrop_claimeddrop_empty
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.org/tellmelo-hook","kinds":["reply","mention"]}' \
"https://api.tellmelo.com/v2/me/webhooks"Resposta Responde com um WebhookCreated .
Exemplo {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"secret": "whsec_3f9a…"
}Status possíveis: 200400401403429
DELETE /v2/me/webhooks/{id}Apagar um webhook.
Direito webhooks desde v2.19 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id do webhook.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/me/webhooks/{id}/testEnviar um teste a um webhook.
Direito webhooks desde v2.19 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id do webhook.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b/test"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Notificações O que aconteceu em torno da sua conta, página por página.
GET /v2/notificationsSuas notificações, as mais recentes primeiro.
Direito read paginável com ETag desde v2.0 Ler não marca nada como lido; POST /notifications/read marca. Eventos do mesmo tipo no mesmo post dividem uma linha; more diz quantos.
Parâmetros Nome Tipo Significado limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/notifications?limit=20"Resposta Responde com uma página de Notification , como `items` e `next`.
Exemplo {
"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"
}Status possíveis: 200304401429
POST /v2/notifications/readMarcar suas notificações como lidas.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/notifications/read"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200401403429
Mensagens Sua caixa de entrada e conversas. Uma conversa recebe o nome da outra conta.
GET /v2/conversationsSua caixa de entrada: uma linha por conversa, a mais recente primeiro.
Direito read paginável com ETag desde v2.0 Parâmetros Nome Tipo Significado limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations?limit=20"Resposta Responde com uma página de Conversation , como `items` e `next`.
Exemplo {
"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"
}Status possíveis: 200304401429
GET /v2/conversations/{with}/messagesAs mensagens de uma conversa, as mais recentes primeiro.
Direito read paginável com ETag desde v2.0 Ler não marca nada como lido; POST /conversations/{with}/read marca.
Parâmetros Nome Tipo Significado withno caminho stringobrigatório O id da outra conta. Uma conversa não tem id próprio. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages?limit=20"Resposta Responde com uma página de Message , como `items` e `next`.
Exemplo {
"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"
}Status possíveis: 200304400401404429
POST /v2/conversations/{with}/messagesEnviar uma mensagem numa conversa.
Valem as regras do app: quem te bloqueou não pode ser alcançado, e as configurações da outra pessoa contam.
Imagens, GIFs e vídeos não podem ser anexados a mensagens pela API, só no app.
Parâmetros Nome Tipo Significado withno caminho stringobrigatório O id da outra conta. Uma conversa não tem id próprio. textno corpo stringobrigatório O texto do post, da resposta ou da mensagem. replyTono corpo stringopcional O id de uma mensagem anterior desta conversa à qual esta responde. Desde 2.2.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"See you on Saturday at the market!"}' \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/conversations/{with}/readMarcar todas as mensagens de uma conversa como lidas.
Parâmetros Nome Tipo Significado withno caminho stringobrigatório O id da outra conta. Uma conversa não tem id próprio.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/read"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/conversations/{with}/messages/{id}Apagar uma mensagem sua.
Só suas próprias mensagens, e só nas 24 horas depois do envio.
Parâmetros Nome Tipo Significado withno caminho stringobrigatório O id da outra conta. Uma conversa não tem id próprio. idno caminho stringobrigatório O id da mensagem.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages/7c6b5a49-3827-4165-9f0e-d1c2b3a49586"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
POST /v2/conversations/{with}/plannedAgendar uma mensagem para mais tarde. Responde com o id da mensagem agendada.
Precisa de um plano com mensagens agendadas, senão 403. Com criptografia de ponta a ponta dos dois lados, só funciona no app.
Parâmetros Nome Tipo Significado withno caminho stringobrigatório O id da outra conta. Uma conversa não tem id próprio. textno corpo stringobrigatório O texto do post, da resposta ou da mensagem. sendAtno corpo integerobrigatório Quando a mensagem é enviada, em milissegundos desde 1970.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Happy birthday! 🎂","sendAt":1758700000000}' \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/planned"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403404429
GET /v2/me/planned-messagesSuas mensagens que ainda serão enviadas, em ordem de horário.
Direito read com ETag desde v2.19 Parâmetros Nome Tipo Significado withna query stringopcional Só as mensagens para esta conta (o id dela).
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages"Resposta Responde com uma página de PlannedMessage , como `items` e `next`.
Exemplo {
"items": [
{
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"text": "Happy birthday! 🎂",
"sendAt": 1758710400000,
"state": "waiting"
}
],
"next": null
}Status possíveis: 200304401429
POST /v2/me/planned-messages/{id}/sendEnviar agora uma mensagem agendada retida ou que falhou.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da mensagem agendada.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/me/planned-messages/{id}Apagar uma mensagem agendada antes do envio.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da mensagem agendada.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Relações Curtir, salvar, repostar, seguir, entrar, bloquear: um só caminho, definido e removido com active. Desde a 2.19 também as listas: seguidores, seguidos e seus próprios bloqueios e silenciamentos.
POST /v2/relationsCurtir, salvar, repostar, seguir, entrar, bloquear, silenciar, conforme kind.
target é um post para like, save e repost, um grupo para join e uma conta para follow, block e mute. active: false remove a relação.
Parâmetros Nome Tipo Significado kindno corpo stringobrigatório Qual relação: like, save, repost, follow, join, block ou mute (desde 2.2).likesaverepostfollowjoinblockmute targetno corpo stringobrigatório O id do post, perfil ou grupo, conforme kind. activeno corpo booleanopcional true define a relação, false a remove.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"kind":"like","target":"5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1","active":true}' \
"https://api.tellmelo.com/v2/relations"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403429
GET /v2/profiles/{handle}/followersQuem segue um perfil, os mais recentes primeiro.
Direito read paginável com ETag desde v2.19 Parâmetros Nome Tipo Significado handleno caminho stringobrigatório O nome curto de um perfil, com maiúsculas ou minúsculas, tanto faz. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/followers?limit=20"Resposta Responde com uma página de ProfileBrief , como `items` e `next`.
Exemplo {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401404429
GET /v2/profiles/{handle}/followingQuem um perfil segue, os mais recentes primeiro.
Direito read paginável com ETag desde v2.19 Parâmetros Nome Tipo Significado handleno caminho stringobrigatório O nome curto de um perfil, com maiúsculas ou minúsculas, tanto faz. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/following?limit=20"Resposta Responde com uma página de ProfileBrief , como `items` e `next`.
Exemplo {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401404429
GET /v2/me/relationsQuem você bloqueou, silenciou ou bloqueou só para mensagens, os mais recentes primeiro.
Direito read paginável com ETag desde v2.19 Só suas próprias listas. Definir e remover é com POST /relations.
Parâmetros Nome Tipo Significado kindna query stringobrigatório block bloqueados, mute silenciados, dm_block bloqueados só para mensagens.blockmutedm_blocklimitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/relations?kind=mute&limit=20"Resposta Responde com uma página de ProfileBrief , como `items` e `next`.
Exemplo {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304400401429
Coleções Organize publicações salvas em coleções suas. Uma publicação pode estar em várias; tirada de uma coleção, continua salva.
GET /v2/me/collectionsSuas coleções com o número de publicações.
Direito read com ETag desde v2.19 Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections"Resposta Responde com uma página de Collection , como `items` e `next`.
Exemplo {
"items": [
{
"id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
"name": "Recipes",
"count": 12
}
],
"next": null
}Status possíveis: 200304401429
POST /v2/me/collectionsCriar uma coleção. Responde com o id dela.
Quantas coleções você pode criar depende do plano.
Parâmetros Nome Tipo Significado nameno corpo stringobrigatório O nome, no máximo 40 caracteres. Único por conta, sem diferenciar maiúsculas.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Recipes"}' \
"https://api.tellmelo.com/v2/me/collections"Resposta Responde com um Made .
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Status possíveis: 200400401403429
PUT /v2/me/collections/{id}Renomear uma coleção.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da coleção. nameno corpo stringobrigatório O nome, no máximo 40 caracteres. Único por conta, sem diferenciar maiúsculas.
Exemplo de solicitação curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Baking"}' \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
DELETE /v2/me/collections/{id}Apagar uma coleção.
As publicações dela continuam salvas.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da coleção.
Exemplo de solicitação curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
GET /v2/me/collections/{id}/postsAs publicações de uma coleção, como na aba de salvos.
Direito read paginável desde v2.19 Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da coleção. limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718/posts?limit=20"Resposta Responde com uma página de Post , como `items` e `next`.
Exemplo {
"items": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200400401404429
POST /v2/me/collections/{id}/postsColocar uma publicação em uma coleção ou tirá-la.
Colocar uma publicação também a salva. Só publicações visíveis.
Parâmetros Nome Tipo Significado idno caminho stringobrigatório O id da coleção. postno corpo stringobrigatório O id da publicação. insideno corpo booleanopcional true coloca a publicação (padrão), false a tira.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"post":"5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1","inside":true}' \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718/posts"Resposta Responde com um Ok .
Exemplo {
"ok": true
}Status possíveis: 200400401403404429
Presentes Consultar a cota de um parceiro e presentear a partir dela, colocar presentes em publicações e acompanhá-los. Pegar continua reservado às pessoas, no app.
GET /v2/partner/quotaQuanto ainda há para presentear na sua cota.
Direito read com ETag desde v2.12 Só para parceiros com cota; os demais recebem 403.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/partner/quota"Resposta Responde com um Quota .
Exemplo {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}Status possíveis: 200304401429
GET /v2/partner/giftsO que você deu da sua cota, a quem e quando – o mais recente primeiro.
Direito read paginável com ETag desde v2.12 Só para parceiros com cota; os demais recebem 403.
Parâmetros Nome Tipo Significado limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/partner/gifts?limit=20"Resposta Responde com uma página de QuotaGift , como `items` e `next`.
Exemplo {
"items": [
{
"item": "plan",
"quantity": 3,
"itemId": null,
"recipient": {
"handle": "jon",
"name": "Jon"
},
"createdAt": 1758627600000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304401429
POST /v2/partner/giftsDar meses de plano ou faíscas da sua cota a um membro.
Só para parceiros com cota; os demais recebem 403.
Assim como no app, o membro vê de quem é o presente. No máximo 60 presentes por hora.
Parâmetros Nome Tipo Significado handleno corpo stringobrigatório O @nome do membro que você presenteia, com ou sem @. itemno corpo stringobrigatório plan para meses de plano, sparks para faíscas, shop para um visual do seu estoque (desde 2.13).plansparksshopquantityno corpo integeropcional Quanto: até 12 meses ou 35 faíscas por presente. itemIdno corpo stringopcional Para shop: o ID do visual, como looks o indica na cota. Um exemplar por presente; quantity não se aplica nesse caso.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"handle":"jon","item":"plan","quantity":3,"itemId":"frame-gold"}' \
"https://api.tellmelo.com/v2/partner/gifts"Resposta Responde com um Quota .
Exemplo {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}Status possíveis: 200400401403429
GET /v2/gift-dropsSeus presentes em publicações: quantas vagas ainda estão livres e como foram pagos.
Direito read paginável com ETag desde v2.12 Parâmetros Nome Tipo Significado limitna query integeropcional Itens por página: 20 por padrão, no máximo 50. cursorna query stringopcional O next da resposta anterior. Sem ele, desde o início.
Exemplo de solicitação curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/gift-drops?limit=20"Resposta Responde com uma página de OwnGiftDrop , como `items` e `next`.
Exemplo {
"items": [
{
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": false,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota",
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Status possíveis: 200304401429
POST /v2/gift-dropsPublicar uma publicação com presentes para os outros pegarem.
Grátis para o dono e para membros da equipe com essa permissão; senão, sai da sua cota. O que precisaria ser pago é recusado com 422 – pagar só funciona no app.
Pegar só funciona no app, para que nenhum programa leve todas as vagas. Quantas ainda estão livres aparece em giftDrop da publicação.
Parâmetros Nome Tipo Significado textno corpo stringopcional O texto do post, da resposta ou da mensagem. communityno corpo stringopcional O id do grupo para cujo canal do feed vai a publicação; ele precisa estar ligado e você precisa da permissão. Sem ele, a publicação fica fora de qualquer grupo. itemno corpo stringobrigatório plan para meses de plano, sparks para faíscas.plansparksquantityno corpo integerobrigatório O que cada vaga contém: até 12 meses ou 35 faíscas. placesno corpo integerobrigatório Para quantas pessoas, até 10.000. audienceno corpo stringopcional Quem pode pegar: all todos, followers só seus seguidores, group só os membros do grupo (somente junto com community).allfollowersgroup newAccountsno corpo booleanopcional true deixa contas com menos de 7 dias pegarem também. Sem isso, elas ficam de fora.
Exemplo de solicitação curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Ten times three months of Supporter – first come, first served! 🎁","item":"plan","quantity":3,"places":10,"audience":"all","newAccounts":false}' \
"https://api.tellmelo.com/v2/gift-drops"Resposta Responde com um DropCreated .
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota"
}Status possíveis: 200400401403429
Objetos Todos os objetos, campo por campo. [] significa lista.
ServiceA resposta da raiz: quem está respondendo e o que esta chave pode fazer.
Campo Tipo Significado namestringSempre tellmelo. versionstringA versão da API, por exemplo 2.1. scopestringO que esta chave pode fazer: read ou read write. rateLimitRateLimitA cota desta chave. docsstringOnde está esta documentação, como caminho nesta instância. specstringOnde está a descrição legível por máquina.
Exemplo {
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}RateLimitA cota desta chave no minuto atual.
Campo Tipo Significado limitintegerSolicitações por minuto. remainingintegerQuantas restam neste minuto.
Exemplo {
"limit": 120,
"remaining": 117
}PostUm post, com a mesma forma em todo lugar.
Campo Tipo Significado idstringO id do post. textstringou null O texto como foi escrito (null para um post que é só enquete ou só imagens). kindstringO que o post é.post — Um post com texto, imagens ou uma citação.poll — Um post com enquete. authorProfileBriefQuem o escreveu. communityCommunityBriefou null O grupo em que foi escrito (null fora de qualquer grupo). mediaMedia[]Suas imagens, em ordem; vazio se não houver. pollPollou null A enquete (null se não houver). quotesstringou null O id do post que este cita. continuesstringou null O id do post que este continua, como acréscimo. countsCountsRespostas, curtidas e reposts. pinnedbooleanSe está fixado no topo do perfil do autor. giftDropGiftDropou null Os presentes para pegar na publicação (null se não houver). createdAtintegerQuando foi escrito.
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}ReplyUma resposta sob um post: um post com mais dois campos.
Todos os campos de Post , e além disso:
Campo Tipo Significado postIdstringO post do qual a conversa inteira depende. parentIdstringou null A resposta a que esta responde (null se responde direto ao post).
Exemplo {
"id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
"text": "Same here, the lavender is full of them.",
"kind": "post",
"author": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"verified": false,
"accountKind": "person"
},
"community": null,
"media": [],
"poll": null,
"quotes": null,
"continues": null,
"counts": {
"replies": 0,
"likes": 3,
"reposts": 0
},
"pinned": false,
"giftDrop": null,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}ReplyVoteSeu voto em uma resposta e a pontuação dela.
Campo Tipo Significado votestringSeu voto.up — Para cima.down — Para baixo.none — Sem voto. scoreintegerVotos para cima menos votos para baixo, também abaixo de zero.
Exemplo {
"vote": "up",
"score": 12
}PlannedReplyUma resposta sua agendada para mais tarde.
Campo Tipo Significado idstringO id da resposta agendada. parentIdstringou null A resposta que ela vai responder (null se responde direto à publicação). textstringO texto. publishAtintegerQuando ela sai. statestringO estado dela.waiting — Aguarda o horário.failed — Não pôde ser enviada, por exemplo porque a publicação sumiu.
Exemplo {
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"parentId": null,
"text": "Count me in for Saturday!",
"publishAt": 1758710400000,
"state": "waiting"
}ReplySettingsAs configurações de resposta de uma publicação sua.
Campo Tipo Significado audiencestringQuem pode responder.all — Todos.following — Contas que você segue.mentioned — As mencionadas na publicação.nobody — Ninguém além de você. approvalbooleanSe as respostas aguardam sua aprovação. slowstringO modo lento.auto — Liga sozinho quando chegam muitas respostas.on — Sempre ligado.off — Desligado.
Exemplo {
"audience": "following",
"approval": false,
"slow": "auto"
}CountsQuantas respostas, curtidas e reposts um post tem.
Campo Tipo Significado repliesintegerRespostas, todos os níveis juntos. likesintegerCurtidas. repostsintegerReposts.
Exemplo {
"replies": 4,
"likes": 31,
"reposts": 2
}PollA enquete de um post.
Campo Tipo Significado optionsPollOption[]As respostas, em ordem. option num voto conta a partir de 0. totalintegerTodos os votos juntos, sempre presente. multiplebooleanSe dá para escolher mais de uma resposta. endsAtintegerou null Quando a enquete termina (null se roda sem fim). runningbooleanSe ainda dá para votar. resultsVisiblebooleanSe os votos por resposta são mostrados (veja votes). myVotesinteger[]As respostas que você escolheu, contando a partir de 0.
Exemplo {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
}PollOptionUma resposta de uma enquete.
Campo Tipo Significado textstringA resposta. votesintegerou null Seus votos (null enquanto os resultados estão retidos).
Exemplo {
"text": "Lavender",
"votes": 12
}ProfileBriefUm perfil como aparece dentro de outros objetos: como autor, numa busca.
Campo Tipo Significado idstringO id da conta: o que /relations e /conversations/{with} esperam. handlestringO nome curto, sem @, escrito como o membro escolheu. namestringO nome de exibição. Pode conter emojis, inclusive :name:. verifiedbooleanSe a conta é verificada. accountKindstringQue tipo de conta é.person — Uma pessoa.business — Uma empresa.association — Um clube ou associação.automated — Uma conta automatizada, como um bot.bot — Um bot de grupos, controlado por um programa com chave própria (desde 2.18).
Exemplo {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}ProfileUm perfil sozinho, com descrição e seguidores.
Todos os campos de ProfileBrief , e além disso:
Campo Tipo Significado aboutstringou null A descrição (null se não houver). websitestringou null O site do perfil (null se não houver). Desde 2.3. websiteVerifiedbooleanSe o site tem link de volta para este perfil com rel=me, verificado semanalmente. Desde 2.3. followersintegerQuantas contas a seguem. createdAtintegerou null Quando a conta foi criada (null enquanto o membro oculta a data de entrada; desde 2.9).
Exemplo {
"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
}MembershipO que sua conta é e pode no grupo.
Campo Tipo Significado leaderstringou null Se você fundou o grupo ou o colidera; null caso contrário.founder — Fundou.manager — Colidera. rolesstring[]Os ids das suas funções, a mais alta primeiro. permissionsstring[]O que você pode no grupo. mutedUntilintegerou null Até quando um silêncio te silencia aqui; null se não houver.
Exemplo {
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"permissions": [
"attach",
"invite",
"send",
"view"
],
"mutedUntil": null
}PersonUm membro, em resumo.
Campo Tipo Significado idstringO id da conta. handlestringO nome de usuário, sem @. namestringO nome exibido. botbooleanSe a conta é um bot (desde 2.18).
Exemplo {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
}ChannelUm canal de um grupo.
Campo Tipo Significado idstringO id. kindstringQue tipo de canal.feed — O canal do feed, cujas publicações também estão no feed público.chat — Um chat.voice — Um canal de voz; só se fala no app.hub — O hub do grupo: a sua página com o que ele é. Sempre lá, sem mensagens. namestringou null O nome sem #; null para o nome que o app dá em cada idioma. topicstringO tema; vazio se não houver. categoryChannelCategoryou null A categoria; null sem ela. unreadintegerQuantas mensagens de outros você ainda não leu, até 100. permissionsstring[]O que você pode neste canal. symbolChannelSymbolO seu símbolo; a forma já é a do grupo se ele definir uma.
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"kind": "chat",
"name": "harvest",
"topic": "What came in this week",
"category": {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Garden",
"symbol": {
"emoji": null,
"icon": null,
"image": null,
"color": null,
"shape": null
}
},
"unread": 3,
"permissions": [
"view",
"send"
],
"symbol": {
"emoji": "🌻",
"icon": null,
"image": null,
"color": "amber",
"shape": "circle"
}
}ChannelCategoryA categoria em que um canal está.
Campo Tipo Significado idstringO id. namestringO nome. symbolChannelSymbolO seu símbolo.
Exemplo {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Garden",
"symbol": {
"emoji": null,
"icon": null,
"image": null,
"color": null,
"shape": null
}
}ChannelSymbolO símbolo de um canal ou categoria: no máximo um de emoji, símbolo e imagem; senão, o sinal do seu tipo.
Campo Tipo Significado emojistringou null O emoji; null sem ele. iconstringou null O nome do símbolo do conjunto da app; null sem ele. imagestringou null O endereço da imagem própria; null sem ela. colorstringou null A cor do quadro; null para a do seu tipo. shapestringou null A forma do quadro; null para um círculo.
Exemplo {
"emoji": "🌻",
"icon": null,
"image": null,
"color": "amber",
"shape": "circle"
}ChannelMessageUma mensagem num canal de chat.
Campo Tipo Significado idstringO id. textstringou null O texto (null numa mensagem só de imagens ou voz). authorPersonQuem a escreveu. mediaMedia[]Suas imagens e mensagens de voz; vazio se não houver. replyTostringou null O id da mensagem que ela responde; null se nenhuma. roleColorstringou null A cor da função mais alta do autor que tem cor; null se não houver. threadOfstringou null A mensagem em cuja conversa esta responde; null no chat. threadCountintegerQuantas respostas tem a conversa desta mensagem. cardobjectou null O cartão de um bot: title, text, color e fields; senão null. buttonsobject[]Os botões de um bot: cada um id, label e style. createdAtintegerQuando foi escrita.
Exemplo {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "@jon the first tomatoes are ripe 🍅",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"replyTo": "72b3c4d5-e6f7-4081-92a3-b4c5d6e7f809",
"roleColor": "green",
"threadOf": null,
"threadCount": 3,
"card": null,
"buttons": [],
"createdAt": 1758631200000
}RoleUma função de um grupo.
Campo Tipo Significado idstringO id. namestringou null O nome; null para @everyone. everyonebooleanSe é @everyone, a função de todos os membros. colorstringou null A cor: indigo, violet, rose, amber, green ou teal; null sem cor. permissionsstring[]Suas permissões. membersintegerQuantos a têm; em @everyone todos os membros. editablebooleanSe sua conta pode mudá-la. selfablebooleanSe os membros assumem e deixam a função por conta própria.
Exemplo {
"id": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"name": "Gardeners",
"everyone": false,
"color": "green",
"permissions": [
"attach",
"invite",
"send",
"view"
],
"members": 24,
"editable": true,
"selfable": false
}GroupMemberUm membro de um grupo com suas funções.
Todos os campos de Person , e além disso:
Campo Tipo Significado leaderstringou null Se o membro fundou o grupo ou o colidera; null caso contrário.founder — Fundou.manager — Colidera. rolesstring[]Os ids das funções dele, a mais alta primeiro. mutedUntilintegerou null Até quando o membro está silenciado, se a sua conta pode silenciar; senão null.
Exemplo {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false,
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"mutedUntil": null
}ChannelOverrideO que uma função pode de outro modo num canal do que no grupo.
Campo Tipo Significado rolestringO id da função. allowstring[]O que ela pode a mais aqui. denystring[]O que ela não pode aqui.
Exemplo {
"role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"allow": [
"send"
],
"deny": []
}BellO sino de um grupo.
Campo Tipo Significado levelstringQuais notificações chegam.all — Cada publicação nova no canal do feed, e @everyone.important — As publicações da liderança no canal do feed, e @everyone.off — Nada, a não ser que mencionem você com @nome.
Exemplo {
"level": "important"
}InviteLinkUm link de convite de um grupo.
Campo Tipo Significado codestringO código. urlstringO endereço para compartilhar. createdByPersonou null Quem o criou; null se a conta foi apagada. createdAtintegerQuando foi criado. expiresAtintegerou null Até quando vale; null sem fim. usesintegerQuantas vezes foi usado. maxUsesintegerou null Quantas vezes pode ser usado; null sem limite.
Exemplo {
"code": "k7Qm2xPa",
"url": "https://tellmelo.com/groups?join=k7Qm2xPa",
"createdBy": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"createdAt": 1758624000000,
"expiresAt": 1759228800000,
"uses": 3,
"maxUses": 10
}InvitePreviewPara onde leva um link de convite.
Campo Tipo Significado communityInviteGroupO grupo. memberbooleanSe sua conta já é membro.
Exemplo {
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
},
"member": false
}InviteGroupO grupo por trás de um link de convite.
Campo Tipo Significado idstringO id. namestringO nome. membersintegerQuantos membros tem. rulesstring[]Suas regras, aceitas ao entrar; vazio se não houver.
Exemplo {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
}JoinedA entrada com um link de convite.
Campo Tipo Significado communitystringO id do grupo.
Exemplo {
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}LogEntryUma entrada do registro da liderança.
Campo Tipo Significado idstringO id. actionstringO que aconteceu.post_removed — Uma publicação.member_removed — Um membro removido, antes da 2.16 (fora por 90 dias).message_removed — Uma mensagem num canal de chat.member_kicked — Uma expulsão.member_banned — Um banimento.member_unbanned — Um banimento retirado.member_timed_out — Um silêncio temporário.timeout_lifted — Um silêncio retirado.voice_muted — Silenciado em um canal de voz.voice_removed — Desconectado de um canal de voz.bot_added — Um bot entrou no grupo (desde 2.18).bot_removed — Um bot foi removido do grupo (desde 2.18). memberPersonQuem foi afetado. reasonstringO motivo; vazio em mensagens e quando nenhum foi dado. bystringou null O nome de quem fez; null se a conta foi apagada. createdAtintegerQuando.
Exemplo {
"id": "8f7e6d5c-4b3a-4291-8f7e-6d5c4b3a2918",
"action": "message_removed",
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"reason": "",
"by": "Mara 🌻",
"createdAt": 1758710400000
}BanUm banimento de um grupo.
Campo Tipo Significado memberPersonQuem está banido. untilintegerou null Até quando; null até ser retirado. createdAtintegerou null Desde quando; null em banimentos de antes da 2.16. bystringou null O nome de quem baniu; null se desconhecido.
Exemplo {
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"until": 1759228800000,
"createdAt": 1758624000000,
"by": "Mara 🌻"
}UntilQuando um silêncio ou banimento termina.
Campo Tipo Significado untilintegerou null O momento; null para um banimento sem fim ou um silêncio retirado.
Exemplo {
"until": 1758624600000
}TagUma tag e quantos posts a usam.
Campo Tipo Significado tagstringA tag, sem #. postsintegerQuantos posts recentes a usam.
Exemplo {
"tag": "garden",
"posts": 58
}SearchResultTrês listas, possivelmente vazias.
Campo Tipo Significado postsPost[]Posts que correspondem, os mais recentes primeiro. profilesProfileBrief[]Perfis que correspondem, pelo nome curto. tagsTag[]Tags que correspondem, as mais usadas primeiro.
Exemplo {
"posts": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "The bees are back in the garden 🐝 #garden",
"kind": "poll",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
},
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening"
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"profiles": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"tags": [
{
"tag": "garden",
"posts": 58
}
]
}EmojiUm emoji desta instância.
Campo Tipo Significado namestringO nome, como aparece entre os dois-pontos. urlstringO endereço da imagem, relativo a esta instância.
Exemplo {
"name": "tellmelo",
"url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}NotificationUma notificação. Uma linha pode reunir vários eventos do mesmo tipo.
Campo Tipo Significado idstringO id da notificação. kindstringO que aconteceu.reply — Alguém te respondeu.like — Alguém curtiu seu post.reply_like — Alguém vota positivamente na sua resposta.duel — Alguém desafia você para o Duelo de feeds, ou seu desafio foi jogado.reply_pick — O autor de uma publicação destaca sua resposta.repost — Alguém repostou seu post.follow — Alguém segue você.mention — Alguém te mencionou.group_mention — Alguém mencionou um grupo que você lidera; text é o nome dele.channel_mention — Alguém mencionou você num canal de chat de um dos seus grupos, inclusive com @everyone; o membro é o actor, a frase nomeia canal e grupo, nunca a mensagem.message — Alguém te escreveu uma mensagem.scheduled — Um post seu agendado foi publicado.video — Um post seu que aguardava o vídeo foi publicado ou voltou a ser um rascunho.reminder — Um lembrete sobre um post salvo está na hora.report — O que aconteceu com uma denúncia que você enviou.moderation — Uma decisão sobre a sua conta: advertência, restrição, recurso.team — Novo trabalho para a equipe (só proprietários, admins e moderação).reward — Uma recompensa por convite está para acabar ou acabou.gift — Um presente da equipe: um plano, ou faíscas para você ou para um grupo que você lidera.present — Um presente de um membro: faíscas ou tempo de plano; o membro é o actor.spark — Faíscas expiram em breve, ou um grupo que lideras já não tem faíscas suficientes para as suas vantagens.loyalty — Sobre o ritmo de fidelidade: uma semana ativa conta ou falta um dia, uma recompensa é nova ou está para sumir.impact — Como foram seus posts de doze horas depois de um dia, em uma notificação.discovery — Um convite para o programa Descoberto, ou que um lugar nele começa ou termina.group_post — Um novo post em um grupo cujo sino toca para isso.group_moderation — A liderança de um grupo removeu um dos seus posts, ou você, do grupo.group — Algo que um membro fez com você em um grupo: convidou, aceitou ou recusou, colocou na coadministração, transferiu ou dissolveu o grupo, ou se candidatou ao seu grupo; o membro é o actor, e o nome do grupo fecha a frase.coauthor — Alguém convidou você como coautor de um post.partner — Um lembrete do programa de parceiros ou o fim do selo de parceiro.news — Um artigo novo em uma região que você segue.pick — Um post seu está concorrendo a post da semana ou do ano, ou venceu.advent — Uma nova porta do calendário do Advento está aberta, uma foi aberta ou a de hoje ainda espera.team_message — Uma mensagem que a equipe do tellmelo escreveu a membros escolhidos.challenge — Começou um novo desafio da semana.nudge — Uma única vez: uma publicação que ninguém respondeu ainda, ou o desafio em curso.signin — Um computador pergunta se você está entrando nele agora. textstringou null Só para denúncias e moderação: o texto relacionado; caso contrário, null. actorActorQuem fez. postIdstringou null O post de que se trata (null se não se trata de nenhum). readbooleanSe foi marcada como lida. moreintegerQuantos outros eventos esta linha representa, além do citado. createdAtintegerQuando aconteceu pela primeira vez. updatedAtintegerQuando reuniu outro evento pela última vez. A lista é ordenada por isto.
Exemplo {
"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
}ActorQuem disparou uma notificação.
Campo Tipo Significado handlestringO nome curto. namestringO nome de exibição.
Exemplo {
"handle": "jon",
"name": "Jon"
}ConversationUma linha da sua caixa de entrada.
Campo Tipo Significado withstringO id da outra conta: o que /conversations/{with}/messages espera. handlestringO nome curto da pessoa. namestringO nome de exibição da pessoa. excerptstringou null O início da última mensagem (null se não tiver texto). truncatedbooleanSe o trecho foi cortado. fromMebooleanSe a última mensagem é sua. lastMessageIdstringO id da última mensagem. unreadintegerQuantas mensagens da pessoa você ainda não leu. updatedAtintegerQuando a última mensagem foi escrita.
Exemplo {
"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
}MessageUma mensagem numa conversa.
Campo Tipo Significado idstringO id da mensagem. textstringou null O texto (null para uma mensagem que é só imagens). fromstringO id da conta que a escreveu. tostringO id da conta para quem foi escrita. readbooleanSe o destinatário a leu. mediaMedia[]Suas imagens; vazio se não houver. replyTostringou null O id da mensagem a que esta responde (null se não responde a nenhuma). Desde 2.2. createdAtintegerQuando foi enviada.
Exemplo {
"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
}PlannedMessageUma mensagem sua agendada para mais tarde.
Campo Tipo Significado idstringO id da mensagem agendada. tostringO id da conta que a recebe. textstringou null O texto, null com criptografia de ponta a ponta. sendAtintegerQuando ela é enviada. statestringO estado dela.waiting — Aguarda o horário.held — Retida porque o plano terminou. Você pode enviá-la ou apagá-la.failed — Não pôde ser enviada.
Exemplo {
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"text": "Happy birthday! 🎂",
"sendAt": 1758710400000,
"state": "waiting"
}ScheduledPostUma publicação sua que ainda não saiu.
Campo Tipo Significado idstringO id da publicação. textstringou null O texto. communityIdstringou null O grupo em que sai (null fora de grupos). publishAtintegerou null Quando sai (null enquanto espera outra coisa). deleteAtintegerou null Quando se apaga sozinha (null: nunca). waitingForstringO que está esperando.time — A hora dela.review — A aprovação de um texto escrito para revisão.check — A verificação da moderação automática.payment — O pagamento dos presentes. createdAtintegerQuando foi escrita.
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "Market day tomorrow – see you at the bee stand! #garden",
"communityId": null,
"publishAt": 1758710400000,
"deleteAt": null,
"waitingFor": "time",
"createdAt": 1758624000000
}CollectionUma coleção de publicações salvas.
Campo Tipo Significado idstringO id da coleção. namestringO nome dela. countintegerQuantas publicações há nela.
Exemplo {
"id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
"name": "Recipes",
"count": 12
}EventUm próximo evento de um perfil.
Campo Tipo Significado idstringO id do evento. titlestringO título. startsAtintegerInício. endsAtintegerou null Fim, null sem fim. placestringou null O local. descriptionstringou null A descrição. signupsEventSignupsou null As inscrições, null sem inscrição.
Exemplo {
"id": "2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b",
"title": "Seed swap",
"startsAt": 1758883200000,
"endsAt": 1758890400000,
"place": "Community garden",
"description": "Bring seeds, take seeds.",
"signups": {
"count": 14,
"going": true
}
}EventSignupsQuantas pessoas se inscreveram.
Campo Tipo Significado countintegerO número de inscrições. goingbooleanSe você está inscrito.
Exemplo {
"count": 14,
"going": true
}EventSignupAlguém que se inscreveu em um evento seu.
Campo Tipo Significado idstringO id da conta. handlestringO nome de usuário. namestringO nome exibido. atintegerQuando se inscreveu.
Exemplo {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"at": 1758624000000
}PictureUma imagem enviada.
Campo Tipo Significado idstringO id da imagem. urlstringOnde ela pode ser vista.
Exemplo {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}EmojiPictureA imagem enviada de um emoji.
Campo Tipo Significado idstringO id da imagem. urlstringOnde ela pode ser vista. animatedbooleanSe ela se move.
Exemplo {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}OwnEmojiUm dos seus próprios emojis.
Campo Tipo Significado namestringO nome dele. urlstringA imagem dele. animatedbooleanSe ele se move. restingbooleanEm pausa porque o plano agora permite menos emojis: ele fica, mas não pode ser usado.
Exemplo {
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}GroupEmojiUm emoji de um grupo.
Campo Tipo Significado namestringO nome dele. urlstringA imagem dele. animatedbooleanSe ele se move.
Exemplo {
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}BotEventUm evento num grupo do bot.
Campo Tipo Significado idstringO seu número, crescente; é com ele que se continua (since, Last-Event-ID). typestringO que aconteceu.message.created — Uma mensagem foi escrita.message.deleted — Uma mensagem foi apagada.member.joined — Alguém entrou.member.left — Alguém saiu ou foi removido.voice.joined — Alguém entrou num canal de voz.command — Alguém usou um comando do bot.interaction — Alguém premiu um botão numa mensagem do bot. communitystringO grupo. channelstringou null O canal; null para o grupo inteiro. createdAtintegerQuando aconteceu. dataobjectO que o acompanha, conforme o tipo: message, member (com reason), command ou interaction.
Exemplo {
"id": "4711",
"type": "message.created",
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"createdAt": 1758634800000,
"data": {
"message": {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "/dice 6",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": 0,
"replyTo": null,
"threadOf": null,
"createdAt": 1758634800000
}
}
}BotCommandUm comando de um bot.
Campo Tipo Significado namestringO seu nome, sem «/». descriptionstringO que faz.
Exemplo {
"name": "dice",
"description": "Rolls a die"
}VoiceSeatUm lugar num canal de voz.
Campo Tipo Significado urlstringO endereço do servidor de média (LiveKit). tokenstringO token para este canal, válido alguns minutos. iceServersobject[]Os servidores STUN e TURN para a ligação. speakbooleanSe o bot pode enviar som ali. videobooleanSe o bot pode enviar vídeo ali.
Exemplo {
"url": "wss://voice.example.org",
"token": "eyJhbGciOiJIUzI1NiJ9…",
"iceServers": [
{
"urls": [
"stun:turn.example.org:3478"
]
}
],
"speak": true,
"video": false
}WebhookUm dos seus webhooks.
Campo Tipo Significado idstringO id do webhook. urlstringO endereço dele. kindsstring[]Sobre o que ele é avisado. activebooleanSe ele recebe entregas. Depois de muitas falhas seguidas, é desligado. lastStatusintegerou null O status HTTP da última entrega. lastAtintegerou null Quando foi a última entrega. failuresintegerFalhas seguidas.
Exemplo {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"url": "https://example.org/tellmelo-hook",
"kinds": [
"reply",
"mention"
],
"active": true,
"lastStatus": 200,
"lastAt": 1758624000000,
"failures": 0
}WebhookCreatedUm webhook novo com seu segredo.
Campo Tipo Significado idstringO id do webhook. secretstringO segredo das assinaturas, só desta vez.
Exemplo {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"secret": "whsec_3f9a…"
}GroupBotUm bot de um grupo.
Campo Tipo Significado idstringO id da conta do bot. handlestringO identificador dele. namestringO nome dele. descriptionstringO que ele faz, nas palavras do dono. permissionsstring[]O que a função dele no grupo permite.
Exemplo {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "gardenbot",
"name": "Garden bot",
"description": "Reminds the group of watering days.",
"permissions": [
"send",
"view"
]
}VoiceRoomUm canal de voz com as pessoas dentro.
Campo Tipo Significado channelstringO id do canal. peopleVoicePerson[]Quem está nele agora.
Exemplo {
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"people": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"muted": false,
"deaf": false,
"camera": false,
"screen": true
}
]
}VoicePersonAlguém em um canal de voz.
Campo Tipo Significado idstringO id da conta. handlestringO identificador. namestringO nome exibido. mutedbooleanSe o microfone está desligado. deafbooleanSe a pessoa não ouve nada (por escolha própria). camerabooleanSe a câmera está ligada. screenbooleanSe a tela está sendo compartilhada.
Exemplo {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"muted": true,
"deaf": false,
"camera": false,
"screen": false
}GiftDropPresentes numa publicação – nunca com os nomes de quem os pegou.
Campo Tipo Significado itemstringO que uma vaga contém.plan — Meses de plano (Apoiador).sparks — Faíscas. quantityintegerQuanto cada vaga contém: meses ou faíscas. placesintegerQuantas vagas há no total. leftintegerQuantas ainda estão livres. audiencestringQuem pode pegar.all — Todos.followers — Só seguidores de quem presenteia.group — Só membros do grupo da publicação. newAccountsbooleanSe contas com menos de 7 dias também podem pegar. statusstringEm que pé está.awaiting_payment — Aguardando pagamento; a publicação ainda não saiu.open — Ainda há vagas para pegar.closed — Acabou: tudo pego, pagamento reembolsado ou publicação apagada. claimedbooleanSe você mesmo já tem uma vaga (sempre false nas rotas públicas).
Exemplo {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
}OwnGiftDropSeus presentes numa publicação, com a publicação e o pagamento.
Todos os campos de GiftDrop , e além disso:
Campo Tipo Significado postIdstringA publicação em que estão. fundingstringComo foram pagos.free — Grátis.quota — Da cota.payment — Pago. createdAtintegerQuando foram criados.
Exemplo {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": false,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota",
"createdAt": 1758624000000
}QuotaO que há numa cota.
Campo Tipo Significado monthsintegerMeses de plano ainda para dar. sparksintegerFaíscas ainda para dar. looksQuotaLook[]Visuais do estoque ainda para dar (desde 2.13).
Exemplo {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}QuotaLookUm visual no estoque de um parceiro, com os exemplares que restam (desde 2.13).
Campo Tipo Significado idstringO ID do visual; ao dá-lo, envie-o como itemId. namestringO nome do visual. kindstringO tipo de visual.frame — Moldura de perfil.background — Efeito de capa.card — Card de perfil. quantityintegerQuantos exemplares restam.
Exemplo {
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}QuotaGiftUm presente da cota.
Campo Tipo Significado itemstringO que foi dado.plan — Meses de plano (Apoiador).sparks — Faíscas.shop — Um visual do estoque (desde 2.13). quantityintegerQuanto. itemIdstringou null O visual dado quando item é shop; caso contrário, null. recipientActorPara quem. createdAtintegerQuando.
Exemplo {
"item": "plan",
"quantity": 3,
"itemId": null,
"recipient": {
"handle": "jon",
"name": "Jon"
},
"createdAt": 1758627600000
}EmbedOs endereços para outros sites. Eles funcionam sem chave.
Campo Tipo Significado pagestringO player para um <iframe>. filestringO arquivo MP4 para um player próprio. posterstringA imagem de prévia. codestringO código pronto para incorporar.
Exemplo {
"page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
"poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
"code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
}UploadStartedUm envio iniciado.
Campo Tipo Significado uploadstringO ID deste envio. pieceintegerO tamanho máximo de um pedaço, em bytes.
Exemplo {
"upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
"piece": 4194304
}UploadPieceUm pedaço que chegou.
Campo Tipo Significado receivedintegerQuantos bytes chegaram. itemMediaItemou null Depois do último pedaço, o novo GIF ou vídeo; senão, null.
Exemplo {
"received": 4194304,
"item": null
}CreatedA resposta de uma escrita que criou algo.
Campo Tipo Significado idstringO id do que foi criado. scheduledForintegerou null Quando aparece, se a publicação foi agendada (senão null). deleteAtintegerou null Quando se exclui sozinho, se isso foi definido (senão null).
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}DropCreatedA resposta quando uma publicação com presentes foi criada.
Campo Tipo Significado idstringO id da nova publicação. fundingstringComo os presentes são pagos.free — Grátis.quota — Da cota.
Exemplo {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota"
}MadeO que acabou de ser criado ou alterado.
Campo Tipo Significado idstringO id; num link de convite, o código dele.
Exemplo {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}OkA resposta de uma escrita que não tem nada a devolver.
Campo Tipo Significado okbooleanSempre true.
Exemplo {
"ok": true
}A descrição legível por máquina A tabela por trás desta página está disponível como OpenAPI em https://api.tellmelo.com/v2/openapi.json.
https://api.tellmelo.com/v2/openapi.jsonGIFs e vídeos em outros sites O que um membro compartilha e também permite em outros sites, qualquer site pode mostrar: a busca com anywhere=true encontra, e o embed dele tem os endereços. Se o membro retirar, ele some de lá em poucos minutos.
Envio em pedaços Primeiro inicie, depois envie o arquivo em pedaços. Divida um arquivo maior em pedaços de piece bytes, com offset na posição de cada um. Depois do último pedaço vem o GIF ou vídeo pronto.
curl -X POST -H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"kind":"gif","size":2400000,"name":"Happy bees","shared":true,"anywhere":true}' \
"https://api.tellmelo.com/v2/media/uploads"
→ { "upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b", "piece": 4194304 }
curl -X PUT -H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/octet-stream" \
--data-binary @bees.gif \
"https://api.tellmelo.com/v2/media/uploads/e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b?offset=0"
→ { "received": 2400000, "item": { "id": "…", "embed": { … } } }Incorporar O player mostra o GIF em loop ou o vídeo com controles e, abaixo, o nome e quem compartilhou. Coloque o código de embed.code na página:
<iframe src="https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918" width="480" height="300" title="Happy bees" style="border:0;max-width:100%" loading="lazy" allowfullscreen></iframe>Fóruns e programas que conhecem oEmbed buscam o código sozinhos quando recebem o endereço do player:
https://tellmelo.com/api/oembed?url=https%3A%2F%2Ftellmelo.com%2Fmedia-embed%2Fb2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918A chave fica no seu servidor, nunca no código de uma página web. Busque e envie pelo seu servidor; os endereços em embed não precisam de chave.
Seletor de GIFs para o seu site Com uma chave de site (Área de desenvolvedores → Seletor de GIFs para o seu site ), seu site ganha uma busca pronta: duas linhas na página, e um clique no botão abre a busca. A chave é pública e só funciona nos endereços que você informar para ela. O seletor só mostra o que os membros permitiram em outros sites.
<script src="https://tellmelo.com/picker.js" data-key="tmsk_…" defer></script>
<button type="button" data-tellmelo-picker>GIF</button>Quando algo é escolhido, o botão dispara tellmelo:pick com o item: code para incorporar, file, poster, name e author. Com data-target="#field", ele coloca o code direto em um campo de texto; com data-kind="video", ele busca vídeos. Se você incorporar o arquivo por conta própria, mostre o nome da pessoa que o compartilhou.
document.addEventListener('tellmelo:pick', (event) => {
const { code, file, name, author } = event.detail;
});Entrar com tellmelo Outros sites deixam membros entrarem com a conta do tellmelo via OpenID Connect (código de autorização com PKCE). O site recebe só o nome de usuário, o e-mail confirmado e um identificador próprio por membro (sub).
Você pede um app em “Área de desenvolvedores → Entrar com tellmelo”. A equipe confere cada app; depois você vê ali o ID do cliente e, em apps com servidor, cria o segredo do cliente, mostrado uma única vez.
Tudo o que uma biblioteca precisa está no documento de descoberta:
https://tellmelo.com/.well-known/openid-configurationEnvie o membro para /oauth/authorize com response_type=code, client_id, redirect_uri (exatamente como registrado), scope=openid profile email, state, nonce e code_challenge com code_challenge_method=S256. Troque o código em até um minuto em /oauth/token: grant_type=authorization_code, code, redirect_uri e code_verifier; apps com servidor enviam também o segredo, com autenticação Basic ou no formulário. O token de ID (RS256, chaves em /oauth/jwks) contém sub, com profile também preferred_username, com email também email e email_verified. O token de acesso vale 10 minutos e só lê /oauth/userinfo. https://tellmelo.com/oauth/authorize?response_type=code&client_id=tm_…
&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback&scope=openid%20profile%20email
&state=…&nonce=…&code_challenge=…&code_challenge_method=S256
curl -u "tm_…:tms_…" https://tellmelo.com/oauth/token \
-d grant_type=authorization_code -d code=… \
-d redirect_uri=https://example.com/callback -d code_verifier=…{
"iss": "https://example.social",
"sub": "Xq3vR0b8yJm1cW4tZ2kPn6sLd9fHa7gE5uTo0iBeVxY",
"aud": "tm_5f2c9e1a7b3d4c6e8f0a1b2c",
"iat": 1760432400,
"exp": 1760433000,
"nonce": "n-0S6_WzA2Mj",
"at_hash": "HK6E_P6Dh8Y93mRNtsDB1Q",
"preferred_username": "anna",
"email": "anna@example.com",
"email_verified": true
}Não há tokens de atualização: o tellmelo faz o login e não dá acesso duradouro. Se um membro remove o site ou a equipe suspende o app, /oauth/userinfo responde 401 na hora. prompt=none verifica sem página, prompt=consent pergunta de novo.
O que esperamos Valem as mesmas regras de sempre: nada de assédio, nada de spam, nada de conteúdo sobre o qual você não tem direitos. Você é responsável pelo que a sua chave publica.
Mostre GIFs e vídeos de outros no seu site só se tiverem embed, por esses endereços e com o nome de quem compartilhou. Se algo não estiver mais disponível, pare de mostrar. Não copie os arquivos para uma coleção própria.