Hesap ve Ayarlar
Salt okunur API
Bu makalede
Salt okunur API
Metricgram, harici araçların panele erişmeden grup verilerini okuyabilmesi için temel bir salt okunur API sunar.
Beta: API şu anda test aşamasındadır ve Pro planından itibaren kullanılabilir.
Token oluşturma
Ayarlar bölümüne gidin, API tokenleri alanını açın, grubu seçin ve Token oluştur düğmesine tıklayın. Token yalnızca bir kez gösterilir, bu yüzden hemen kopyalayın.
Her token tek bir gruba bağlıdır. Şimdilik grup başına bir aktif token oluşturabilir ve istediğiniz zaman iptal edebilirsiniz.
Kimlik doğrulama
curl -H "Authorization: Bearer API_TOKENINIZ" \
"https://metricgram.com/api/v1/members"
Başarılı yanıtlar JSON formatında döner.
Her token saatte 60 istek ile sınırlıdır.
GET /api/v1/members
Token ile ilişkili grubun üyelerini döndürür.
Kullanılabilir parametreler:
status: all, active, inactive, left veya unbanedadmin: true veya falseis_bot: true veya false. Bu parametre yalnızca boolean değerleri filtreler; bilinmeyen değerler (null) sadece bu filtre kullanılmadığında döner.query: Telegram ID, kullanıcı adı veya ada göre aramalimit: varsayılan 100, maksimum 500page: varsayılan 1include_email: true veya false. Varsayılan: false. true olduğunda Metricgram önce abonelik email adresini, yoksa grup üyesi kaydındaki email adresini kullanır.nullolabilir.
Örnek:
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"
JSON yanıt örneği:
{
"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": "Grubum",
"page": 1,
"limit": 100,
"count": 1,
"has_more": false,
"filters": {
"status": "active"
}
}
}
Başlıca yanıt alanları:
telegram_id: Metin olarak Telegram ID’si. Metricgram’da kayıtlı değilsenullolabilir.username,first_namevelanguage_code: herkese açık Telegram verileri.nullolabilir.is_bot: Telegram bu değeri göndermediysetrue,falseveyanullolabilir.status:active,inactive,left,unbanedveya kayıtlı durum yoksanull.admin:trueveyafalse.joined_at: ISO 8601 formatında katılma tarihi veyanull.email: yalnızcainclude_email=trueolduğunda döner. Metricgram önce abonelik email adresini, yoksa grup üyesi kaydındaki email adresini kullanır.nullolabilir.meta: isteğin sayfalama ve filtre bilgileri.
GET /api/v1/active_users
Seçilen tarih aralığında mesajı veya reaksiyonu kaydedilmiş yönetici olmayan üyeleri döndürür. Grup sahibi bu listeye dahil edilmez. Sonuçlar aktiviteye göre azalan sırada döner: önce activity_count, sonra last_activity_at.
Kullanılabilir parametreler:
start_date:YYYY-MM-DDformatında başlangıç tarihi. Varsayılan: 30 gün önce.end_date:YYYY-MM-DDformatında bitiş tarihi. Varsayılan: bugün.limit: varsayılan 100, maksimum 500page: varsayılan 1include_email: true veya false. Varsayılan: false. true olduğunda Metricgram önce abonelik email adresini, yoksa grup üyesi kaydındaki email adresini kullanır.nullolabilir.
Örnek:
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"
JSON yanıt örneği:
{
"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": "Grubum",
"start_date": "2026-04-01",
"end_date": "2026-04-30",
"page": 1,
"limit": 100,
"count": 1,
"has_more": false
}
}
Başlıca yanıt alanları:
telegram_id: Metin olarak Telegram ID’si. Metricgram’da kayıtlı değilsenullolabilir.username,first_namevelanguage_code: herkese açık Telegram verileri.nullolabilir.is_bot: Telegram bu değeri göndermediysetrue,falseveyanullolabilir.member_status:/api/v1/membersiçindekistatusile aynı metin değerlerine sahiptir; kayıtlı durum yoksanullolabilir.admin:trueveyafalse; bu endpoint’te yöneticiler hariç tutulduğu için normaldefalseolur.joined_at: ISO 8601 formatında katılma tarihi veyanull.email: yalnızcainclude_email=trueolduğunda döner. Metricgram önce abonelik email adresini, yoksa grup üyesi kaydındaki email adresini kullanır.nullolabilir.message_count,reaction_countveactivity_count: kullanıcının toplam geçmişi değil, yalnızca seçilen tarih aralığı içinde hesaplanan tam sayı sayaçlarıdır.activity_count,message_count + reaction_countdeğeridir.last_message_atvelast_reaction_at: ISO 8601 formatında tarih veya bu tür aktivite yoksanull.last_activity_at: kaydedilen son aktivitenin ISO 8601 formatındaki tarihi.meta: isteğin grup, tarih aralığı ve sayfalama bilgileri.
GET /api/v1/subscriber_health
Abone sağlığı panelindeki aynı verileri döndürür: bağlı aktif aboneler, yakın aktivite, risk sinyalleri, yaklaşan yenilemeler ve plana göre dağılım.
Varsayılan olarak panelle aynı pencereleri kullanır: aktivite için 30 gün, yaklaşan yenilemeler için 14 gün. Bu parametreleri değiştirirseniz sonuçlar panelle tam olarak eşleşmeyebilir.
Desteklenen parametreler:
activity_days: yakın aktivite için kullanılan gün sayısı. Varsayılan 30, maksimum 365; 365 üzerindeki değerler 365 ile sınırlandırılır.renewal_days: yaklaşan yenilemeler için kullanılan gün sayısı. Varsayılan 14, maksimum 90; 90 üzerindeki değerler 90 ile sınırlandırılır.include_email: true veya false. Varsayılan: false. true olduğunda risk altındaki aboneler abonelikte kayıtlı email adresini içerir.nullolabilir.
Örnek:
curl -G "https://metricgram.com/api/v1/subscriber_health" \
-H "Authorization: Bearer API_TOKENIN" \
--data-urlencode "activity_days=30" \
--data-urlencode "renewal_days=14" \
--data-urlencode "include_email=true"
Örnek JSON yanıtı:
{
"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": ["Aylık Pro", "29 EUR / ay"],
"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": ["Aylık Pro", "29 EUR / ay"],
"active_count": 12,
"engaged_count": 9,
"at_risk_count": 2,
"engaged_percentage": 75,
"at_risk_percentage": 17
}
]
},
"meta": {
"group_id": 42,
"group_title": "Grubum"
}
}
Başlıca alanlar:
total_subscribers: hesaplamaya dahil edilen bağlı aktif aboneler.activity_range/previous_activity_range: mevcut ve önceki aktivite pencereleri.metrics: özet sayaçlar ve yüzdeler.at_risk_subscribers: risk sinyali olan aboneler;risk_indicatorsdeğerino_activity,activity_dropveyacanceled;risk_leveldeğerilow,mediumveyahigholabilir.plan_rows: abonelik planına göre gruplanmış bağlı aktif aboneler.email: yalnızcainclude_email=trueolduğundaat_risk_subscribersiçinde döner.
Olası hatalar: 401 unauthorized, 403 forbidden, 400 invalid_date_range ve 429 rate_limited.
Bu makale faydalı oldu mu?
Geri bildiriminiz için teşekkürler!