Indice Voglio … Scegli cosa hai in mente; sotto ci sono solo i passi per farlo. Il riferimento completo segue più in basso.
creare un bot collegare la mia app l’accesso con tellmelo sul mio sito incorporare GIF e videoCrea il bot in uno dei tuoi gruppi, nel menu del gruppo in «Bot → I miei bot», con immagine, nome e @nome. Il suo token lo vedi una sola volta. Condividi il suo link «Aggiungi bot» o invialo alla directory dei bot, dove compare dopo il controllo del team; chi può gestire i ruoli in un gruppo lo accoglie con i permessi che approva. Ricevi ciò che accade nei suoi gruppi come flusso (GET /v2/events/stream) o al tuo indirizzo, e scrivi con POST /v2/channels/{id}/messages. Di più in Bot . Registra comandi (PUT /v2/me/commands) e rispondi con schede e pulsanti; un bot suona musica con un posto in un canale vocale (POST /v2/channels/{id}/voice). Panoramica Con v2 i tuoi programmi parlano con tellmelo: una chiave per richiesta, JSON in risposta, ogni elenco si sfoglia allo stesso modo. Valgono le stesse regole dell’app.
Ogni percorso inizia con https://api.tellmelo.com/v2. Richieste e risposte sono JSON in UTF-8. Nomi dei campi, codici e valori sono in inglese e restano in inglese. Una chiave agisce come il tuo account: ciò che non vedi nell’app, non può leggerlo nemmeno lei. https://api.tellmelo.com/v2Avvio rapido Crea una chiave in «Area sviluppatori → API» e copiala. Viene mostrata una sola volta. Interroga la radice con la chiave. La risposta indica la versione, i permessi della chiave e le richieste rimaste in questo minuto. Ogni percorso funziona allo stesso modo: chiave nell’intestazione, JSON in risposta, items e next per gli elenchi. 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"
}Poi: /me per il tuo profilo, /posts per i post pubblici, /feed per il tuo feed.
Prova Scegli un compito, compila i campi e copia la richiesta o inviala da qui. La scrittura chiede prima conferma. Il codice legge la chiave da TELLMELO_KEY.
Operazione 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 Versione dell’API e nome di questa istanza.
curl JavaScript Python
Copiacurl \
-H "Authorization: Bearer $TELLMELO_KEY" \
"https://api.tellmelo.com/v2"La tua chiave Fino a 10 chiavi per account, ognuna con un nome, permessi propri e, se vuoi, una data di scadenza. Una chiave inizia con tm_key_ e viene mostrata una sola volta. Persa? Rinnovala; il vecchio valore smette di funzionare.
La crei in «Area sviluppatori → API». Viaggia nell’intestazione della richiesta:
curl -H "Authorization: Bearer tm_key_…" \
https://api.tellmelo.com/v2/postsOppure, se è più comodo, in un’intestazione propria:
curl -H "X-Tellmelo-Key: tm_key_…" https://api.tellmelo.com/v2Non nell’URL: finirebbe nei log e nella cronologia del browser.
La stessa chiave carica le immagini: ogni url punta a /api/media; invia la chiave anche lì nell’intestazione.
curl -H "Authorization: Bearer tm_key_…" \
-o picture.webp "https://api.tellmelo.com/media?id=…"Che cosa può una chiave Una chiave può sempre leggere e, se lo permetti, anche scrivere, regalare, caricare media e gestire gruppi. Ogni percorso indica cosa gli serve:
read : leggere. Post pubblici, profili, gruppi e tag, oltre al tuo feed, alle notifiche, ai messaggi e ai canali dei tuoi gruppi.write : agire. Pubblicare, rispondere, votare, inviare messaggi, scrivere nella chat di un gruppo, seguire, unirsi, bloccare, segnare le notifiche come lette.gifts : regalare. Dal contingente di un partner a un membro, e regali sotto un nuovo post. Un permesso a parte, così una chiave pensata per pubblicare non può mai regalare nulla.media : la tua libreria media. Caricare, modificare, condividere e rimuovere GIF e video. Un permesso a parte, perché i caricamenti costano punti video dell’account. Per trovare GIF e video condivisi basta read .groups : gestire gruppi. Ruoli, canali, categorie, link di invito, il canale feed, le rimozioni, i silenziamenti, le espulsioni e i ban, per quanto il tuo account possa nel gruppo. Un permesso a sé, così una chiave per pubblicare non cambia mai chi può fare cosa in un gruppo.Che cosa nessuna chiave può Nessuna chiave arriva a password, indirizzo e-mail, tipo di account, luogo, ruolo, eliminazione, accessi, dispositivi di notifica o altre chiavi, né all’amministrazione o alla guida dei gruppi. Ciò che protegge la password, nessuna chiave lo può.
Bot Un bot è un account a sé, del tipo bot, per i gruppi: senza password né e-mail, gestito dal tuo programma con una propria chiave. Usa la stessa API di ogni account e nei gruppi può fare ciò che il suo ruolo consente.
In uno dei tuoi gruppi apri il menu del gruppo e in «Bot → I miei bot» crea un bot con immagine, copertina, nome, nome utente e descrizione. Il token viene mostrato una sola volta; ha i permessi read, write, media e groups. Condividi il link del bot o invialo alla directory dei bot; vi compare non appena il team lo ha controllato. Chi può gestire i ruoli in un gruppo sceglie i permessi; il bot entra e riceve un ruolo proprio. Il tuo programma invia il token come Authorization: Bearer …, legge gli eventi dei suoi gruppi come flusso e lavora con le rotte in Bot , Canali e Gruppi . Un piccolo bot che legge gli eventi come flusso e risponde al comando /ping con pong, solo per chi ha chiesto:
// 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 });
}
}
}Lo stesso bot in Python, che prende gli eventi pagina per pagina:
# 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)Cosa può fare un bot in un gruppo lo decide il suo ruolo lì, non il token. Il ruolo porta il suo nome; il gruppo cambia i permessi nei ruoli delle impostazioni del gruppo e rimuove il bot nel menu del gruppo, in «Bot → In questo gruppo». Fino a 5 bot per account; per gruppo quanti ne consentono i suoi vantaggi. Un bot scrive al massimo 30 messaggi al minuto per gruppo, non si trova con la ricerca e scrive solo a chi gli ha scritto per primo. Valgono i limiti . Gli eventi arrivano anche a un tuo indirizzo HTTPS (firmati come i webhook, con nuovi tentativi). Inoltre: comandi (PUT /v2/me/commands) con risposte per tutti o solo per chi ha chiesto, schede e pulsanti nei messaggi e musica nei canali vocali (POST /v2/channels/{id}/voice): tutto in Bot . Pagine Ogni elenco prende limit e cursor e risponde con items e next. Rimanda next come cursor per la pagina successiva; se next è vuoto, hai finito. Il cursore è opaco: non scomporlo e non costruirlo.
{ "items": [ … ], "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx" }
curl -H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts?limit=20&cursor=MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"Senza limit, 20 voci, al massimo 50. Alcuni elenchi non si sfogliano; il loro next è sempre null.
Solo ciò che è nuovo Ogni risposta porta un ETag. Rimandalo come If-None-Match la volta dopo: se non è cambiato nulla, ricevi 304 senza corpo.
ETag: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"
If-None-Match: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc" → 304Eccezioni: /feed non ha ETag perché il suo ordine cambia di continuo, e le scritture non rispondono mai 304.
Limiti Una chiave può fare 120 richieste al minuto, 600 con l’abbonamento «Organizzazione», salvo diversa decisione dell’amministrazione. Oltre arriva 429 e non è stato eseguito nulla. Aspetta un minuto e rimanda la richiesta.
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1758624060Le scritture contano anche contro i limiti dell’app, ad esempio quanti post in pochi minuti. Anche allora arriva 429 con rate_limited.
Quando qualcosa non va Gli errori arrivano come JSON: un codice inglese fisso in error per il tuo programma e una frase in message per le persone, con il codice di stato corrispondente. Confronta solo il codice; la frase può cambiare.
{ "error": "rate_limited",
"message": "Too many requests. Try again in a minute.",
"limit": 120 }Alcuni errori portano un campo in più: docs con un 401 per chiave mancante, limit con un 429.
Stato Codice Significato 400bad_requestLa richiesta non è leggibile, manca un campo obbligatorio o un valore non è ammesso. 401key_missingNessuna chiave nell’intestazione. 401key_invalidLa chiave non vale: sbagliata, sostituita o l’account è bloccato. 401unauthorizedRespinta come non autenticata, per un motivo diverso dalla chiave. 403scope_missingAlla chiave manca il permesso necessario, di solito write. 403account_data_lockedI dati dell’account come password, indirizzo e-mail o eliminazione sono preclusi alle chiavi. 403forbiddenIl tuo account non può farlo, ad esempio per un permesso revocato o un blocco. 403timed_outUn silenziamento zittisce ora il tuo account in questo gruppo. 404unknown_pathQuesto percorso non esiste, o non con questo metodo. 404not_foundNon trovato, oppure non puoi vederlo. 409conflictSi scontra con qualcosa che c’è già, per esempio un nome già preso. 409feed_offIl canale feed di questo gruppo è disattivato. 413too_largeTroppo grande per questa istanza. 422unprocessableLeggibile, ma non possibile in questa forma. 429rate_limitedTroppe richieste. Non è successo nulla; aspetta e riprova. 500internal_errorQualcosa è andato storto sul server.
Versioni La versione è nel percorso. Finché c’è v2, percorsi e campi restano uguali; le novità si aggiungono soltanto.
Le aggiunte alzano il secondo numero. Ogni percorso indica da quando esiste.
https://api.tellmelo.com/v1/ non c’è più: i vecchi percorsi rispondono 410 e indicano nel corpo la nuova strada.
Percorsi Tutti i percorsi a colpo d’occhio, poi ognuno con un esempio.
Percorso Diritto A che serve L’ingresso GET /v2readVersione dell’API e nome di questa istanza. Post GET /v2/postsreadI post pubblici, i più recenti per primi. GET /v2/posts/{id}readUn singolo post, tramite il suo id. POST /v2/postswritePubblicare un post. DELETE /v2/posts/{id}writeTogliere un tuo post. GET /v2/me/scheduledreadI tuoi post non ancora usciti, e cosa stanno aspettando. POST /v2/posts/{id}/schedulewriteCambiare quando esce un post programmato, o quando un post si cancella da solo. POST /v2/posts/{id}/editwriteModificare il testo di un tuo post. GET /v2/posts/{id}/reply-settingsreadChi può rispondere al tuo post, se le risposte attendono approvazione e la modalità lenta. PUT /v2/posts/{id}/reply-settingswriteCambiare le impostazioni di risposta del tuo post. Ciò che non indichi resta com’è. POST /v2/posts/{id}/coauthorwriteAccettare o rifiutare un invito come coautore. DELETE /v2/posts/{id}/coauthorwriteRitirarti come coautore o, come autore, togliere il coautore dal post. POST /v2/posts/{id}/pinwriteFissare il tuo post in cima al profilo, o toglierlo. Risposte GET /v2/posts/{id}/repliesreadLe risposte a un post, senza account bloccati. POST /v2/posts/{id}/replieswriteRispondere a un post. POST /v2/replies/{id}/editwriteModificare il testo di una tua risposta. DELETE /v2/replies/{id}writeRimuovere una tua risposta. POST /v2/replies/{id}/likewriteVotare positivamente una risposta (un mi piace è un voto positivo da quando le risposte si votano) o ritirare il voto; un voto negativo resta. POST /v2/replies/{id}/votewriteVotare una risposta in su o in giù, o ritirare il tuo voto. Risponde con il tuo voto e il punteggio risultante. POST /v2/replies/{id}/pickwriteMettere in evidenza come migliore una risposta sotto il tuo post, o togliere l’evidenza. GET /v2/posts/{id}/replies/waitingreadLe risposte in attesa di approvazione sotto un post: tutte sotto il tuo, altrimenti solo le tue. POST /v2/replies/{id}/decidewriteApprovare o rifiutare una risposta in attesa sotto il tuo post. Se rifiutata, viene eliminata. GET /v2/posts/{id}/replies/plannedreadLe tue risposte programmate per più tardi sotto un post. PUT /v2/me/planned-replies/{id}writeCambiare il testo o l’ora di una risposta programmata. Una non riuscita torna in attesa. POST /v2/me/planned-replies/{id}/sendwriteInviare subito una risposta programmata. DELETE /v2/me/planned-replies/{id}writeEliminare una risposta programmata. Sondaggi POST /v2/posts/{id}/votewritePartecipare a un sondaggio. Profili GET /v2/profiles/{handle}readUn profilo, tramite il suo nome breve. GET /v2/profiles/{handle}/postsreadI post pubblici di un profilo, i più recenti per primi. GET /v2/profiles/{handle}/eventsreadI prossimi eventi di un profilo, i più vicini prima. POST /v2/me/eventswriteCreare un evento. Risponde con il suo id. PUT /v2/me/events/{id}writeModificare un tuo evento. Tutti i campi vengono reimpostati. DELETE /v2/me/events/{id}writeEliminare un tuo evento. GET /v2/me/events/{id}/signupsreadChi si è iscritto a un tuo evento. POST /v2/events/{id}/signupwriteIscriverti a un evento o annullare l’iscrizione. Gruppi GET /v2/communitiesreadI gruppi aperti di questa istanza; con mine=true i gruppi del tuo account. GET /v2/communities/{id}readUn singolo gruppo, tramite il suo id. GET /v2/communities/{id}/postsreadI post del canale feed di un gruppo, i più recenti prima. GET /v2/communities/{id}/membersreadI membri di un gruppo con i loro ruoli. GET /v2/communities/{id}/rolesreadI ruoli di un gruppo, il più alto prima, @everyone per ultimo. GET /v2/communities/{id}/bellreadQuali notifiche ti manda un gruppo. GET /v2/invites/{code}readIl gruppo dietro un link di invito, prima di unirsi. PUT /v2/roles/{id}/selfwritePrendere o lasciare un ruolo sceglibile. GET /v2/communities/{id}/emojisreadLe emoji proprie di un gruppo. PUT /v2/communities/{id}/bellwriteImpostare quali notifiche ti manda un gruppo. POST /v2/invites/{code}/joinwriteUnirsi a un gruppo con un link di invito. GET /v2/communities/{id}/botsreadI bot di un gruppo con ciò che il loro ruolo consente. Canali GET /v2/communities/{id}/channelsreadI canali di un gruppo che vedi, nel loro ordine. GET /v2/channels/{id}/messagesreadI messaggi di un canale chat, i più recenti prima. POST /v2/channels/{id}/messageswriteScrivere un messaggio in un canale chat. POST /v2/channels/{id}/readwriteSegnare un canale chat come letto fino a un momento. DELETE /v2/channel-messages/{id}writeEliminare un tuo messaggio in un canale chat. GET /v2/communities/{id}/voicereadChi è adesso nei canali vocali di un gruppo, per canale. Gestire gruppi POST /v2/communities/{id}/emojisgroupsDare un’emoji al gruppo. DELETE /v2/communities/{id}/emojis/{name}groupsTogliere un’emoji dal gruppo. POST /v2/communities/{id}/rolesgroupsCreare un ruolo. PUT /v2/roles/{id}groupsCambiare nome, colore e permessi di un ruolo. DELETE /v2/roles/{id}groupsEliminare un ruolo. PUT /v2/communities/{id}/roles/ordergroupsStabilire l’ordine dei ruoli. PUT /v2/roles/{id}/members/{member}groupsDare o togliere un ruolo a un membro. POST /v2/communities/{id}/channelsgroupsCreare un canale chat. PUT /v2/channels/{id}groupsCambiare nome, argomento e categoria di un canale. DELETE /v2/channels/{id}groupsEliminare un canale chat con i suoi messaggi. PUT /v2/communities/{id}/channels/ordergroupsStabilire l’ordine di categorie e canali chat. PUT /v2/communities/{id}/channels/shapegroupsImpostare la forma di tutti i simboli dei canali del gruppo. GET /v2/channels/{id}/overridesgroupsCiò che i ruoli possono fare diversamente in un canale rispetto al gruppo. PUT /v2/channels/{id}/overrides/{role}groupsStabilire ciò che un ruolo può fare diversamente in un canale. POST /v2/communities/{id}/categoriesgroupsCreare una categoria per i canali. PUT /v2/categories/{id}groupsRinominare una categoria. DELETE /v2/categories/{id}groupsEliminare una categoria. PUT /v2/communities/{id}/feedgroupsAttivare o disattivare il canale feed di un gruppo. GET /v2/communities/{id}/invitesgroupsI link di invito di un gruppo ancora validi. POST /v2/communities/{id}/invitesgroupsCreare un link di invito. DELETE /v2/invites/{code}groupsRitirare un link di invito. POST /v2/channel-messages/{id}/removegroupsRimuovere da un canale il messaggio di un altro membro. POST /v2/communities/{id}/posts/{post}/removegroupsRimuovere un post da un gruppo. DELETE /v2/communities/{id}/members/{member}groupsEspellere un membro da un gruppo. PUT /v2/communities/{id}/members/{member}/timeoutgroupsSilenziare un membro. DELETE /v2/communities/{id}/members/{member}/timeoutgroupsRevocare un silenziamento. GET /v2/communities/{id}/bansgroupsI ban in corso di un gruppo. PUT /v2/communities/{id}/bans/{member}groupsBannare un membro. DELETE /v2/communities/{id}/bans/{member}groupsRevocare un ban. GET /v2/communities/{id}/loggroupsIl registro della guida: chi ha rimosso cosa e perché. POST /v2/communitiesgroupsFondare un gruppo. Risponde con il suo id; sei tu il fondatore. PUT /v2/communities/{id}groupsModificare un gruppo che guidi. Ciò che non indichi resta com’è. Bot GET /v2/eventsreadGli eventi dei gruppi del bot da un evento in poi, pagina per pagina. GET /v2/events/streamreadGli eventi dei gruppi del bot appena accadono (server-sent events). GET /v2/me/commandsreadI comandi del bot. PUT /v2/me/commandswriteImpostare i comandi del bot, tutti insieme. POST /v2/interactions/{id}/replywriteRispondere a un comando o a un pulsante. POST /v2/channels/{id}/voicewritePrendere un posto in un canale vocale per riprodurre musica o suoni. Scopri GET /v2/tagsreadI tag che girano in questo momento. GET /v2/searchreadUna ricerca su post, nomi, nomi brevi e tag. GET /v2/emojisreadGli emoji propri dell’istanza, con l’indirizzo delle loro immagini. GIF e video GET /v2/mediareadGIF o video condivisi, prima i più usati. GET /v2/media/minemediaLa tua libreria media, prima i più recenti. GET /v2/media/{id}readUna GIF o un video, tuo o condiviso. POST /v2/media/uploadsmediaAvvia un caricamento. PUT /v2/media/uploads/{upload}mediaInvia un pezzo del file. POST /v2/media/{id}mediaModifica una delle tue GIF o uno dei tuoi video. DELETE /v2/media/{id}mediaRimuovi una delle tue GIF o uno dei tuoi video. Il tuo account GET /v2/mereadIl tuo profilo, con l’id che gli altri percorsi si aspettano. GET /v2/feedreadIl tuo feed, come lo compone l’applicazione. POST /v2/me/pictureswriteCaricare un’immagine, come i suoi byte. Risponde con id e url; poi usi l’id come immagine del profilo, copertina o in un post. PUT /v2/me/profileprofileModificare il profilo: nome, su di te, immagine del profilo, copertina e colore del profilo. Ciò che non indichi resta com’è. GET /v2/me/emojisreadLe tue emoji. POST /v2/me/emojis/picturesprofileCaricare l’immagine di una tua emoji, come i suoi byte. POST /v2/me/emojisprofileCreare una tua emoji. Risponde con tutte le tue emoji. DELETE /v2/me/emojis/{name}profileRimuovere una tua emoji. Risponde con le altre. PUT /v2/me/emojis/sharingprofileDecidere se i tuoi follower possono usare le tue emoji nei loro testi. GET /v2/me/webhookswebhooksI tuoi webhook con il loro stato. POST /v2/me/webhookswebhooksCreare un webhook. Risponde con l’id e il segreto per le firme, solo questa volta. DELETE /v2/me/webhooks/{id}webhooksEliminare un webhook. POST /v2/me/webhooks/{id}/testwebhooksInviare una prova a un webhook. Notifiche GET /v2/notificationsreadLe tue notifiche, le più recenti per prime. POST /v2/notifications/readwriteSegnare le tue notifiche come lette. Messaggi GET /v2/conversationsreadLa tua posta: una riga per conversazione, la più recente per prima. GET /v2/conversations/{with}/messagesreadI messaggi di una conversazione, i più recenti per primi. POST /v2/conversations/{with}/messageswriteInviare un messaggio in una conversazione. POST /v2/conversations/{with}/readwriteSegnare come letti tutti i messaggi di una conversazione. DELETE /v2/conversations/{with}/messages/{id}writeEliminare un tuo messaggio. POST /v2/conversations/{with}/plannedwriteProgrammare un messaggio per più tardi. Risponde con l’id del messaggio programmato. GET /v2/me/planned-messagesreadI tuoi messaggi ancora da inviare, in ordine di ora. POST /v2/me/planned-messages/{id}/sendwriteInviare ora un messaggio programmato trattenuto o non riuscito. DELETE /v2/me/planned-messages/{id}writeEliminare un messaggio programmato prima che venga inviato. Relazioni POST /v2/relationswriteMettere mi piace, salvare, condividere, seguire, entrare, bloccare, silenziare, a seconda di kind. GET /v2/profiles/{handle}/followersreadChi segue un profilo, i più recenti prima. GET /v2/profiles/{handle}/followingreadChi è seguito da un profilo, i più recenti prima. GET /v2/me/relationsreadChi hai bloccato, silenziato o bloccato solo per i messaggi, i più recenti prima. Raccolte GET /v2/me/collectionsreadLe tue raccolte con il numero dei loro post. POST /v2/me/collectionswriteCreare una raccolta. Risponde con il suo id. PUT /v2/me/collections/{id}writeRinominare una raccolta. DELETE /v2/me/collections/{id}writeEliminare una raccolta. GET /v2/me/collections/{id}/postsreadI post di una raccolta, come nella scheda dei salvati. POST /v2/me/collections/{id}/postswriteMettere un post in una raccolta o toglierlo. Regali GET /v2/partner/quotareadQuanto resta da regalare nel tuo contingente. GET /v2/partner/giftsreadCosa hai regalato dal contingente, a chi e quando, dal più recente. POST /v2/partner/giftsgiftsRegalare mesi di abbonamento o scintille dal tuo contingente a un membro. GET /v2/gift-dropsreadI tuoi regali sotto i post: quanti posti sono ancora liberi e come sono stati pagati. POST /v2/gift-dropsgiftsPubblicare un post con regali da ritirare.
L’ingresso La prima richiesta di ogni programma: la chiave funziona, e che cosa può fare?
GET /v2Versione dell’API e nome di questa istanza.
Diritto read con ETag dalla v2.0 Senza barra finale: https://api.tellmelo.com/v2/ reindirizza a https://api.tellmelo.com/v2 con 308, e non tutti i programmi lo seguono.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2"Risposta Risponde con un Service .
Esempio {
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}Stati possibili: 200304401429
Post Leggere i post pubblici, pubblicare i tuoi e toglierli di nuovo.
GET /v2/postsI post pubblici, i più recenti per primi.
Diritto read sfogliabile con ETag dalla v2.0 Nei percorsi pubblici counts.likes e counts.reposts sono sempre 0 e pinned è false.
I post dei gruppi non sono qui ma in /communities/{id}/posts.
Parametri Nome Tipo Significato limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts?limit=20"Risposta Risponde con una pagina di Post , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304401429
GET /v2/posts/{id}Un singolo post, tramite il suo id.
Diritto read con ETag dalla v2.0 Nei percorsi pubblici counts.likes e counts.reposts sono sempre 0 e pinned è false.
I post dei gruppi non sono qui ma in /communities/{id}/posts.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"Risposta Risponde con un Post .
Esempio {
"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
}Stati possibili: 200304400401404429
POST /v2/postsPubblicare un post.
Un post ha bisogno di testo o di un sondaggio. Lunghezza, opzioni e ritmo li stabilisce l’istanza; oltre arriva 400 o 429.
Allega immagini, una GIF o un video con media. Una GIF o un video va da solo. Su tellmelo puoi usare le GIF e i video condivisi da altri.
Un post per amici stretti o con coautore esce subito, non in un gruppo e non programmato. Le due cose insieme non sono possibili.
Parametri Nome Tipo Significato textnel corpo stringfacoltativo Il testo del post, della risposta o del messaggio. communitynel corpo stringfacoltativo L’id del gruppo nel cui canale feed va il post; deve essere attivo e ti serve il permesso. Senza, il post sta fuori da ogni gruppo. quotesnel corpo stringfacoltativo L’id del post che questo cita. pollnel corpo string[]facoltativo Le opzioni come elenco di testi. medianel corpo string[]facoltativo ID di immagini caricate nell’app, o di una GIF o un video dalla libreria media (dalla 2.14). audiencenel corpo stringfacoltativo Chi vede il post: everyone tutti quelli che possono vederlo, close solo i tuoi amici stretti.everyoneclose coauthornel corpo stringfacoltativo L’id di un account che inviti come coautore. Dovete seguirvi a vicenda.
Richiesta d’esempio 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"Risposta Risponde con un Created .
Esempio {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}Stati possibili: 200400401403429
DELETE /v2/posts/{id}Togliere un tuo post.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/me/scheduledI tuoi post non ancora usciti, e cosa stanno aspettando.
Diritto read con ETag dalla v2.12 Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/scheduled"Risposta Risponde con una pagina di ScheduledPost , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304401429
POST /v2/posts/{id}/scheduleCambiare quando esce un post programmato, o quando un post si cancella da solo.
Solo i tuoi post. Finché i regali di un post non sono pagati, non si può programmare.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. publishAtnel corpo integerfacoltativo Quando esce il post programmato, in millisecondi dal 1970. deleteAtnel corpo integerfacoltativo Quando il post si cancella da solo, in millisecondi dal 1970.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/schedule"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/posts/{id}/editModificare il testo di un tuo post.
Solo entro il tempo di modifica che ti dà il tuo abbonamento. I post programmati non si possono modificare.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. textnel corpo stringobbligatorio Il testo del post, della risposta o del messaggio.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/posts/{id}/reply-settingsChi può rispondere al tuo post, se le risposte attendono approvazione e la modalità lenta.
Diritto read con ETag dalla v2.19 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/reply-settings"Risposta Risponde con un ReplySettings .
Esempio {
"audience": "following",
"approval": false,
"slow": "auto"
}Stati possibili: 200304400401404429
PUT /v2/posts/{id}/reply-settingsCambiare le impostazioni di risposta del tuo post. Ciò che non indichi resta com’è.
Solo i tuoi post.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. audiencenel corpo stringfacoltativo Chi può rispondere: tutti, account che segui, chi è menzionato o nessuno.allfollowingmentionednobody approvalnel corpo booleanfacoltativo Se le risposte compaiono solo dopo la tua approvazione. slownel corpo stringfacoltativo Modalità lenta: auto si attiva da sola quando arrivano molte risposte, on sempre, off mai.autoonoff
Richiesta d’esempio 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"Risposta Risponde con un ReplySettings .
Esempio {
"audience": "following",
"approval": false,
"slow": "auto"
}Stati possibili: 200400401403404429
POST /v2/posts/{id}/coauthorAccettare o rifiutare un invito come coautore.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. acceptnel corpo booleanobbligatorio true accetta l’invito, false lo rifiuta.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/posts/{id}/coauthorRitirarti come coautore o, come autore, togliere il coautore dal post.
Per il coautore e l’autore del post.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/coauthor"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/posts/{id}/pinFissare il tuo post in cima al profilo, o toglierlo.
Solo i tuoi post visibili. Quanti puoi fissarne dipende dall’abbonamento.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. activenel corpo booleanobbligatorio true fissa il post, false lo toglie.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Risposte Le risposte sotto un post, come elenco con parentId.
GET /v2/posts/{id}/repliesLe risposte a un post, senza account bloccati.
Diritto read sfogliabile con ETag dalla v2.0 L’elenco è piatto e in ordine di scrittura; parentId lo trasforma in albero. Una pagina contiene sempre thread interi. Le risposte degli account bloccati sono escluse.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies?limit=20"Risposta Risponde con una pagina di Reply , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304400401404429
POST /v2/posts/{id}/repliesRispondere a un post.
In modalità lenta, una risposta a persona ogni 10 minuti, altrimenti 429. Sono esclusi l’autore e gli account che segue.
Con media al massimo un’immagine, una GIF o un video.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. textnel corpo stringobbligatorio Il testo del post, della risposta o del messaggio. parentIdnel corpo stringfacoltativo L’id della risposta a cui questa risponde. Senza, direttamente al post. medianel corpo string[]facoltativo ID di immagini caricate nell’app, o di una GIF o un video dalla libreria media (dalla 2.14). publishAtnel corpo integerfacoltativo Quando deve uscire la risposta, in millisecondi dal 1970. Senza, esce subito.
Richiesta d’esempio 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"Risposta Risponde con un Created .
Esempio {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}Stati possibili: 200400401403404429
POST /v2/replies/{id}/editModificare il testo di una tua risposta.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’identificativo della risposta. textnel corpo stringobbligatorio Il testo del post, della risposta o del messaggio.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/replies/{id}Rimuovere una tua risposta.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’identificativo della risposta.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/replies/{id}/likeVotare positivamente una risposta (un mi piace è un voto positivo da quando le risposte si votano) o ritirare il voto; un voto negativo resta.
Diritto write dalla v2.12 obsoleta Obsoleta dalla 2.19: usa POST /replies/{id}/vote. Questa route resta per ora.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’identificativo della risposta. activenel corpo booleanobbligatorio true la imposta, false la toglie.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/replies/{id}/voteVotare una risposta in su o in giù, o ritirare il tuo voto. Risponde con il tuo voto e il punteggio risultante.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’identificativo della risposta. votenel corpo stringobbligatorio up vota in su, down in giù, none ritira il tuo voto.updownnone
Richiesta d’esempio 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"Risposta Risponde con un ReplyVote .
Esempio {
"vote": "up",
"score": 12
}Stati possibili: 200400401403404429
POST /v2/replies/{id}/pickMettere in evidenza come migliore una risposta sotto il tuo post, o togliere l’evidenza.
Solo sotto i tuoi post e solo risposte dirette al post. Una nuova evidenza sostituisce la precedente.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’identificativo della risposta. activenel corpo booleanobbligatorio true mette in evidenza la risposta, false toglie l’evidenza.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/posts/{id}/replies/waitingLe risposte in attesa di approvazione sotto un post: tutte sotto il tuo, altrimenti solo le tue.
Diritto read con ETag dalla v2.19 Se le risposte attendono lo decide l’autore nelle impostazioni di risposta.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/waiting"Risposta Risponde con una pagina di Reply , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401404429
POST /v2/replies/{id}/decideApprovare o rifiutare una risposta in attesa sotto il tuo post. Se rifiutata, viene eliminata.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’identificativo della risposta. approvenel corpo booleanobbligatorio true approva la risposta, false la rifiuta.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/posts/{id}/replies/plannedLe tue risposte programmate per più tardi sotto un post.
Diritto read con ETag dalla v2.19 Si programma con publishAt quando rispondi. Al massimo 20 risposte programmate alla volta.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/planned"Risposta Risponde con una pagina di PlannedReply , come `items` e `next`.
Esempio {
"items": [
{
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"parentId": null,
"text": "Count me in for Saturday!",
"publishAt": 1758710400000,
"state": "waiting"
}
],
"next": null
}Stati possibili: 200304400401404429
PUT /v2/me/planned-replies/{id}Cambiare il testo o l’ora di una risposta programmata. Una non riuscita torna in attesa.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id della risposta programmata. textnel corpo stringfacoltativo Il testo del post, della risposta o del messaggio. publishAtnel corpo integerfacoltativo Quando deve uscire la risposta, in millisecondi dal 1970. Senza, esce subito.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/me/planned-replies/{id}/sendInviare subito una risposta programmata.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id della risposta programmata.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/me/planned-replies/{id}Eliminare una risposta programmata.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id della risposta programmata.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Sondaggi Un sondaggio è un post con poll impostato. Votare ha un percorso tutto suo.
POST /v2/posts/{id}/votePartecipare a un sondaggio.
I voti per opzione sono null finché non voti o il sondaggio finisce. total c’è sempre.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un post. optionnel corpo integerobbligatorio Quale opzione, contando da 0. Con più scelte, una chiamata per opzione. retractnel corpo booleanfacoltativo true ritira il voto.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Profili Profili pubblici tramite il loro nome breve, e ciò che hanno pubblicato.
GET /v2/profiles/{handle}Un profilo, tramite il suo nome breve.
Diritto read con ETag dalla v2.0 Parametri Nome Tipo Significato handlenel percorso stringobbligatorio Il nome breve di un profilo, con maiuscole o minuscole indifferentemente.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara"Risposta Risponde con un Profile .
Esempio {
"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
}Stati possibili: 200304400401404429
GET /v2/profiles/{handle}/postsI post pubblici di un profilo, i più recenti per primi.
Diritto read sfogliabile con ETag dalla v2.0 Nei percorsi pubblici counts.likes e counts.reposts sono sempre 0 e pinned è false.
I post dei gruppi non sono qui ma in /communities/{id}/posts.
Parametri Nome Tipo Significato handlenel percorso stringobbligatorio Il nome breve di un profilo, con maiuscole o minuscole indifferentemente. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/posts?limit=20"Risposta Risponde con una pagina di Post , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304400401404429
GET /v2/profiles/{handle}/eventsI prossimi eventi di un profilo, i più vicini prima.
Diritto read con ETag dalla v2.19 Solo finché l’abbonamento del profilo include gli eventi. Nulla tra account che si sono bloccati.
Parametri Nome Tipo Significato handlenel percorso stringobbligatorio Il nome breve di un profilo, con maiuscole o minuscole indifferentemente.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/events"Risposta Risponde con una pagina di Event , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401404429
POST /v2/me/eventsCreare un evento. Risponde con il suo id.
Serve un abbonamento con gli eventi, altrimenti 403. Quanti possono essere in programma dipende dall’abbonamento.
Parametri Nome Tipo Significato titlenel corpo stringobbligatorio Il titolo. startsAtnel corpo integerobbligatorio Inizio, in millisecondi dal 1970. endsAtnel corpo integerfacoltativo Fine, in millisecondi dal 1970. Facoltativa. placenel corpo stringfacoltativo Dove si svolge. descriptionnel corpo stringfacoltativo Una descrizione. signupsnel corpo booleanfacoltativo Se ci si può iscrivere. Serve un abbonamento con le iscrizioni. capacitynel corpo integerfacoltativo Quante persone possono iscriversi al massimo. Senza indicazione, nessun limite.
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403429
PUT /v2/me/events/{id}Modificare un tuo evento. Tutti i campi vengono reimpostati.
Un evento già iniziato mantiene il suo inizio.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id dell’evento. titlenel corpo stringobbligatorio Il titolo. startsAtnel corpo integerobbligatorio Inizio, in millisecondi dal 1970. endsAtnel corpo integerfacoltativo Fine, in millisecondi dal 1970. Facoltativa. placenel corpo stringfacoltativo Dove si svolge. descriptionnel corpo stringfacoltativo Una descrizione. signupsnel corpo booleanfacoltativo Se ci si può iscrivere. Serve un abbonamento con le iscrizioni. capacitynel corpo integerfacoltativo Quante persone possono iscriversi al massimo. Senza indicazione, nessun limite.
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
DELETE /v2/me/events/{id}Eliminare un tuo evento.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id dell’evento.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/me/events/{id}/signupsChi si è iscritto a un tuo evento.
Diritto read con ETag dalla v2.19 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id dell’evento.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b/signups"Risposta Risponde con una pagina di EventSignup , come `items` e `next`.
Esempio {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"at": 1758624000000
}
],
"next": null
}Stati possibili: 200304400401404429
POST /v2/events/{id}/signupIscriverti a un evento o annullare l’iscrizione.
Solo per eventi con iscrizione, non i tuoi. Se è pieno, 409.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id dell’evento. goingnel corpo booleanobbligatorio true ti iscrive, false annulla l’iscrizione.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Gruppi I gruppi aperti e i tuoi, i loro post, membri, ruoli e link di invito.
GET /v2/communitiesI gruppi aperti di questa istanza; con mine=true i gruppi del tuo account.
Diritto read con ETag dalla v2.0 Ordinato per numero di membri e senza pagine; next è sempre null.
Parametri Nome Tipo Significato limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. minenell’indirizzo booleanfacoltativo true per i gruppi del tuo account, anche interni e nascosti, per nome.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities?limit=20"Risposta Risponde con una pagina di Community , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304401429
GET /v2/communities/{id}Un singolo gruppo, tramite il suo id.
Diritto read con ETag dalla v2.0 I gruppi interni e nascosti solo se il tuo account ne è membro.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"Risposta Risponde con un Community .
Esempio {
"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
}
}Stati possibili: 200304400401404429
GET /v2/communities/{id}/postsI post del canale feed di un gruppo, i più recenti prima.
Diritto read sfogliabile con ETag dalla v2.0 Nei percorsi pubblici counts.likes e counts.reposts sono sempre 0 e pinned è false.
Se il canale feed è disattivato, il percorso risponde 409 con feed_off.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts?limit=20"Risposta Risponde con una pagina di Post , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304400401404429
GET /v2/communities/{id}/membersI membri di un gruppo con i loro ruoli.
Diritto read con ETag dalla v2.15 Prima la guida, poi per ruolo più alto; al massimo 300.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members"Risposta Risponde con una pagina di GroupMember , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401404429
GET /v2/communities/{id}/rolesI ruoli di un gruppo, il più alto prima, @everyone per ultimo.
Diritto read con ETag dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles"Risposta Risponde con una pagina di Role , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401404429
GET /v2/communities/{id}/bellQuali notifiche ti manda un gruppo.
Diritto read con ETag dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bell"Risposta Risponde con un Bell .
Esempio {
"level": "important"
}Stati possibili: 200304400401404429
GET /v2/invites/{code}Il gruppo dietro un link di invito, prima di unirsi.
Diritto read con ETag dalla v2.15 Parametri Nome Tipo Significato codenel percorso stringobbligatorio Il codice di un link di invito, la fine del suo indirizzo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa"Risposta Risponde con un InvitePreview .
Esempio {
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
},
"member": false
}Stati possibili: 200304400401404429
PUT /v2/roles/{id}/selfPrendere o lasciare un ruolo sceglibile.
Solo ruoli che la guida offre come sceglibili (selfable), e solo per il tuo account.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un ruolo. activenel corpo booleanfacoltativo false toglie il ruolo; altrimenti viene dato.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/communities/{id}/emojisLe emoji proprie di un gruppo.
Diritto read con ETag dalla v2.20 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis"Risposta Risponde con una pagina di GroupEmoji , come `items` e `next`.
Esempio {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}Stati possibili: 200304400401404429
PUT /v2/communities/{id}/bellImpostare quali notifiche ti manda un gruppo.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. levelnel corpo stringobbligatorio Quali notifiche arrivano.allimportantoff
Richiesta d’esempio 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"Risposta Risponde con un Bell .
Esempio {
"level": "important"
}Stati possibili: 200400401403404429
POST /v2/invites/{code}/joinUnirsi a un gruppo con un link di invito.
Parametri Nome Tipo Significato codenel percorso stringobbligatorio Il codice di un link di invito, la fine del suo indirizzo. rulesnel corpo booleanfacoltativo true se accetti le regole del gruppo; necessario se ne ha.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa/join"Risposta Risponde con un Joined .
Esempio {
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}Stati possibili: 200400401403404429
GET /v2/communities/{id}/botsI bot di un gruppo con ciò che il loro ruolo consente.
Diritto read con ETag dalla v2.19 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bots"Risposta Risponde con una pagina di GroupBot , come `items` e `next`.
Esempio {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "gardenbot",
"name": "Garden bot",
"description": "Reminds the group of watering days.",
"permissions": [
"send",
"view"
]
}
],
"next": null
}Stati possibili: 200304400401404429
Canali I canali dei tuoi gruppi e la loro chat: leggere, scrivere, segnare come letto.
GET /v2/communities/{id}/channelsI canali di un gruppo che vedi, nel loro ordine.
Diritto read con ETag dalla v2.15 Il canale feed (kind: feed) compare qui solo finché è attivo; i suoi post arrivano da /communities/{id}/posts.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels"Risposta Risponde con una pagina di Channel , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401404429
GET /v2/channels/{id}/messagesI messaggi di un canale chat, i più recenti prima.
Diritto read sfogliabile con ETag dalla v2.15 Fino a 50 messaggi per pagina. Mancano i messaggi di account che hai bloccato o che ti hanno bloccato.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio. threadnell’indirizzo stringfacoltativo Il messaggio di cui si legge il thread: esso e le sue risposte invece della chat.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/messages"Risposta Risponde con una pagina di ChannelMessage , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304400401404429
POST /v2/channels/{id}/messagesScrivere un messaggio in un canale chat.
@nome avvisa un membro, @everyone con il permesso tutti, al massimo sei volte all’ora.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale. textnel corpo stringfacoltativo Il testo del post, della risposta o del messaggio. replyTonel corpo stringfacoltativo L’id del messaggio dello stesso canale a cui rispondi. medianel corpo string[]facoltativo ID di immagini caricate nell’app, o di una GIF o un video dalla libreria media (dalla 2.14). threadnel corpo stringfacoltativo Il messaggio della chat nel cui thread si risponde; senza, il messaggio va nella chat. cardnel corpo objectfacoltativo Una scheda { title, text, color, fields: [{ name, value }] }, al massimo 10 campi. buttonsnel corpo object[]facoltativo Fino a 5 pulsanti, ciascuno { id, label, style } con style primary, secondary o danger. Una pressione arriva come evento interaction.
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
POST /v2/channels/{id}/readSegnare un canale chat come letto fino a un momento.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale. atnel corpo integerobbligatorio Fino a quando è letto, in millisecondi, di solito il createdAt del messaggio più recente.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/read"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/channel-messages/{id}Eliminare un tuo messaggio in un canale chat.
Solo i tuoi messaggi; quelli degli altri li rimuove la guida con il permesso groups .
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un messaggio in un canale chat.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/communities/{id}/voiceChi è adesso nei canali vocali di un gruppo, per canale.
Diritto read con ETag dalla v2.19 Solo canali che puoi vedere. Senza server multimediale l’elenco è vuoto.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/voice"Risposta Risponde con una pagina di VoiceRoom , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401404429
Gestire gruppi Ciò che le impostazioni di un gruppo permettono nell’app, con il permesso groups . Cosa può il tuo account lo decide il gruppo come nell’app: guida, ruoli e il loro ordine.
POST /v2/communities/{id}/emojisDare un’emoji al gruppo.
Diritto groups dalla v2.20 Solo chi può gestire i canali del gruppo. L’immagine si carica come un’emoji tua (POST /me/emojis/pictures); un nome esiste una sola volta tra tutte le emoji.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. namenel corpo stringobbligatorio Il nome con cui scrivi l’emoji, come :nome:. picturenel corpo stringobbligatorio L’id di POST /me/emojis/pictures.
Richiesta d’esempio 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"Risposta Risponde con una pagina di GroupEmoji , come `items` e `next`.
Esempio {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}Stati possibili: 200400401403404429
DELETE /v2/communities/{id}/emojis/{name}Togliere un’emoji dal gruppo.
Diritto groups dalla v2.20 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. namenel percorso stringobbligatorio Il nome dell’emoji, senza due punti.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis/seedling"Risposta Risponde con una pagina di GroupEmoji , come `items` e `next`.
Esempio {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}Stati possibili: 200400401403404429
POST /v2/communities/{id}/rolesCreare un ruolo.
Diritto groups dalla v2.15 Solo ruoli sotto il tuo più alto e solo permessi che hai tu; la guida sta sopra tutti.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. namenel corpo stringfacoltativo Il nome del ruolo; @everyone mantiene il suo. colornel corpo stringfacoltativo Il colore; vuoto per nessuno.indigovioletroseambergreenteal permissionsnel corpo string[]facoltativo I permessi: view, send, attach, post_feed, invite, mention_everyone, moderate, timeout_members, kick_members, ban_members, manage_channels, manage_roles. selfablenel corpo booleanfacoltativo true: i membri prendono il ruolo da soli. Solo per ruoli che non permettono più che partecipare (view, send, attach, voice_connect, voice_speak, voice_video).
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
PUT /v2/roles/{id}Cambiare nome, colore e permessi di un ruolo.
Diritto groups dalla v2.15 Sostituisce nome, colore e permessi; ciò che ometti diventa vuoto.
Solo ruoli sotto il tuo più alto e solo permessi che hai tu; la guida sta sopra tutti.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un ruolo. namenel corpo stringfacoltativo Il nome del ruolo; @everyone mantiene il suo. colornel corpo stringfacoltativo Il colore; vuoto per nessuno.indigovioletroseambergreenteal permissionsnel corpo string[]facoltativo I permessi: view, send, attach, post_feed, invite, mention_everyone, moderate, timeout_members, kick_members, ban_members, manage_channels, manage_roles. selfablenel corpo booleanfacoltativo true: i membri prendono il ruolo da soli. Solo per ruoli che non permettono più che partecipare (view, send, attach, voice_connect, voice_speak, voice_video).
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
DELETE /v2/roles/{id}Eliminare un ruolo.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un ruolo.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
PUT /v2/communities/{id}/roles/orderStabilire l’ordine dei ruoli.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. rolesnel corpo string[]obbligatorio Gli id di tutti i ruoli sotto il tuo più alto, il più alto per primo; per la guida tutti tranne @everyone.
Richiesta d’esempio curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles/order"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
PUT /v2/roles/{id}/members/{member}Dare o togliere un ruolo a un membro.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un ruolo. membernel percorso stringobbligatorio L’id dell’account di un membro. activenel corpo booleanfacoltativo false toglie il ruolo; altrimenti viene dato.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/communities/{id}/channelsCreare un canale chat.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. namenel corpo stringfacoltativo Il nome, senza #; vuoto per il nome che l’app dà in ogni lingua. topicnel corpo stringfacoltativo L’argomento mostrato sopra il canale. categorynel corpo stringfacoltativo L’id della categoria in cui va il canale; vuoto per nessuna. emojinel corpo stringfacoltativo Un emoji come simbolo. iconnel corpo stringfacoltativo Un simbolo della raccolta dell’app, per nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imagenel corpo stringfacoltativo L’id di un’immagine caricata con /media/emoji. colornel corpo stringfacoltativo Il colore del riquadro.brandindigovioletroseambergreentealred shapenel corpo stringfacoltativo La forma del riquadro; senza, un cerchio.circlesquaretrianglediamondhexagonoctagonshieldstar
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
PUT /v2/channels/{id}Cambiare nome, argomento e categoria di un canale.
Diritto groups dalla v2.15 Sostituisce nome, argomento e categoria; ciò che ometti diventa vuoto.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale. namenel corpo stringfacoltativo Il nome, senza #; vuoto per il nome che l’app dà in ogni lingua. topicnel corpo stringfacoltativo L’argomento mostrato sopra il canale. categorynel corpo stringfacoltativo L’id della categoria in cui va il canale; vuoto per nessuna. emojinel corpo stringfacoltativo Un emoji come simbolo. iconnel corpo stringfacoltativo Un simbolo della raccolta dell’app, per nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imagenel corpo stringfacoltativo L’id di un’immagine caricata con /media/emoji. colornel corpo stringfacoltativo Il colore del riquadro.brandindigovioletroseambergreentealred shapenel corpo stringfacoltativo La forma del riquadro; senza, un cerchio.circlesquaretrianglediamondhexagonoctagonshieldstar
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
DELETE /v2/channels/{id}Eliminare un canale chat con i suoi messaggi.
Diritto groups dalla v2.15 Il canale feed non si può eliminare, solo disattivare.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
PUT /v2/communities/{id}/channels/orderStabilire l’ordine di categorie e canali chat.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. categoriesnel corpo string[]obbligatorio Gli id di tutte le categorie del gruppo nel nuovo ordine. channelsnel corpo string[]obbligatorio Gli id di tutti i canali chat del gruppo nel nuovo ordine.
Richiesta d’esempio curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/order"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
PUT /v2/communities/{id}/channels/shapeImpostare la forma di tutti i simboli dei canali del gruppo.
Diritto groups dalla v2.20 Solo la guida del gruppo.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. shapenel corpo stringfacoltativo La forma di tutti i simboli del gruppo; se omessa, ogni canale ha la sua.circlesquaretrianglediamondhexagonoctagonshieldstar
Richiesta d’esempio curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/shape"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/channels/{id}/overridesCiò che i ruoli possono fare diversamente in un canale rispetto al gruppo.
Diritto groups con ETag dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/overrides"Risposta Risponde con una pagina di ChannelOverride , come `items` e `next`.
Esempio {
"items": [
{
"role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"allow": [
"send"
],
"deny": []
}
],
"next": null
}Stati possibili: 200304400401403404429
PUT /v2/channels/{id}/overrides/{role}Stabilire ciò che un ruolo può fare diversamente in un canale.
Diritto groups dalla v2.15 Non per ruoli pari o superiori al tuo più alto.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale. rolenel percorso stringobbligatorio L’id di un ruolo. allownel corpo string[]facoltativo Cosa il ruolo può fare qui in più: in una chat view, send, attach, mention_everyone, moderate, nel canale feed view e post_feed. denynel corpo string[]facoltativo Ciò che il ruolo non può fare qui, tra gli stessi permessi. Entrambe le liste vuote tolgono la differenza.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/communities/{id}/categoriesCreare una categoria per i canali.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. namenel corpo stringobbligatorio Il nome della categoria. emojinel corpo stringfacoltativo Un emoji come simbolo. iconnel corpo stringfacoltativo Un simbolo della raccolta dell’app, per nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imagenel corpo stringfacoltativo L’id di un’immagine caricata con /media/emoji. colornel corpo stringfacoltativo Il colore del riquadro.brandindigovioletroseambergreentealred
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
PUT /v2/categories/{id}Rinominare una categoria.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di una categoria. namenel corpo stringobbligatorio Il nome della categoria. emojinel corpo stringfacoltativo Un emoji come simbolo. iconnel corpo stringfacoltativo Un simbolo della raccolta dell’app, per nome.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imagenel corpo stringfacoltativo L’id di un’immagine caricata con /media/emoji. colornel corpo stringfacoltativo Il colore del riquadro.brandindigovioletroseambergreentealred
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
DELETE /v2/categories/{id}Eliminare una categoria.
Diritto groups dalla v2.15 I suoi canali restano, senza categoria.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di una categoria.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/categories/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
PUT /v2/communities/{id}/feedAttivare o disattivare il canale feed di un gruppo.
Diritto groups dalla v2.15 Disattivato, i post restano salvati ma li vedono solo i loro autori.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. onnel corpo booleanobbligatorio true attiva il canale feed, false lo disattiva.
Richiesta d’esempio curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/feed"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/communities/{id}/invitesI link di invito di un gruppo ancora validi.
Diritto groups con ETag dalla v2.15 La guida li vede tutti, gli altri solo i propri.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/invites"Risposta Risponde con una pagina di InviteLink , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401403404429
POST /v2/communities/{id}/invitesCreare un link di invito.
Diritto groups dalla v2.15 Un link vale solo finché puoi invitare e sparisce quando esci.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. daysnel corpo integerfacoltativo Per quanti giorni vale il link; senza, finché non viene ritirato.1730 usesnel corpo integerfacoltativo Quante volte si può usare il link; senza, senza limite.151025100
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
DELETE /v2/invites/{code}Ritirare un link di invito.
Diritto groups dalla v2.15 Parametri Nome Tipo Significato codenel percorso stringobbligatorio Il codice di un link di invito, la fine del suo indirizzo.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/channel-messages/{id}/removeRimuovere da un canale il messaggio di un altro membro.
Diritto groups dalla v2.15 Annotato nel registro del gruppo e al massimo 60 all’ora, come nell’app.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un messaggio in un canale chat.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8/remove"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/communities/{id}/posts/{post}/removeRimuovere un post da un gruppo.
Diritto groups dalla v2.15 Annotato nel registro del gruppo e al massimo 60 all’ora, come nell’app.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. postnel percorso stringobbligatorio L’id di un post. reasonnel corpo stringobbligatorio La motivazione che legge il membro.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/communities/{id}/members/{member}Espellere un membro da un gruppo.
Diritto groups dalla v2.15 Dalla 2.16 un’espulsione: il membro può rientrare. Chi deve restare fuori va bannato.
Solo con il permesso relativo e solo con membri sotto il tuo ruolo più alto; la co-guida solo come fondatore.
Annotato nel registro del gruppo e al massimo 60 all’ora, come nell’app.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. membernel percorso stringobbligatorio L’id dell’account di un membro. reasonnel corpo stringobbligatorio La motivazione che legge il membro.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
PUT /v2/communities/{id}/members/{member}/timeoutSilenziare un membro.
Diritto groups dalla v2.16 Un nuovo silenziamento sostituisce quello in corso. Uscire e rientrare non lo fa finire.
Solo con il permesso relativo e solo con membri sotto il tuo ruolo più alto; la co-guida solo come fondatore.
Annotato nel registro del gruppo e al massimo 60 all’ora, come nell’app.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. membernel percorso stringobbligatorio L’id dell’account di un membro. secondsnel corpo integerobbligatorio Per quanto, in secondi.60300600360086400604800 reasonnel corpo stringfacoltativo Una motivazione che il membro legge; facoltativa.
Richiesta d’esempio 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"Risposta Risponde con un Until .
Esempio {
"until": 1758624600000
}Stati possibili: 200400401403404429
DELETE /v2/communities/{id}/members/{member}/timeoutRevocare un silenziamento.
Diritto groups dalla v2.16 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. membernel percorso stringobbligatorio L’id dell’account di un membro.
Richiesta d’esempio 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"Risposta Risponde con un Until .
Esempio {
"until": 1758624600000
}Stati possibili: 200400401403404429
GET /v2/communities/{id}/bansI ban in corso di un gruppo.
Diritto groups con ETag dalla v2.16 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans"Risposta Risponde con una pagina di Ban , come `items` e `next`.
Esempio {
"items": [
{
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"until": 1759228800000,
"createdAt": 1758624000000,
"by": "Mara 🌻"
}
],
"next": null
}Stati possibili: 200304400401403404429
PUT /v2/communities/{id}/bans/{member}Bannare un membro.
Diritto groups dalla v2.16 Senza days il ban dura finché non viene revocato.
Solo con il permesso relativo e solo con membri sotto il tuo ruolo più alto; la co-guida solo come fondatore.
Annotato nel registro del gruppo e al massimo 60 all’ora, come nell’app.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. membernel percorso stringobbligatorio L’id dell’account di un membro. daysnel corpo integerfacoltativo Per quanto, in giorni; da omettere per un ban senza fine.1730 reasonnel corpo stringobbligatorio La motivazione che legge il membro.
Richiesta d’esempio 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"Risposta Risponde con un Until .
Esempio {
"until": 1758624600000
}Stati possibili: 200400401403404429
DELETE /v2/communities/{id}/bans/{member}Revocare un ban.
Diritto groups dalla v2.16 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. membernel percorso stringobbligatorio L’id dell’account di un membro.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/communities/{id}/logIl registro della guida: chi ha rimosso cosa e perché.
Diritto groups con ETag dalla v2.15 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/log"Risposta Risponde con una pagina di LogEntry , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304400401403404429
POST /v2/communitiesFondare un gruppo. Risponde con il suo id; sei tu il fondatore.
Diritto groups dalla v2.19 Serve il permesso groups. Se non indicato, il gruppo è internal e ad accesso libero; uno nascosto solo su invito. Se i membri possono fondare gruppi lo decide il gestore.
Parametri Nome Tipo Significato namenel corpo stringobbligatorio Il nome, al massimo 60 caratteri. descriptionnel corpo stringfacoltativo La descrizione, al massimo 240 caratteri. handlenel corpo stringfacoltativo L’identificativo per le menzioni @# e il link: da 3 a 30 lettere minuscole, cifre o _. tagsnel corpo string[]facoltativo Fino a 5 #tag sul tema del gruppo. joinPolicynel corpo stringfacoltativo Come si entra: open liberamente, application con richiesta, invite solo su invito.openapplicationinvite visibilitynel corpo stringfacoltativo Chi vede il gruppo: open tutti, internal il contenuto solo i membri, hidden solo i membri in assoluto.openinternalhidden
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403429
PUT /v2/communities/{id}Modificare un gruppo che guidi. Ciò che non indichi resta com’è.
Diritto groups dalla v2.19 Serve il permesso groups e la guida del gruppo. Guida, scioglimento e vantaggi delle scintille restano nell’app.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un gruppo. namenel corpo stringfacoltativo Il nome, al massimo 60 caratteri. descriptionnel corpo stringfacoltativo La descrizione, al massimo 240 caratteri. handlenel corpo stringfacoltativo L’identificativo per le menzioni @# e il link: da 3 a 30 lettere minuscole, cifre o _. tagsnel corpo string[]facoltativo Fino a 5 #tag sul tema del gruppo. joinPolicynel corpo stringfacoltativo Come si entra: open liberamente, application con richiesta, invite solo su invito.openapplicationinvite visibilitynel corpo stringfacoltativo Chi vede il gruppo: open tutti, internal il contenuto solo i membri, hidden solo i membri in assoluto.openinternalhidden imagenel corpo stringfacoltativo L’id di un’immagine caricata (POST /me/pictures) come immagine del gruppo. Vuoto la toglie. bannernel corpo stringfacoltativo L’id di un’immagine caricata come copertina del gruppo. Vuoto la toglie.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Bot Ciò che accade nei gruppi di un bot, in tempo reale: come flusso, pagina per pagina o consegnato a un indirizzo.
GET /v2/eventsGli eventi dei gruppi del bot da un evento in poi, pagina per pagina.
Solo con il token di un bot. Gli eventi di un canale solo se il bot può vederlo.
Gli eventi restano un giorno. next è il numero dell’ultimo, come since per la pagina successiva.
Parametri Nome Tipo Significato sincenell’indirizzo stringfacoltativo Il numero dell’ultimo evento che il bot ha già. Senza, il flusso inizia ora e l’elenco dal più vecchio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/events?since=0"Risposta Risponde con una pagina di BotEvent , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200401429
GET /v2/events/streamGli eventi dei gruppi del bot appena accadono (server-sent events).
Diritto read con ETag dalla v2.20 La connessione resta aperta e si chiude dopo dieci minuti; il client si riconnette e invia Last-Event-ID.
Solo con il token di un bot. Gli eventi di un canale solo se il bot può vederlo.
Parametri Nome Tipo Significato sincenell’indirizzo stringfacoltativo Il numero dell’ultimo evento che il bot ha già. Senza, il flusso inizia ora e l’elenco dal più vecchio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/events/stream?since=0"Risposta Risponde con un BotEvent .
Esempio {
"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
}
}
}Stati possibili: 200304401429
GET /v2/me/commandsI comandi del bot.
Diritto read con ETag dalla v2.20 Solo con il token di un bot. Gli eventi di un canale solo se il bot può vederlo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/commands"Risposta Risponde con una pagina di BotCommand , come `items` e `next`.
Esempio {
"items": [
{
"name": "dice",
"description": "Rolls a die"
}
],
"next": null
}Stati possibili: 200304401429
PUT /v2/me/commandsImpostare i comandi del bot, tutti insieme.
Sostituisce tutti i comandi; un elenco vuoto li toglie. Nelle chat che il bot può vedere, il campo di testo li propone dopo «/».
Parametri Nome Tipo Significato commandsnel corpo object[]obbligatorio Fino a 25 comandi, ciascuno { name, description }.
Richiesta d’esempio 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"Risposta Risponde con una pagina di BotCommand , come `items` e `next`.
Esempio {
"items": [
{
"name": "dice",
"description": "Rolls a die"
}
],
"next": null
}Stati possibili: 200400401403429
POST /v2/interactions/{id}/replyRispondere a un comando o a un pulsante.
Entro 15 minuti dall’evento command o interaction; con private vede la risposta solo chi ha usato il comando o il pulsante.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id dall’evento (data.interaction). textnel corpo stringfacoltativo Il testo del post, della risposta o del messaggio. privatenel corpo booleanfacoltativo true: vede la risposta solo chi ha usato il comando o il pulsante, per un giorno.cardnel corpo objectfacoltativo Una scheda { title, text, color, fields: [{ name, value }] }, al massimo 10 campi. buttonsnel corpo object[]facoltativo Fino a 5 pulsanti, ciascuno { id, label, style } con style primary, secondary o danger. Una pressione arriva come evento interaction.
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
POST /v2/channels/{id}/voicePrendere un posto in un canale vocale per riprodurre musica o suoni.
Solo con il token di un bot, come consente il suo ruolo nel canale. Il programma si collega con un SDK LiveKit e invia il suo audio come microfono; ognuno ne regola il volume per sé.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id di un canale.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/voice"Risposta Risponde con un VoiceSeat .
Esempio {
"url": "wss://voice.example.org",
"token": "eyJhbGciOiJIUzI1NiJ9…",
"iceServers": [
{
"urls": [
"stun:turn.example.org:3478"
]
}
],
"speak": true,
"video": false
}Stati possibili: 200400401403404429
Scopri Tendenze, ricerca e le emoji proprie dell’istanza.
GET /v2/tagsI tag che girano in questo momento.
Diritto read con ETag dalla v2.0 Al massimo 10 tag di tendenza per punti: ogni uso conta 1 e si dimezza ogni 3 giorni, un account conta al massimo 3 al giorno. posts è il punteggio arrotondato. limit accorcia solo l’elenco. I tag messi in evidenza dal team possono stare più in alto.
Parametri Nome Tipo Significato limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/tags?limit=10"Risposta Risponde con una pagina di Tag , come `items` e `next`.
Esempio {
"items": [
{
"tag": "garden",
"posts": 58
}
],
"next": null
}Stati possibili: 200304401429
GET /v2/searchUna ricerca su post, nomi, nomi brevi e tag.
Diritto read con ETag dalla v2.0 Cerca solo i contenuti pubblici: post fuori dai gruppi, profili e tag. limit vale per tipo.
Parametri Nome Tipo Significato qnell’indirizzo stringobbligatorio Le parole cercate. typenell’indirizzo stringfacoltativo Che genere di risultato. Senza, ogni genere.allpostsprofilestags limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/search?q=garden&type=posts"Risposta Risponde con un SearchResult .
Esempio {
"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
}
]
}Stati possibili: 200304400401429
GET /v2/emojisGli emoji propri dell’istanza, con l’indirizzo delle loro immagini.
Diritto read con ETag dalla v2.1 Nei testi un emoji compare come :name:. Sostituiscilo con l’immagine di questa lista; i nomi sconosciuti restano testo.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/emojis"Risposta Risponde con una pagina di Emoji , come `items` e `next`.
Esempio {
"items": [
{
"name": "tellmelo",
"url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}
],
"next": null
}Stati possibili: 200304401429
GIF e video La libreria media: trovare GIF e video condivisi, caricare e gestire i propri e incorporarli su altri siti web.
GET /v2/mediaGIF o video condivisi, prima i più usati.
Diritto read sfogliabile con ETag dalla v2.14 Senza gli account che hai bloccato o che ti hanno bloccato. Carica url e poster con la chiave nell’header, per i post su tellmelo.
Per altri siti web solo ciò che ha embed: i suoi indirizzi funzionano senza chiave, in qualsiasi browser.
Parametri Nome Tipo Significato kindnell’indirizzo stringfacoltativo gif o video; se non indicato, gif.gifvideoqnell’indirizzo stringfacoltativo Parole presenti nel nome o nelle parole chiave. anywherenell’indirizzo booleanfacoltativo true: solo ciò che può apparire anche su altri siti web.limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media?kind=gif&q=bees&anywhere=true&limit=20"Risposta Risponde con una pagina di MediaItem , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304400401429
GET /v2/media/mineLa tua libreria media, prima i più recenti.
Diritto media sfogliabile con ETag dalla v2.14 Parametri Nome Tipo Significato kindnell’indirizzo stringfacoltativo gif o video; se non indicato, gif.gifvideoqnell’indirizzo stringfacoltativo Parole presenti nel nome o nelle parole chiave. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media/mine?kind=gif&q=bees&limit=20"Risposta Risponde con una pagina di MediaItem , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304400401403429
GET /v2/media/{id}Una GIF o un video, tuo o condiviso.
Diritto read con ETag dalla v2.14 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’ID della GIF o del video.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"Risposta Risponde con un MediaItem .
Esempio {
"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>"
}
}Stati possibili: 200304400401404429
POST /v2/media/uploadsAvvia un caricamento.
Poi invia il file in pezzi di al massimo piece byte a /media/uploads/{upload}. Senza un nuovo pezzo, un caricamento termina dopo 15 minuti.
Valgono i limiti dell’app: GIF fino a 15 MB, video in base all’abbonamento per dimensione e durata, GIF al giorno, GIF private, punti video a settimana. Altrimenti ricevi 409, 413 o 429.
Parametri Nome Tipo Significato kindnel corpo stringobbligatorio gif o video; se non indicato, gif.gifvideosizenel corpo integerobbligatorio La dimensione dell’intero file in byte. namenel corpo stringobbligatorio Il nome con cui lo si trova: da 2 a 40 caratteri. keywordsnel corpo stringfacoltativo Parole chiave per la ricerca, separate da spazi. sharednel corpo booleanfacoltativo true: condiviso con tutti su tellmelo.anywherenel corpo booleanfacoltativo true: condiviso e consentito anche su altri siti web. Solo insieme a shared.
Richiesta d’esempio 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"Risposta Risponde con un UploadStarted .
Esempio {
"upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
"piece": 4194304
}Stati possibili: 200400401403429
PUT /v2/media/uploads/{upload}Invia un pezzo del file.
Il corpo è il pezzo stesso (application/octet-stream), non JSON. Se non continua, ricevi 409 con received: riprendi da lì. Dopo l’ultimo pezzo il file viene convertito; la risposta contiene allora item.
Parametri Nome Tipo Significato uploadnel percorso stringobbligatorio L’upload ricevuto all’avvio. offsetnell’indirizzo integerobbligatorio Dove inizia il pezzo nel file, in byte; 0 per il primo.
Richiesta d’esempio 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"Risposta Risponde con un UploadPiece .
Esempio {
"received": 4194304,
"item": null
}Stati possibili: 200400401403404429
POST /v2/media/{id}Modifica una delle tue GIF o uno dei tuoi video.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’ID della GIF o del video. namenel corpo stringfacoltativo Il nome con cui lo si trova: da 2 a 40 caratteri. keywordsnel corpo stringfacoltativo Parole chiave per la ricerca, separate da spazi. sharednel corpo booleanfacoltativo true: condiviso con tutti su tellmelo.anywherenel corpo booleanfacoltativo true: condiviso e consentito anche su altri siti web. Solo insieme a shared.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/media/{id}Rimuovi una delle tue GIF o uno dei tuoi video.
I post che lo mostrano già lo mantengono. Su altri siti web sparisce entro pochi minuti.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’ID della GIF o del video.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/media/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Il tuo account Il tuo profilo, il tuo feed, le tue emoji e i tuoi webhook.
GET /v2/meIl tuo profilo, con l’id che gli altri percorsi si aspettano.
Diritto read con ETag dalla v2.0 Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me"Risposta Risponde con un Profile .
Esempio {
"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
}Stati possibili: 200304401429
GET /v2/feedIl tuo feed, come lo compone l’applicazione.
Diritto read sfogliabile dalla v2.0 Nessun ETag, perché l’ordine cambia di continuo. Un elenco iniziato resta uguale fino alla fine.
Parametri Nome Tipo Significato tabnell’indirizzo stringfacoltativo Quale feed: for-you, following, latest o bookmarks. latest come valore predefinito.for-youfollowinglatestbookmarks tagnell’indirizzo stringfacoltativo Solo i post su questo tag: scritti con esso o in cui il server lo riconosce. Senza, nessun filtro. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/feed?tab=following&limit=20"Risposta Risponde con una pagina di Post , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200400401429
POST /v2/me/picturesCaricare un’immagine, come i suoi byte. Risponde con id e url; poi usi l’id come immagine del profilo, copertina o in un post.
PNG, JPEG, WebP o GIF, riconosciuto dai primi byte; salvato di nuovo senza metadati. Un’immagine usata da nessuna parte viene eliminata più tardi.
Richiesta d’esempio 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"Risposta Risponde con un Picture .
Esempio {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}Stati possibili: 200401403429
PUT /v2/me/profileModificare il profilo: nome, su di te, immagine del profilo, copertina e colore del profilo. Ciò che non indichi resta com’è.
Diritto profile dalla v2.19 Serve il permesso profile. Il tuo @nome resta nell’app: è anche il tuo nome di accesso.
Parametri Nome Tipo Significato namenel corpo stringfacoltativo Il nome visualizzato, al massimo 60 caratteri. aboutnel corpo stringfacoltativo Il testo «Su di te». avatarnel corpo stringfacoltativo L’id di un’immagine caricata come immagine del profilo. Vuoto la toglie. bannernel corpo stringfacoltativo L’id di un’immagine caricata come copertina. Vuoto la toglie. colornel corpo stringfacoltativo Il colore del profilo, con un abbonamento. null lo toglie.indigovioletrosecoralamberlimegreentealskyslatesandnight
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403429
GET /v2/me/emojisLe tue emoji.
Diritto read con ETag dalla v2.19 Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/emojis"Risposta Risponde con una pagina di OwnEmoji , come `items` e `next`.
Esempio {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}Stati possibili: 200304401429
POST /v2/me/emojis/picturesCaricare l’immagine di una tua emoji, come i suoi byte.
Diritto profile dalla v2.19 Le emoji animate richiedono un abbonamento. Se dopo la conversione è troppo grande, l’immagine viene rifiutata.
Richiesta d’esempio 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"Risposta Risponde con un EmojiPicture .
Esempio {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}Stati possibili: 200401403429
POST /v2/me/emojisCreare una tua emoji. Risponde con tutte le tue emoji.
Diritto profile dalla v2.19 Quante emoji puoi creare dipende dall’abbonamento.
Parametri Nome Tipo Significato namenel corpo stringobbligatorio Il nome con cui scrivi l’emoji, come :nome:. picturenel corpo stringobbligatorio L’id di POST /me/emojis/pictures.
Richiesta d’esempio 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"Risposta Risponde con una pagina di OwnEmoji , come `items` e `next`.
Esempio {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}Stati possibili: 200400401403429
DELETE /v2/me/emojis/{name}Rimuovere una tua emoji. Risponde con le altre.
Diritto profile dalla v2.19 Parametri Nome Tipo Significato namenel percorso stringobbligatorio Il nome dell’emoji, senza due punti.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/emojis/sunflower"Risposta Risponde con una pagina di OwnEmoji , come `items` e `next`.
Esempio {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}Stati possibili: 200400401403404429
PUT /v2/me/emojis/sharingDecidere se i tuoi follower possono usare le tue emoji nei loro testi.
Diritto profile dalla v2.19 Parametri Nome Tipo Significato sharednel corpo booleanobbligatorio true condivide le tue emoji con i follower, false no.
Richiesta d’esempio curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"shared":true}' \
"https://api.tellmelo.com/v2/me/emojis/sharing"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403429
GET /v2/me/webhooksI tuoi webhook con il loro stato.
Diritto webhooks con ETag dalla v2.19 Serve il permesso webhooks. I webhook arrivano con un abbonamento organizzazione o come partner.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks"Risposta Risponde con una pagina di Webhook , come `items` e `next`.
Esempio {
"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
}Stati possibili: 200304401403429
POST /v2/me/webhooksCreare un webhook. Risponde con l’id e il segreto per le firme, solo questa volta.
Diritto webhooks dalla v2.19 Ogni consegna è firmata con il segreto (X-Tellmelo-Signature). Conservalo; non verrà mostrato di nuovo.
Parametri Nome Tipo Significato urlnel corpo stringobbligatorio Un indirizzo HTTPS fuori dalle reti locali, senza credenziali. kindsnel corpo string[]obbligatorio Di cosa viene avvisato il webhook. Quali tipi hai a disposizione dipende da abbonamento e partnership.replymentiongroup_mentionfollowlikerepostmessagequota_changedquota_giftdrop_claimeddrop_empty
Richiesta d’esempio 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"Risposta Risponde con un WebhookCreated .
Esempio {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"secret": "whsec_3f9a…"
}Stati possibili: 200400401403429
DELETE /v2/me/webhooks/{id}Eliminare un webhook.
Diritto webhooks dalla v2.19 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id del webhook.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/me/webhooks/{id}/testInviare una prova a un webhook.
Diritto webhooks dalla v2.19 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id del webhook.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b/test"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Notifiche Ciò che è successo attorno al tuo account, pagina per pagina.
GET /v2/notificationsLe tue notifiche, le più recenti per prime.
Diritto read sfogliabile con ETag dalla v2.0 Leggere non segna nulla come letto; lo fa POST /notifications/read. Gli eventi dello stesso tipo sullo stesso post stanno in una riga; more dice quanti.
Parametri Nome Tipo Significato limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/notifications?limit=20"Risposta Risponde con una pagina di Notification , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304401429
POST /v2/notifications/readSegnare le tue notifiche come lette.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/notifications/read"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200401403429
Messaggi La tua casella e le conversazioni. Una conversazione prende il nome dall’altro account.
GET /v2/conversationsLa tua posta: una riga per conversazione, la più recente per prima.
Diritto read sfogliabile con ETag dalla v2.0 Parametri Nome Tipo Significato limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations?limit=20"Risposta Risponde con una pagina di Conversation , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304401429
GET /v2/conversations/{with}/messagesI messaggi di una conversazione, i più recenti per primi.
Diritto read sfogliabile con ETag dalla v2.0 Leggere non segna nulla come letto; lo fa POST /conversations/{with}/read.
Parametri Nome Tipo Significato withnel percorso stringobbligatorio L’id dell’altro account. Una conversazione non ha un id proprio. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages?limit=20"Risposta Risponde con una pagina di Message , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304400401404429
POST /v2/conversations/{with}/messagesInviare un messaggio in una conversazione.
Valgono le regole dell’app: chi ti ha bloccato non è raggiungibile e contano le impostazioni dell’altra persona.
Immagini, GIF e video non si possono allegare ai messaggi tramite l’API, solo nell’app.
Parametri Nome Tipo Significato withnel percorso stringobbligatorio L’id dell’altro account. Una conversazione non ha un id proprio. textnel corpo stringobbligatorio Il testo del post, della risposta o del messaggio. replyTonel corpo stringfacoltativo L’id di un messaggio precedente di questa conversazione a cui questo risponde. Dalla 2.2.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/conversations/{with}/readSegnare come letti tutti i messaggi di una conversazione.
Parametri Nome Tipo Significato withnel percorso stringobbligatorio L’id dell’altro account. Una conversazione non ha un id proprio.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/read"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/conversations/{with}/messages/{id}Eliminare un tuo messaggio.
Solo i tuoi messaggi, e solo entro 24 ore dall’invio.
Parametri Nome Tipo Significato withnel percorso stringobbligatorio L’id dell’altro account. Una conversazione non ha un id proprio. idnel percorso stringobbligatorio L’identificativo del messaggio.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
POST /v2/conversations/{with}/plannedProgrammare un messaggio per più tardi. Risponde con l’id del messaggio programmato.
Serve un abbonamento con i messaggi programmati, altrimenti 403. Con la crittografia end-to-end da entrambe le parti funziona solo nell’app.
Parametri Nome Tipo Significato withnel percorso stringobbligatorio L’id dell’altro account. Una conversazione non ha un id proprio. textnel corpo stringobbligatorio Il testo del post, della risposta o del messaggio. sendAtnel corpo integerobbligatorio Quando viene inviato il messaggio, in millisecondi dal 1970.
Richiesta d’esempio 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"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403404429
GET /v2/me/planned-messagesI tuoi messaggi ancora da inviare, in ordine di ora.
Diritto read con ETag dalla v2.19 Parametri Nome Tipo Significato withnell’indirizzo stringfacoltativo Solo i messaggi per questo account (il suo id).
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages"Risposta Risponde con una pagina di PlannedMessage , come `items` e `next`.
Esempio {
"items": [
{
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"text": "Happy birthday! 🎂",
"sendAt": 1758710400000,
"state": "waiting"
}
],
"next": null
}Stati possibili: 200304401429
POST /v2/me/planned-messages/{id}/sendInviare ora un messaggio programmato trattenuto o non riuscito.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id del messaggio programmato.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/me/planned-messages/{id}Eliminare un messaggio programmato prima che venga inviato.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id del messaggio programmato.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Relazioni Mi piace, salvare, condividere, seguire, entrare, bloccare: un solo percorso, attivato e tolto con active. Dalla 2.19 anche gli elenchi: follower, seguiti e i tuoi blocchi e silenziamenti.
POST /v2/relationsMettere mi piace, salvare, condividere, seguire, entrare, bloccare, silenziare, a seconda di kind.
target è un post per like, save e repost, un gruppo per join, un account per follow, block e mute. active: false toglie la relazione.
Parametri Nome Tipo Significato kindnel corpo stringobbligatorio Quale relazione: like, save, repost, follow, join, block o mute (dalla 2.2).likesaverepostfollowjoinblockmute targetnel corpo stringobbligatorio L’id del post, del profilo o del gruppo, a seconda di kind. activenel corpo booleanfacoltativo true la imposta, false la toglie.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403429
GET /v2/profiles/{handle}/followersChi segue un profilo, i più recenti prima.
Diritto read sfogliabile con ETag dalla v2.19 Parametri Nome Tipo Significato handlenel percorso stringobbligatorio Il nome breve di un profilo, con maiuscole o minuscole indifferentemente. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/followers?limit=20"Risposta Risponde con una pagina di ProfileBrief , come `items` e `next`.
Esempio {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Stati possibili: 200304400401404429
GET /v2/profiles/{handle}/followingChi è seguito da un profilo, i più recenti prima.
Diritto read sfogliabile con ETag dalla v2.19 Parametri Nome Tipo Significato handlenel percorso stringobbligatorio Il nome breve di un profilo, con maiuscole o minuscole indifferentemente. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/following?limit=20"Risposta Risponde con una pagina di ProfileBrief , come `items` e `next`.
Esempio {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Stati possibili: 200304400401404429
GET /v2/me/relationsChi hai bloccato, silenziato o bloccato solo per i messaggi, i più recenti prima.
Diritto read sfogliabile con ETag dalla v2.19 Solo i tuoi elenchi. Attivare e togliere passa da POST /relations.
Parametri Nome Tipo Significato kindnell’indirizzo stringobbligatorio block bloccati, mute silenziati, dm_block bloccati solo per i messaggi.blockmutedm_blocklimitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/relations?kind=mute&limit=20"Risposta Risponde con una pagina di ProfileBrief , come `items` e `next`.
Esempio {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Stati possibili: 200304400401429
Raccolte Ordina i post salvati in raccolte tue. Un post può stare in più raccolte; tolto da una raccolta resta salvato.
GET /v2/me/collectionsLe tue raccolte con il numero dei loro post.
Diritto read con ETag dalla v2.19 Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections"Risposta Risponde con una pagina di Collection , come `items` e `next`.
Esempio {
"items": [
{
"id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
"name": "Recipes",
"count": 12
}
],
"next": null
}Stati possibili: 200304401429
POST /v2/me/collectionsCreare una raccolta. Risponde con il suo id.
Quante raccolte puoi creare dipende dall’abbonamento.
Parametri Nome Tipo Significato namenel corpo stringobbligatorio Il nome, al massimo 40 caratteri. Unico per account, senza distinguere maiuscole e minuscole.
Richiesta d’esempio curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Recipes"}' \
"https://api.tellmelo.com/v2/me/collections"Risposta Risponde con un Made .
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Stati possibili: 200400401403429
PUT /v2/me/collections/{id}Rinominare una raccolta.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id della raccolta. namenel corpo stringobbligatorio Il nome, al massimo 40 caratteri. Unico per account, senza distinguere maiuscole e minuscole.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
DELETE /v2/me/collections/{id}Eliminare una raccolta.
I post al suo interno restano salvati.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id della raccolta.
Richiesta d’esempio curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
GET /v2/me/collections/{id}/postsI post di una raccolta, come nella scheda dei salvati.
Diritto read sfogliabile dalla v2.19 Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id della raccolta. limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718/posts?limit=20"Risposta Risponde con una pagina di Post , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200400401404429
POST /v2/me/collections/{id}/postsMettere un post in una raccolta o toglierlo.
Metterci un post lo salva anche. Solo post visibili.
Parametri Nome Tipo Significato idnel percorso stringobbligatorio L’id della raccolta. postnel corpo stringobbligatorio L’id del post. insidenel corpo booleanfacoltativo true mette dentro il post (predefinito), false lo toglie.
Richiesta d’esempio 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"Risposta Risponde con un Ok .
Esempio {
"ok": true
}Stati possibili: 200400401403404429
Regali Leggere il contingente di un partner e regalare da lì, mettere regali sotto i post e tenerli d’occhio. Ritirarli resta riservato alle persone, nell’app.
GET /v2/partner/quotaQuanto resta da regalare nel tuo contingente.
Diritto read con ETag dalla v2.12 Solo per partner con un contingente; gli altri ricevono 403.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/partner/quota"Risposta Risponde con un Quota .
Esempio {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}Stati possibili: 200304401429
GET /v2/partner/giftsCosa hai regalato dal contingente, a chi e quando, dal più recente.
Diritto read sfogliabile con ETag dalla v2.12 Solo per partner con un contingente; gli altri ricevono 403.
Parametri Nome Tipo Significato limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/partner/gifts?limit=20"Risposta Risponde con una pagina di QuotaGift , come `items` e `next`.
Esempio {
"items": [
{
"item": "plan",
"quantity": 3,
"itemId": null,
"recipient": {
"handle": "jon",
"name": "Jon"
},
"createdAt": 1758627600000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}Stati possibili: 200304401429
POST /v2/partner/giftsRegalare mesi di abbonamento o scintille dal tuo contingente a un membro.
Solo per partner con un contingente; gli altri ricevono 403.
Come nell’app, il membro vede da chi arriva il regalo. Al massimo 60 regali all’ora.
Parametri Nome Tipo Significato handlenel corpo stringobbligatorio Il @nome del membro a cui regali, con o senza @. itemnel corpo stringobbligatorio plan per mesi di abbonamento, sparks per scintille, shop per un look dalla tua scorta (dalla 2.13).plansparksshopquantitynel corpo integerfacoltativo Quanto: fino a 12 mesi o 35 scintille per regalo. itemIdnel corpo stringfacoltativo Per shop: l’ID del look, come lo indica looks nel contingente. Un esemplare per regalo; quantity allora non vale.
Richiesta d’esempio 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"Risposta Risponde con un Quota .
Esempio {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}Stati possibili: 200400401403429
GET /v2/gift-dropsI tuoi regali sotto i post: quanti posti sono ancora liberi e come sono stati pagati.
Diritto read sfogliabile con ETag dalla v2.12 Parametri Nome Tipo Significato limitnell’indirizzo integerfacoltativo Voci per pagina: 20 di default, al massimo 50. cursornell’indirizzo stringfacoltativo Il next della risposta precedente. Senza, dall’inizio.
Richiesta d’esempio curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/gift-drops?limit=20"Risposta Risponde con una pagina di OwnGiftDrop , come `items` e `next`.
Esempio {
"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"
}Stati possibili: 200304401429
POST /v2/gift-dropsPubblicare un post con regali da ritirare.
Gratis per il proprietario e per i membri del team con questo permesso, altrimenti dal tuo contingente. Ciò che andrebbe pagato viene rifiutato con 422: pagare si può solo nell’app.
Ritirare si può solo nell’app, così nessun programma si prende tutti i posti. Quanti ne restano liberi è indicato in giftDrop del post.
Parametri Nome Tipo Significato textnel corpo stringfacoltativo Il testo del post, della risposta o del messaggio. communitynel corpo stringfacoltativo L’id del gruppo nel cui canale feed va il post; deve essere attivo e ti serve il permesso. Senza, il post sta fuori da ogni gruppo. itemnel corpo stringobbligatorio plan per mesi di abbonamento, sparks per scintille.plansparksquantitynel corpo integerobbligatorio Cosa contiene ogni posto: fino a 12 mesi o 35 scintille. placesnel corpo integerobbligatorio Per quante persone, fino a 10.000. audiencenel corpo stringfacoltativo Chi può ritirare: all tutti, followers solo i tuoi follower, group solo i membri del gruppo (solo insieme a community).allfollowersgroup newAccountsnel corpo booleanfacoltativo true lascia ritirare anche gli account con meno di 7 giorni. Senza, restano esclusi.
Richiesta d’esempio 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"Risposta Risponde con un DropCreated .
Esempio {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota"
}Stati possibili: 200400401403429
Oggetti Tutti gli oggetti, campo per campo. [] significa elenco.
ServiceLa risposta della radice: chi risponde e che cosa può fare questa chiave.
Campo Tipo Significato namestringSempre tellmelo. versionstringLa versione dell’API, per esempio 2.1. scopestringChe cosa può fare questa chiave: read o read write. rateLimitRateLimitLa quota di questa chiave. docsstringDove si trova questa documentazione, come percorso su questa istanza. specstringDove si trova la descrizione leggibile dalle macchine.
Esempio {
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}RateLimitLa quota di questa chiave nel minuto in corso.
Campo Tipo Significato limitintegerRichieste al minuto. remainingintegerQuante ne restano in questo minuto.
Esempio {
"limit": 120,
"remaining": 117
}PostUn post, con la stessa forma ovunque.
Campo Tipo Significato idstringL’identificativo del post. textstringo null Il testo come è stato scritto (null per un post che è solo un sondaggio o solo immagini). kindstringChe cosa è il post.post — Un post con testo, immagini o una citazione.poll — Un post con un sondaggio. authorProfileBriefChi l’ha scritto. communityCommunityBriefo null Il gruppo in cui è stato scritto (null fuori da ogni gruppo). mediaMedia[]Le sue immagini, in ordine; vuota se non ce ne sono. pollPollo null Il sondaggio (null se non c’è). quotesstringo null L’identificativo del post che questo cita. continuesstringo null L’identificativo del post che questo prosegue, come aggiunta. countsCountsRisposte, mi piace e ricondivisioni. pinnedbooleanSe è fissato in cima al profilo di chi l’ha scritto. giftDropGiftDropo null I regali da ritirare sotto il post (null se non ce ne sono). createdAtintegerQuando è stato scritto.
Esempio {
"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
}ReplyUna risposta sotto un post: un post con due campi in più.
Ogni campo di Post e, in più:
Campo Tipo Significato postIdstringIl post a cui è appesa tutta la conversazione. parentIdstringo null La risposta a cui risponde questa (null se risponde direttamente al post).
Esempio {
"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
}ReplyVoteIl tuo voto su una risposta e il suo punteggio.
Campo Tipo Significato votestringIl tuo voto.up — In su.down — In giù.none — Nessun voto. scoreintegerVoti in su meno voti in giù, anche sotto zero.
Esempio {
"vote": "up",
"score": 12
}PlannedReplyUna tua risposta programmata per più tardi.
Campo Tipo Significato idstringL’id della risposta programmata. parentIdstringo null La risposta a cui risponderà (null se risponde direttamente al post). textstringIl testo. publishAtintegerQuando esce. statestringIl suo stato.waiting — Aspetta la sua ora.failed — Non è stato possibile inviarla, per esempio perché il post non c’è più.
Esempio {
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"parentId": null,
"text": "Count me in for Saturday!",
"publishAt": 1758710400000,
"state": "waiting"
}ReplySettingsLe impostazioni di risposta di un tuo post.
Campo Tipo Significato audiencestringChi può rispondere.all — Tutti.following — Account che segui.mentioned — Chi è menzionato nel post.nobody — Nessuno tranne te. approvalbooleanSe le risposte attendono la tua approvazione. slowstringLa modalità lenta.auto — Si attiva da sola quando arrivano molte risposte.on — Sempre attiva.off — Disattivata.
Esempio {
"audience": "following",
"approval": false,
"slow": "auto"
}CountsQuante risposte, mi piace e ricondivisioni ha un post.
Campo Tipo Significato repliesintegerLe risposte, tutti i livelli insieme. likesintegerI mi piace. repostsintegerLe ricondivisioni.
Esempio {
"replies": 4,
"likes": 31,
"reposts": 2
}PollIl sondaggio di un post.
Campo Tipo Significato optionsPollOption[]Le risposte, in ordine. option nel voto conta da 0. totalintegerTutti i voti insieme, sempre presente. multiplebooleanSe si può scegliere più di una risposta. endsAtintegero null Quando finisce il sondaggio (null se non ha fine). runningbooleanSe si può ancora votare. resultsVisiblebooleanSe i voti per risposta vengono mostrati (vedi votes). myVotesinteger[]Le risposte che hai scelto, contate da 0.
Esempio {
"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
]
}PollOptionUna risposta di un sondaggio.
Campo Tipo Significato textstringLa risposta. votesintegero null I suoi voti (null finché il risultato è trattenuto).
Esempio {
"text": "Lavender",
"votes": 12
}ProfileBriefUn profilo come compare dentro altri oggetti: come autore, in una ricerca.
Campo Tipo Significato idstringL’identificativo dell’account: ciò che si aspettano /relations e /conversations/{with}. handlestringIl nome breve, senza @, scritto come l’ha scelto il membro. namestringIl nome visualizzato. Può contenere emoji, anche :name:. verifiedbooleanSe l’account è verificato. accountKindstringChe tipo di account è.person — Una persona.business — Un’azienda.association — Un’associazione.automated — Un account automatico, per esempio un bot.bot — Un bot dei gruppi, gestito da un programma con una propria chiave (da 2.18).
Esempio {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}ProfileUn profilo da solo, con la sua descrizione e i suoi follower.
Ogni campo di ProfileBrief e, in più:
Campo Tipo Significato aboutstringo null La descrizione (null se non c’è). websitestringo null Il sito web del profilo (null se non c’è). Dalla 2.3. websiteVerifiedbooleanSe il sito rimanda a questo profilo con rel=me, controllato ogni settimana. Dalla 2.3. followersintegerQuanti account lo seguono. createdAtintegero null Quando è stato creato l’account (null finché il membro nasconde la data di iscrizione; dalla 2.9).
Esempio {
"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
}MembershipCiò che il tuo account è e può fare nel gruppo.
Campo Tipo Significato leaderstringo null Se hai fondato il gruppo o lo co-guidi; null altrimenti.founder — Fondato.manager — Co-guida. rolesstring[]Gli id dei tuoi ruoli, il più alto prima. permissionsstring[]Ciò che puoi fare nel gruppo. mutedUntilintegero null Fino a quando un silenziamento ti zittisce qui; null se nessuno.
Esempio {
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"permissions": [
"attach",
"invite",
"send",
"view"
],
"mutedUntil": null
}PersonUn membro, in breve.
Campo Tipo Significato idstringL’id dell’account. handlestringIl nome utente, senza @. namestringIl nome visualizzato. botbooleanSe l’account è un bot (da 2.18).
Esempio {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
}ChannelUn canale di un gruppo.
Campo Tipo Significato idstringL’id. kindstringChe tipo di canale.feed — Il canale feed, i cui post sono anche nel feed pubblico.chat — Una chat.voice — Un canale vocale; si parla solo nell’app.hub — L’hub del gruppo: la sua pagina con ciò che è. Sempre presente, senza messaggi. namestringo null Il nome senza #; null per il nome che l’app dà in ogni lingua. topicstringL’argomento; vuoto se non c’è. categoryChannelCategoryo null La categoria; null senza. unreadintegerQuanti messaggi degli altri non hai ancora letto, fino a 100. permissionsstring[]Ciò che puoi fare in questo canale. symbolChannelSymbolIl suo simbolo; la forma è già quella del gruppo se ne fissa una.
Esempio {
"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"
}
}ChannelCategoryLa categoria sotto cui sta un canale.
Campo Tipo Significato idstringL’id. namestringIl nome. symbolChannelSymbolIl suo simbolo.
Esempio {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Garden",
"symbol": {
"emoji": null,
"icon": null,
"image": null,
"color": null,
"shape": null
}
}ChannelSymbolIl simbolo di un canale o categoria: al massimo uno tra emoji, simbolo e immagine, altrimenti il segno del suo tipo.
Campo Tipo Significato emojistringo null L’emoji; null se assente. iconstringo null Il nome del simbolo della raccolta dell’app; null se assente. imagestringo null L’indirizzo dell’immagine propria; null se assente. colorstringo null Il colore del riquadro; null per quello del suo tipo. shapestringo null La forma del riquadro; null per un cerchio.
Esempio {
"emoji": "🌻",
"icon": null,
"image": null,
"color": "amber",
"shape": "circle"
}ChannelMessageUn messaggio in un canale chat.
Campo Tipo Significato idstringL’id. textstringo null Il testo (null per un messaggio solo di immagini o voce). authorPersonChi l’ha scritto. mediaMedia[]Le sue immagini e i messaggi vocali; vuoto se non ce ne sono. replyTostringo null L’id del messaggio a cui risponde; null se a nessuno. roleColorstringo null Il colore del ruolo più alto dell’autore che ne ha uno; null se nessuno. threadOfstringo null Il messaggio nel cui thread risponde questo; null nella chat. threadCountintegerQuante risposte ha il thread di questo messaggio. cardobjecto null La scheda di un bot: title, text, color e fields; altrimenti null. buttonsobject[]I pulsanti di un bot: ciascuno id, label e style. createdAtintegerQuando è stato scritto.
Esempio {
"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
}RoleUn ruolo di un gruppo.
Campo Tipo Significato idstringL’id. namestringo null Il nome; null per @everyone. everyonebooleanSe è @everyone, il ruolo di tutti i membri. colorstringo null Il colore: indigo, violet, rose, amber, green o teal; null senza. permissionsstring[]I suoi permessi. membersintegerQuanti lo hanno; per @everyone tutti i membri. editablebooleanSe il tuo account può cambiarlo. selfablebooleanSe i membri prendono e lasciano il ruolo da soli.
Esempio {
"id": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"name": "Gardeners",
"everyone": false,
"color": "green",
"permissions": [
"attach",
"invite",
"send",
"view"
],
"members": 24,
"editable": true,
"selfable": false
}GroupMemberUn membro di un gruppo con i suoi ruoli.
Ogni campo di Person e, in più:
Campo Tipo Significato leaderstringo null Se il membro ha fondato il gruppo o lo co-guida; null altrimenti.founder — Fondato.manager — Co-guida. rolesstring[]Gli id dei suoi ruoli, il più alto prima. mutedUntilintegero null Fino a quando il membro è silenziato, se il tuo account può silenziare; altrimenti null.
Esempio {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false,
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"mutedUntil": null
}ChannelOverrideCiò che un ruolo può fare diversamente in un canale rispetto al gruppo.
Campo Tipo Significato rolestringL’id del ruolo. allowstring[]Ciò che può fare in più qui. denystring[]Ciò che non può fare qui.
Esempio {
"role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"allow": [
"send"
],
"deny": []
}BellLa campanella di un gruppo.
Campo Tipo Significato levelstringQuali notifiche arrivano.all — Ogni nuovo post nel canale feed, più @everyone.important — I post della guida nel canale feed, più @everyone.off — Niente, a meno che non ti menzionino con @nome.
Esempio {
"level": "important"
}InviteLinkUn link di invito di un gruppo.
Campo Tipo Significato codestringIl codice. urlstringL’indirizzo da condividere. createdByPersono null Chi l’ha creato; null se l’account è eliminato. createdAtintegerQuando è stato creato. expiresAtintegero null Fino a quando vale; null senza scadenza. usesintegerQuante volte è stato usato. maxUsesintegero null Quante volte si può usare; null senza limite.
Esempio {
"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
}InvitePreviewDove porta un link di invito.
Campo Tipo Significato communityInviteGroupIl gruppo. memberbooleanSe il tuo account è già membro.
Esempio {
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
},
"member": false
}InviteGroupIl gruppo dietro un link di invito.
Campo Tipo Significato idstringL’id. namestringIl nome. membersintegerQuanti membri ha. rulesstring[]Le sue regole, accettate entrando; vuoto se non ce ne sono.
Esempio {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
}JoinedL’ingresso con un link di invito.
Campo Tipo Significato communitystringL’id del gruppo.
Esempio {
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}LogEntryUna voce del registro della guida.
Campo Tipo Significato idstringL’id. actionstringCosa è successo.post_removed — Un post.member_removed — Un membro rimosso, prima della 2.16 (fuori per 90 giorni).message_removed — Un messaggio in un canale chat.member_kicked — Un’espulsione.member_banned — Un ban.member_unbanned — Un ban revocato.member_timed_out — Un silenziamento.timeout_lifted — Un silenziamento revocato.voice_muted — Silenziato in un canale vocale.voice_removed — Disconnesso da un canale vocale.bot_added — Un bot è entrato nel gruppo (da 2.18).bot_removed — Un bot è stato rimosso dal gruppo (da 2.18). memberPersonChi riguardava. reasonstringLa motivazione; vuota per i messaggi e quando non ne è stata data una. bystringo null Il nome di chi l’ha fatto; null se l’account è eliminato. createdAtintegerQuando.
Esempio {
"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
}BanUn ban da un gruppo.
Campo Tipo Significato memberPersonChi è bannato. untilintegero null Fino a quando; null finché non viene revocato. createdAtintegero null Da quando; null per i ban precedenti alla 2.16. bystringo null Il nome di chi ha bannato; null se sconosciuto.
Esempio {
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"until": 1759228800000,
"createdAt": 1758624000000,
"by": "Mara 🌻"
}UntilQuando finisce un silenziamento o un ban.
Campo Tipo Significato untilintegero null Il momento; null per un ban senza fine o un silenziamento revocato.
Esempio {
"until": 1758624600000
}TagUn tag e quanti post lo portano.
Campo Tipo Significato tagstringIl tag, senza #. postsintegerQuanti post recenti lo portano.
Esempio {
"tag": "garden",
"posts": 58
}SearchResultTre elenchi, eventualmente vuoti.
Campo Tipo Significato postsPost[]Post trovati, i più recenti per primi. profilesProfileBrief[]Profili trovati, per nome breve. tagsTag[]Tag trovati, i più usati per primi.
Esempio {
"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
}
]
}EmojiUn emoji di questa istanza.
Campo Tipo Significato namestringIl nome, come compare tra i due punti. urlstringL’indirizzo dell’immagine, relativo a questa istanza.
Esempio {
"name": "tellmelo",
"url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}NotificationUna notifica. Una riga può raccogliere più eventi dello stesso tipo.
Campo Tipo Significato idstringL’identificativo della notifica. kindstringChe cosa è successo.reply — Qualcuno ti ha risposto.like — A qualcuno piace il tuo post.reply_like — Qualcuno vota positivamente la tua risposta.duel — Qualcuno ti sfida a Duello di feed, oppure la tua sfida è stata giocata.reply_pick — L’autore di un post mette in evidenza la tua risposta.repost — Qualcuno ha ricondiviso il tuo post.follow — Qualcuno ti segue.mention — Qualcuno ti ha menzionato.group_mention — Qualcuno ha menzionato un gruppo che guidi; text è il suo nome.channel_mention — Qualcuno ti ha menzionato in un canale chat di uno dei tuoi gruppi, anche con @everyone; il membro è l’actor, la frase nomina canale e gruppo, mai il messaggio.message — Qualcuno ti ha scritto un messaggio.scheduled — Un tuo post programmato è stato pubblicato.video — Un tuo post che aspettava il suo video è uscito o è tornato una bozza.reminder — È arrivato un promemoria su un post salvato.report — Che cosa è successo a una segnalazione che hai inviato.moderation — Una decisione sul tuo account: un avvertimento, una limitazione, un ricorso.team — Nuovo lavoro per il team (solo proprietari, admin e moderatori).reward — Un premio per gli inviti sta per scadere o è scaduto.gift — Un regalo dal team: un abbonamento, oppure scintille per te o per un gruppo che guidi.present — Un regalo di un membro: scintille o tempo di abbonamento; il membro è l’actor.spark — Alcune scintille scadono presto, o a un gruppo che guidi non bastano più le scintille per i suoi vantaggi.loyalty — Sul ritmo di fedeltà: una settimana attiva conta o le manca un giorno, una ricompensa è nuova o sta per sparire.impact — Come sono andati dopo un giorno i tuoi post di dodici ore, in una sola notifica.discovery — Un invito al programma Scoperto, o che un posto lì inizia o finisce.group_post — Un nuovo post in un gruppo la cui campanella suona per questo.group_moderation — La guida di un gruppo ha rimosso un tuo post, o te, dal gruppo.group — Qualcosa che un membro ha fatto con te in un gruppo: invitarti, accoglierti o rifiutarti, renderti co-amministratore, cederti il gruppo o scioglierlo, oppure candidarsi nel tuo gruppo; il membro è l’actor, il nome del gruppo chiude la frase.coauthor — Qualcuno ti ha invitato come coautore di un post.partner — Un promemoria dal programma partner, o la fine del badge partner.news — Un nuovo articolo in una regione che segui.pick — Un tuo contributo è in gara come contributo della settimana o dell’anno, oppure ha vinto.advent — Una nuova casella del calendario dell’Avvento è aperta, una è stata aperta o quella di oggi aspetta ancora.team_message — Un messaggio che il team di tellmelo ha scritto a membri scelti.challenge — È iniziata una nuova sfida della settimana.nudge — Una volta sola: un post a cui nessuno ha ancora risposto, o la sfida in corso.signin — Un computer chiede se stai accedendo lì proprio ora. textstringo null Solo per segnalazioni e moderazione: il testo relativo, altrimenti null. actorActorChi l’ha fatto. postIdstringo null Il post di cui si tratta (null se non riguarda alcun post). readbooleanSe è stata segnata come letta. moreintegerPer quanti altri eventi vale questa riga, oltre a quello nominato. createdAtintegerQuando è successo la prima volta. updatedAtintegerQuando ha raccolto l’ultimo evento. La lista è ordinata così.
Esempio {
"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
}ActorChi ha fatto scattare una notifica.
Campo Tipo Significato handlestringIl nome breve. namestringIl nome visualizzato.
Esempio {
"handle": "jon",
"name": "Jon"
}ConversationUna riga della tua casella.
Campo Tipo Significato withstringL’identificativo dell’altro account: ciò che si aspetta /conversations/{with}/messages. handlestringIl suo nome breve. namestringIl suo nome visualizzato. excerptstringo null L’inizio dell’ultimo messaggio (null se non ha testo). truncatedbooleanSe l’estratto è stato accorciato. fromMebooleanSe l’ultimo messaggio è tuo. lastMessageIdstringL’identificativo dell’ultimo messaggio. unreadintegerQuanti dei suoi messaggi non hai ancora letto. updatedAtintegerQuando è stato scritto l’ultimo messaggio.
Esempio {
"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
}MessageUn messaggio in una conversazione.
Campo Tipo Significato idstringL’identificativo del messaggio. textstringo null Il testo (null per un messaggio fatto solo di immagini). fromstringL’identificativo dell’account che l’ha scritto. tostringL’identificativo dell’account a cui è stato scritto. readbooleanSe chi l’ha ricevuto l’ha letto. mediaMedia[]Le sue immagini; vuota se non ce ne sono. replyTostringo null L’id del messaggio a cui questo risponde (null se non risponde a nessuno). Dalla 2.2. createdAtintegerQuando è stato inviato.
Esempio {
"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
}PlannedMessageUn tuo messaggio programmato per più tardi.
Campo Tipo Significato idstringL’id del messaggio programmato. tostringL’id dell’account che lo riceve. textstringo null Il testo, null con la crittografia end-to-end. sendAtintegerQuando viene inviato. statestringIl suo stato.waiting — Aspetta la sua ora.held — Trattenuto perché l’abbonamento è finito. Puoi inviarlo tu o eliminarlo.failed — Non è stato possibile inviarlo.
Esempio {
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"text": "Happy birthday! 🎂",
"sendAt": 1758710400000,
"state": "waiting"
}ScheduledPostUn tuo post non ancora uscito.
Campo Tipo Significato idstringL’identificativo del post. textstringo null Il testo. communityIdstringo null Il gruppo in cui esce (null fuori dai gruppi). publishAtintegero null Quando esce (null finché aspetta altro). deleteAtintegero null Quando si cancella da solo (null: mai). waitingForstringCosa sta aspettando.time — La sua ora.review — L’approvazione di un testo scritto per revisione.check — Il controllo della moderazione automatica.payment — Il pagamento dei suoi regali. createdAtintegerQuando è stato scritto.
Esempio {
"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
}CollectionUna raccolta di post salvati.
Campo Tipo Significato idstringL’id della raccolta. namestringIl suo nome. countintegerQuanti post contiene.
Esempio {
"id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
"name": "Recipes",
"count": 12
}EventUn prossimo evento di un profilo.
Campo Tipo Significato idstringL’id dell’evento. titlestringIl titolo. startsAtintegerInizio. endsAtintegero null Fine, null senza fine. placestringo null Il luogo. descriptionstringo null La descrizione. signupsEventSignupso null Le iscrizioni, null senza iscrizione.
Esempio {
"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
}
}EventSignupsQuante persone si sono iscritte.
Campo Tipo Significato countintegerIl numero di iscrizioni. goingbooleanSe sei iscritto.
Esempio {
"count": 14,
"going": true
}EventSignupQualcuno che si è iscritto a un tuo evento.
Campo Tipo Significato idstringL’id dell’account. handlestringIl nome utente. namestringIl nome visualizzato. atintegerQuando si è iscritto.
Esempio {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"at": 1758624000000
}PictureUn’immagine caricata.
Campo Tipo Significato idstringL’id dell’immagine. urlstringDove si può vedere.
Esempio {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}EmojiPictureL’immagine caricata di un’emoji.
Campo Tipo Significato idstringL’id dell’immagine. urlstringDove si può vedere. animatedbooleanSe si muove.
Esempio {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}OwnEmojiUna delle tue emoji.
Campo Tipo Significato namestringIl suo nome. urlstringLa sua immagine. animatedbooleanSe si muove. restingbooleanA riposo perché l’abbonamento ora consente meno emoji: resta, ma non si può usare.
Esempio {
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}GroupEmojiUn’emoji di un gruppo.
Campo Tipo Significato namestringIl suo nome. urlstringLa sua immagine. animatedbooleanSe si muove.
Esempio {
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}BotEventUn evento in un gruppo del bot.
Campo Tipo Significato idstringIl suo numero, crescente; con esso si prosegue (since, Last-Event-ID). typestringCosa è successo.message.created — È stato scritto un messaggio.message.deleted — È stato eliminato un messaggio.member.joined — Qualcuno è entrato.member.left — Qualcuno è uscito o è stato rimosso.voice.joined — Qualcuno è entrato in un canale vocale.command — Qualcuno ha usato un comando del bot.interaction — Qualcuno ha premuto un pulsante in un messaggio del bot. communitystringIl gruppo. channelstringo null Il canale; null per tutto il gruppo. createdAtintegerQuando è successo. dataobjectCiò che lo accompagna, secondo il tipo: message, member (con reason), command o interaction.
Esempio {
"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
}
}
}BotCommandUn comando di un bot.
Campo Tipo Significato namestringIl suo nome, senza «/». descriptionstringCosa fa.
Esempio {
"name": "dice",
"description": "Rolls a die"
}VoiceSeatUn posto in un canale vocale.
Campo Tipo Significato urlstringL’indirizzo del server multimediale (LiveKit). tokenstringIl token per questo canale, valido alcuni minuti. iceServersobject[]I server STUN e TURN per la connessione. speakbooleanSe il bot può inviare audio lì. videobooleanSe il bot può inviare video lì.
Esempio {
"url": "wss://voice.example.org",
"token": "eyJhbGciOiJIUzI1NiJ9…",
"iceServers": [
{
"urls": [
"stun:turn.example.org:3478"
]
}
],
"speak": true,
"video": false
}WebhookUno dei tuoi webhook.
Campo Tipo Significato idstringL’id del webhook. urlstringIl suo indirizzo. kindsstring[]Di cosa viene avvisato. activebooleanSe riceve le consegne. Dopo molti errori di fila viene disattivato. lastStatusintegero null Lo stato HTTP dell’ultima consegna. lastAtintegero null Quando è avvenuta l’ultima consegna. failuresintegerErrori di fila.
Esempio {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"url": "https://example.org/tellmelo-hook",
"kinds": [
"reply",
"mention"
],
"active": true,
"lastStatus": 200,
"lastAt": 1758624000000,
"failures": 0
}WebhookCreatedUn nuovo webhook con il suo segreto.
Campo Tipo Significato idstringL’id del webhook. secretstringIl segreto per le firme, solo questa volta.
Esempio {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"secret": "whsec_3f9a…"
}GroupBotUn bot di un gruppo.
Campo Tipo Significato idstringL’id dell’account del bot. handlestringIl suo identificativo. namestringIl suo nome. descriptionstringCosa fa, nelle parole del proprietario. permissionsstring[]Cosa consente il suo ruolo nel gruppo.
Esempio {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "gardenbot",
"name": "Garden bot",
"description": "Reminds the group of watering days.",
"permissions": [
"send",
"view"
]
}VoiceRoomUn canale vocale con le persone presenti.
Campo Tipo Significato channelstringL’id del canale. peopleVoicePerson[]Chi c’è adesso.
Esempio {
"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
}
]
}VoicePersonQualcuno in un canale vocale.
Campo Tipo Significato idstringL’id dell’account. handlestringL’identificativo. namestringIl nome visualizzato. mutedbooleanSe il microfono è spento. deafbooleanSe non sente niente (per scelta propria). camerabooleanSe la videocamera è accesa. screenbooleanSe condivide lo schermo.
Esempio {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"muted": true,
"deaf": false,
"camera": false,
"screen": false
}GiftDropRegali sotto un post, mai con i nomi di chi li ha ritirati.
Campo Tipo Significato itemstringCosa contiene un posto.plan — Mesi di abbonamento (Sostenitore).sparks — Scintille. quantityintegerQuanto contiene ogni posto: mesi o scintille. placesintegerQuanti posti ci sono in tutto. leftintegerQuanti sono ancora liberi. audiencestringChi può ritirare.all — Tutti.followers — Solo i follower di chi regala.group — Solo i membri del gruppo del post. newAccountsbooleanSe possono ritirare anche gli account con meno di 7 giorni. statusstringA che punto è.awaiting_payment — In attesa di pagamento; il post non è ancora uscito.open — Ci sono ancora posti da ritirare.closed — Finito: tutto ritirato, pagamento rimborsato o post eliminato. claimedbooleanSe hai già un posto tu (sempre false sui percorsi pubblici).
Esempio {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
}OwnGiftDropI tuoi regali sotto un post, con il post e il pagamento.
Ogni campo di GiftDrop e, in più:
Campo Tipo Significato postIdstringIl post sotto cui si trovano. fundingstringCome sono pagati.free — Gratis.quota — Dal contingente.payment — Pagato. createdAtintegerQuando sono stati creati.
Esempio {
"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
}QuotaCosa c’è in un contingente.
Campo Tipo Significato monthsintegerMesi di abbonamento ancora da regalare. sparksintegerScintille ancora da regalare. looksQuotaLook[]Look della scorta ancora da regalare (dalla 2.13).
Esempio {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}QuotaLookUn look nella scorta di un partner, con gli esemplari rimasti (dalla 2.13).
Campo Tipo Significato idstringL’ID del look; quando lo regali, passalo come itemId. namestringIl nome del look. kindstringIl tipo di look.frame — Cornice del profilo.background — Effetto copertina.card — Card del profilo. quantityintegerQuanti esemplari restano.
Esempio {
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}QuotaGiftUn regalo dal contingente.
Campo Tipo Significato itemstringCosa è stato regalato.plan — Mesi di abbonamento (Sostenitore).sparks — Scintille.shop — Un look dalla scorta (dalla 2.13). quantityintegerQuanto. itemIdstringo null Il look regalato quando item è shop; altrimenti null. recipientActorA chi. createdAtintegerQuando.
Esempio {
"item": "plan",
"quantity": 3,
"itemId": null,
"recipient": {
"handle": "jon",
"name": "Jon"
},
"createdAt": 1758627600000
}EmbedGli indirizzi per altri siti web. Funzionano senza chiave.
Campo Tipo Significato pagestringIl player per un <iframe>. filestringIl file MP4 per un tuo player. posterstringL’immagine di anteprima. codestringIl codice pronto da incorporare.
Esempio {
"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>"
}UploadStartedUn caricamento avviato.
Campo Tipo Significato uploadstringL’ID di questo caricamento. pieceintegerLa dimensione massima di un pezzo, in byte.
Esempio {
"upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
"piece": 4194304
}UploadPieceUn pezzo arrivato.
Campo Tipo Significato receivedintegerQuanti byte sono arrivati. itemMediaItemo null Dopo l’ultimo pezzo la nuova GIF o il nuovo video, altrimenti null.
Esempio {
"received": 4194304,
"item": null
}CreatedLa risposta di una scrittura che ha creato qualcosa.
Campo Tipo Significato idstringL’identificativo di ciò che è stato creato. scheduledForintegero null Quando compare, se la pubblicazione è stata programmata (altrimenti null). deleteAtintegero null Quando si elimina da solo, se è stato impostato (altrimenti null).
Esempio {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}DropCreatedLa risposta quando è stato creato un post con regali.
Campo Tipo Significato idstringL’identificativo del nuovo post. fundingstringCome sono pagati i regali.free — Gratis.quota — Dal contingente.
Esempio {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota"
}MadeCiò che è stato appena creato o cambiato.
Campo Tipo Significato idstringL’id; per un link di invito il suo codice.
Esempio {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}OkLa risposta di una scrittura che non ha niente da restituire.
Campo Tipo Significato okbooleanSempre true.
Esempio {
"ok": true
}La descrizione leggibile da una macchina La tabella dietro questa pagina è disponibile come OpenAPI in https://api.tellmelo.com/v2/openapi.json.
https://api.tellmelo.com/v2/openapi.jsonGIF e video su altri siti web Ciò che un membro condivide e consente anche su altri siti web può essere mostrato da qualsiasi sito: la ricerca con anywhere=true lo trova e il suo embed contiene gli indirizzi. Se il membro lo ritira, lì sparisce entro pochi minuti.
Caricamento a pezzi Prima avvia, poi invia il file a pezzi. Dividi un file più grande in pezzi di piece byte, con offset nella posizione di ciascuno. Dopo l’ultimo pezzo arriva la GIF o il video 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": { … } } }Incorporare Il player mostra la GIF in loop o il video con i controlli, sotto il nome e chi l’ha condiviso. Inserisci nella pagina il codice di embed.code:
<iframe src="https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918" width="480" height="300" title="Happy bees" style="border:0;max-width:100%" loading="lazy" allowfullscreen></iframe>Forum e programmi che conoscono oEmbed recuperano il codice da soli, se gli dai l’indirizzo del player:
https://tellmelo.com/api/oembed?url=https%3A%2F%2Ftellmelo.com%2Fmedia-embed%2Fb2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918La chiave va sul tuo server, mai nel codice di una pagina web. Cerca e carica tramite il tuo server; gli indirizzi in embed non hanno bisogno di chiave.
Selettore GIF per il tuo sito Con una chiave del sito (Area sviluppatori → Selettore GIF per il tuo sito ) il tuo sito ottiene una ricerca pronta: due righe nella pagina, e un clic sul pulsante la apre. La chiave è pubblica e funziona solo sugli indirizzi che inserisci per essa. Il selettore mostra solo ciò che i membri hanno consentito su altri siti web.
<script src="https://tellmelo.com/picker.js" data-key="tmsk_…" defer></script>
<button type="button" data-tellmelo-picker>GIF</button>Quando si sceglie qualcosa, il pulsante emette tellmelo:pick con l’elemento: code per incorporarlo, file, poster, name e author. Con data-target="#field" inserisce code direttamente in un campo di testo, con data-kind="video" cerca video. Se incorpori il file da te, mostra il nome della persona che l’ha condiviso.
document.addEventListener('tellmelo:pick', (event) => {
const { code, file, name, author } = event.detail;
});Accedi con tellmelo Altri siti fanno accedere i membri con il loro account tellmelo tramite OpenID Connect (codice di autorizzazione con PKCE). Il sito riceve solo il nome utente, l’indirizzo email confermato e un identificativo proprio per membro (sub).
Richiedi un’app in «Area sviluppatori → Accedi con tellmelo». Il team controlla ogni app; dopo vedi lì l’ID client e, per le app con server, crei il segreto client, mostrato una sola volta.
Tutto ciò che serve a una libreria è nel documento di discovery:
https://tellmelo.com/.well-known/openid-configurationManda il membro a /oauth/authorize con response_type=code, client_id, redirect_uri (esattamente come registrato), scope=openid profile email, state, nonce e code_challenge con code_challenge_method=S256. Scambia il codice entro un minuto su /oauth/token: grant_type=authorization_code, code, redirect_uri e code_verifier; le app con server inviano anche il segreto, con autenticazione Basic o nel modulo. Il token ID (RS256, chiavi su /oauth/jwks) contiene sub, con profile anche preferred_username, con email anche email ed email_verified. Il token di accesso vale 10 minuti e legge solo /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
}Non ci sono token di aggiornamento: tellmelo fa accedere e non dà accesso duraturo. Se un membro rimuove il sito o il team sospende l’app, /oauth/userinfo risponde subito 401. prompt=none controlla senza pagina, prompt=consent chiede di nuovo.
Che cosa ci aspettiamo Valgono le stesse regole di sempre: niente molestie, niente spam, niente contenuti altrui senza diritti. Rispondi tu di ciò che pubblica la tua chiave.
Mostra sul tuo sito web GIF e video di altri solo se hanno embed, tramite questi indirizzi e con il nome di chi li ha condivisi. Se qualcosa non è più disponibile, smetti di mostrarlo. Non copiare i file in una tua raccolta.