Account e Impostazioni
API di sola lettura
In questo articolo
API di sola lettura
Metricgram include una API di base in sola lettura per permettere a strumenti esterni di consultare i dati di un gruppo senza accedere alla dashboard.
Beta: l'API è attualmente in fase di test ed è disponibile a partire dal piano Pro.
Creare un token
Vai su Impostazioni, apri Token API, scegli il gruppo e clicca su Crea token. Copia subito il token: viene mostrato una sola volta.
Ogni token è collegato a un solo gruppo. Per ora puoi avere un token attivo per gruppo e revocarlo in qualsiasi momento.
Autenticazione
curl -H "Authorization: Bearer IL_TUO_TOKEN_API" \
"https://metricgram.com/api/v1/members"
Le risposte corrette vengono restituite in formato JSON.
Ogni token è limitato a 60 richieste all'ora.
GET /api/v1/members
Restituisce i membri del gruppo associato al token.
Parametri disponibili:
status: all, active, inactive, left o unbanedadmin: true o falseis_bot: true o false. Questo parametro filtra solo valori booleani; i valori sconosciuti (null) compaiono solo quando il filtro non viene usato.query: ricerca per ID Telegram, username o nomelimit: predefinito 100, massimo 500page: predefinito 1include_email: true o false. Predefinito: false. Quando è true, Metricgram usa prima l’email dell’abbonamento e poi l’email salvata nella scheda del membro del gruppo. Può esserenull.
Esempio:
curl -G "https://metricgram.com/api/v1/members" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
--data-urlencode "status=active" \
--data-urlencode "limit=100" \
--data-urlencode "include_email=true" \
--data-urlencode "page=1"
Esempio di risposta JSON:
{
"data": [
{
"telegram_id": "123456789",
"username": "ana",
"first_name": "Ana",
"language_code": "es",
"is_bot": false,
"status": "active",
"joined_at": "2026-04-10T12:30:00Z",
"admin": false,
"email": "ana@example.com"
}
],
"meta": {
"group_id": 42,
"group_title": "Il mio gruppo",
"page": 1,
"limit": 100,
"count": 1,
"has_more": false,
"filters": {
"status": "active"
}
}
}
Campi principali della risposta:
telegram_id: ID Telegram come testo. Può esserenullse Metricgram non lo ha salvato.username,first_nameelanguage_code: dati pubblici di Telegram. Possono esserenull.is_bot:true,falseonullse Telegram non ha fornito questo valore.status:active,inactive,left,unbanedonullse non è stato salvato alcuno stato.admin:trueofalse.joined_at: data di ingresso in formato ISO 8601, oppurenull.email: viene restituito solo quandoinclude_email=true. Metricgram usa prima l’email dell’abbonamento e poi l’email salvata nella scheda del membro del gruppo. Può esserenull.meta: dati di paginazione e filtri della richiesta.
GET /api/v1/active_users
Restituisce membri non amministratori con messaggi o reazioni registrati nell’intervallo di date selezionato. Il proprietario del gruppo è escluso da questo elenco. I risultati sono ordinati per attività decrescente: prima per activity_count, poi per last_activity_at.
Parametri disponibili:
start_date: data iniziale in formatoYYYY-MM-DD. Predefinito: 30 giorni fa.end_date: data finale in formatoYYYY-MM-DD. Predefinito: oggi.limit: predefinito 100, massimo 500page: predefinito 1include_email: true o false. Predefinito: false. Quando è true, Metricgram usa prima l’email dell’abbonamento e poi l’email salvata nella scheda del membro del gruppo. Può esserenull.
Esempio:
curl -G "https://metricgram.com/api/v1/active_users" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
--data-urlencode "start_date=2026-04-01" \
--data-urlencode "end_date=2026-04-30" \
--data-urlencode "limit=100" \
--data-urlencode "include_email=true" \
--data-urlencode "page=1"
Esempio di risposta JSON:
{
"data": [
{
"telegram_id": "123456789",
"username": "ana",
"first_name": "Ana",
"language_code": "es",
"is_bot": null,
"member_status": "active",
"admin": false,
"joined_at": "2026-04-10T12:30:00Z",
"email": "ana@example.com",
"message_count": 18,
"reaction_count": 4,
"activity_count": 22,
"last_message_at": "2026-04-30T19:15:00Z",
"last_reaction_at": null,
"last_activity_at": "2026-04-30T19:15:00Z"
}
],
"meta": {
"group_id": 42,
"group_title": "Il mio gruppo",
"start_date": "2026-04-01",
"end_date": "2026-04-30",
"page": 1,
"limit": 100,
"count": 1,
"has_more": false
}
}
Campi principali della risposta:
telegram_id: ID Telegram come testo. Può esserenullse Metricgram non lo ha salvato.username,first_nameelanguage_code: dati pubblici di Telegram. Possono esserenull.is_bot:true,falseonullse Telegram non ha fornito questo valore.member_status: stessi valori testuali distatusin/api/v1/members; può esserenullse non è stato salvato alcuno stato.admin:trueofalse; in questo endpoint normalmente èfalseperché gli amministratori sono esclusi.joined_at: data di ingresso in formato ISO 8601, oppurenull.email: viene restituito solo quandoinclude_email=true. Metricgram usa prima l’email dell’abbonamento e poi l’email salvata nella scheda del membro del gruppo. Può esserenull.message_count,reaction_counteactivity_count: contatori interi calcolati solo nell’intervallo di date selezionato, non sull’intero storico dell’utente.activity_countèmessage_count + reaction_count.last_message_atelast_reaction_at: data in formato ISO 8601, oppurenullse non c’è stata attività di quel tipo.last_activity_at: data dell’ultima attività registrata in formato ISO 8601.meta: dati del gruppo, dell’intervallo di date e della paginazione della richiesta.
GET /api/v1/subscriber_health
Restituisce gli stessi dati del pannello Salute degli abbonati: abbonati attivi collegati, attività recente, segnali di rischio, prossimi rinnovi e suddivisione per piano.
Per impostazione predefinita usa le stesse finestre del pannello: 30 giorni per l'attività e 14 giorni per i prossimi rinnovi. Se modifichi questi parametri, i risultati potrebbero non coincidere esattamente con il pannello.
Parametri disponibili:
activity_days: numero di giorni per l'attività recente. Predefinito 30, massimo 365; i valori superiori a 365 vengono limitati a 365.renewal_days: numero di giorni per i prossimi rinnovi. Predefinito 14, massimo 90; i valori superiori a 90 vengono limitati a 90.include_email: true o false. Predefinito: false. Quando è true, gli abbonati a rischio includono l'email salvata nell'abbonamento. Può esserenull.
Esempio:
curl -G "https://metricgram.com/api/v1/subscriber_health" \
-H "Authorization: Bearer TUO_TOKEN_API" \
--data-urlencode "activity_days=30" \
--data-urlencode "renewal_days=14" \
--data-urlencode "include_email=true"
Esempio di risposta JSON:
{
"data": {
"total_subscribers": 24,
"activity_days": 30,
"renewal_days": 14,
"activity_range": { "start_date": "2026-04-01", "end_date": "2026-04-30" },
"previous_activity_range": { "start_date": "2026-03-02", "end_date": "2026-03-31" },
"compare_activity_drop": true,
"metrics": {
"engaged": { "count": 18, "percentage": 75 },
"at_risk": { "count": 3, "percentage": 13 },
"upcoming_renewals": { "count": 5, "percentage": 21 }
},
"at_risk_subscribers": [
{
"telegram_id": "123456789",
"username": "ana",
"first_name": "Ana",
"language_code": "es",
"is_bot": false,
"plan_lines": ["Pro mensile", "29 EUR / mese"],
"subscribed_until": "2026-05-08T10:00:00Z",
"subscription_attention": "renews_on",
"subscription_attention_days": 2,
"risk_indicators": ["activity_drop"],
"risk_score": 1,
"risk_level": "low",
"current_message_count": 2,
"current_reaction_count": 0,
"current_activity_count": 2,
"previous_message_count": 12,
"previous_reaction_count": 1,
"previous_activity_count": 13,
"email": "ana@example.com"
}
],
"plan_rows": [
{
"plan_lines": ["Pro mensile", "29 EUR / mese"],
"active_count": 12,
"engaged_count": 9,
"at_risk_count": 2,
"engaged_percentage": 75,
"at_risk_percentage": 17
}
]
},
"meta": {
"group_id": 42,
"group_title": "Il mio gruppo"
}
}
Campi principali:
total_subscribers: abbonati attivi collegati inclusi nel calcolo.activity_range/previous_activity_range: finestre di attività corrente e precedente.metrics: contatori e percentuali riepilogati.at_risk_subscribers: abbonati con segnali di rischio;risk_indicatorspuò essereno_activity,activity_dropocanceled;risk_levelpuò esserelow,mediumohigh.plan_rows: abbonati attivi collegati raggruppati per piano di abbonamento.email: restituito solo inat_risk_subscribersquandoinclude_email=true.
Errori possibili: 401 unauthorized, 403 forbidden, 400 invalid_date_range e 429 rate_limited.
Questo articolo ti è stato utile?
Grazie per il tuo feedback!