Postlip Metrics Tracking API
Ürünlerin Postlip Metrics'e olay göndermesi için sözleşme — Segment Tracking API Spec uyumlu (aynı uçlar, mesaj alanları ve kimlik doğrulama; Segment/RudderStack istemcileri host ayarıyla kullanılabilir). Ayrıntı ve örnekler: docs/api/tracking-api.md. Kimlik: kaynağın yazma anahtarı (pk_live_… / pk_test_…) HTTP Basic kullanıcı adı olarak, Authorization: Bearer ile ya da tarayıcı beacon'ında gövdede writeKey. Sunucu kaynakları isteği Metrics-Signature başlığıyla imzalar (kaynakta zorunlu kılınabilir). İdempotentlik: messageId — aynı gerçek olay için aynı kimliği üretin; tekrar eden mesaj bir kez saklanır.
Version 1.0.0OpenAPI 3.1.0Download the OpenAPI document
This page is generated at build time from docs/api/openapi/tracking.json in the repository.
Servers
Authentication
Limits
Olay gönderimi
7 endpoints
track, identify, page, screen, group, alias ve toplu gönderim.
POST/v1/track
Olay (track)
Kullanıcının yaptığı bir eylem. event uygulamanın olay kataloğuna göre doğrulanır (strict/lenient/discover). $ ile başlayan adlar SDK sistem olaylarıdır (bkz. x-system-events).
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request bodyBody required
application/jsonTrackMessage
{
"messageId": "string",
"anonymousId": "string",
"userId": "string",
"timestamp": "2026-11-06T14:46:00+03:00",
"sentAt": "2026-11-06T14:46:00+03:00",
"context": {
"ip": "string",
"userAgent": "string"
},
"integrations": {},
"type": "track",
"event": "string",
"properties": {}
}text/plainstring
Aynı JSON, metin olarak (tarayıcı beacon).
Responses
200İşlendi.
application/jsonTrackingResponseExample · JSON{ "success": true, "accepted": 0, "rejected": [ { "index": 0, "errors": [ { "code": "invalid_message", "path": "string", "message": "string" } ] } ], "warnings": [ { "index": 0, "code": "invalid_message", "path": "string" } ] }400Gövde okunamadı ya da bütün mesajlar reddedildi (
all_rejected,rejectedlistesiyle). Tekrar etmeyin.application/jsonRefusal401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal403Originkaynağın izinli alan adlarında değil (origin_not_allowed).application/jsonRefusal413Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.
application/jsonRefusal429Kaynağın hız sınırı aşıldı (
rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı.Retry-Aftersaniye bekleyip aynı partiyi yeniden gönderin.Response headers
Retry-AfterintegerYeniden denemeden önce beklenecek saniye.
at least 1
application/jsonRefusal5XXGeçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).
POST/v1/identify
Kişiyi tanıt (identify)
Anonim kimliği kullanıcı kimliğine bağlar; traits kişi özellikleridir.
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request bodyBody required
application/jsonIdentifyMessage
{
"messageId": "string",
"anonymousId": "string",
"userId": "string",
"timestamp": "2026-11-06T14:46:00+03:00",
"sentAt": "2026-11-06T14:46:00+03:00",
"context": {
"ip": "string",
"userAgent": "string"
},
"integrations": {},
"type": "identify",
"traits": {}
}text/plainstring
Aynı JSON, metin olarak (tarayıcı beacon).
Responses
200İşlendi.
application/jsonTrackingResponseExample · JSON{ "success": true, "accepted": 0, "rejected": [ { "index": 0, "errors": [ { "code": "invalid_message", "path": "string", "message": "string" } ] } ], "warnings": [ { "index": 0, "code": "invalid_message", "path": "string" } ] }400Gövde okunamadı ya da bütün mesajlar reddedildi (
all_rejected,rejectedlistesiyle). Tekrar etmeyin.application/jsonRefusal401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal403Originkaynağın izinli alan adlarında değil (origin_not_allowed).application/jsonRefusal413Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.
application/jsonRefusal429Kaynağın hız sınırı aşıldı (
rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı.Retry-Aftersaniye bekleyip aynı partiyi yeniden gönderin.Response headers
Retry-AfterintegerYeniden denemeden önce beklenecek saniye.
at least 1
application/jsonRefusal5XXGeçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).
POST/v1/page
Sayfa görüntüleme (page)
Web sayfası görüntüleme. properties.url ya da context.page.url gönderin.
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request bodyBody required
application/jsonPageMessage
{
"messageId": "string",
"anonymousId": "string",
"userId": "string",
"timestamp": "2026-11-06T14:46:00+03:00",
"sentAt": "2026-11-06T14:46:00+03:00",
"context": {
"ip": "string",
"userAgent": "string"
},
"integrations": {},
"type": "page",
"name": "string",
"category": "string",
"properties": {}
}text/plainstring
Aynı JSON, metin olarak (tarayıcı beacon).
Responses
200İşlendi.
application/jsonTrackingResponseExample · JSON{ "success": true, "accepted": 0, "rejected": [ { "index": 0, "errors": [ { "code": "invalid_message", "path": "string", "message": "string" } ] } ], "warnings": [ { "index": 0, "code": "invalid_message", "path": "string" } ] }400Gövde okunamadı ya da bütün mesajlar reddedildi (
all_rejected,rejectedlistesiyle). Tekrar etmeyin.application/jsonRefusal401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal403Originkaynağın izinli alan adlarında değil (origin_not_allowed).application/jsonRefusal413Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.
application/jsonRefusal429Kaynağın hız sınırı aşıldı (
rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı.Retry-Aftersaniye bekleyip aynı partiyi yeniden gönderin.Response headers
Retry-AfterintegerYeniden denemeden önce beklenecek saniye.
at least 1
application/jsonRefusal5XXGeçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request bodyBody required
application/jsonScreenMessage
{
"messageId": "string",
"anonymousId": "string",
"userId": "string",
"timestamp": "2026-11-06T14:46:00+03:00",
"sentAt": "2026-11-06T14:46:00+03:00",
"context": {
"ip": "string",
"userAgent": "string"
},
"integrations": {},
"type": "screen",
"name": "string",
"category": "string",
"properties": {}
}text/plainstring
Aynı JSON, metin olarak (tarayıcı beacon).
Responses
200İşlendi.
application/jsonTrackingResponseExample · JSON{ "success": true, "accepted": 0, "rejected": [ { "index": 0, "errors": [ { "code": "invalid_message", "path": "string", "message": "string" } ] } ], "warnings": [ { "index": 0, "code": "invalid_message", "path": "string" } ] }400Gövde okunamadı ya da bütün mesajlar reddedildi (
all_rejected,rejectedlistesiyle). Tekrar etmeyin.application/jsonRefusal401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal403Originkaynağın izinli alan adlarında değil (origin_not_allowed).application/jsonRefusal413Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.
application/jsonRefusal429Kaynağın hız sınırı aşıldı (
rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı.Retry-Aftersaniye bekleyip aynı partiyi yeniden gönderin.Response headers
Retry-AfterintegerYeniden denemeden önce beklenecek saniye.
at least 1
application/jsonRefusal5XXGeçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).
POST/v1/group
Hesaba bağla (group)
Kişiyi bir hesaba (şirket, büro, site…) bağlar; traits hesap özellikleridir.
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request bodyBody required
application/jsonGroupMessage
{
"messageId": "string",
"anonymousId": "string",
"userId": "string",
"timestamp": "2026-11-06T14:46:00+03:00",
"sentAt": "2026-11-06T14:46:00+03:00",
"context": {
"ip": "string",
"userAgent": "string"
},
"integrations": {},
"type": "group",
"groupId": "string",
"traits": {}
}text/plainstring
Aynı JSON, metin olarak (tarayıcı beacon).
Responses
200İşlendi.
application/jsonTrackingResponseExample · JSON{ "success": true, "accepted": 0, "rejected": [ { "index": 0, "errors": [ { "code": "invalid_message", "path": "string", "message": "string" } ] } ], "warnings": [ { "index": 0, "code": "invalid_message", "path": "string" } ] }400Gövde okunamadı ya da bütün mesajlar reddedildi (
all_rejected,rejectedlistesiyle). Tekrar etmeyin.application/jsonRefusal401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal403Originkaynağın izinli alan adlarında değil (origin_not_allowed).application/jsonRefusal413Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.
application/jsonRefusal429Kaynağın hız sınırı aşıldı (
rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı.Retry-Aftersaniye bekleyip aynı partiyi yeniden gönderin.Response headers
Retry-AfterintegerYeniden denemeden önce beklenecek saniye.
at least 1
application/jsonRefusal5XXGeçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request bodyBody required
application/jsonAliasMessage
{
"messageId": "string",
"anonymousId": "string",
"userId": "string",
"timestamp": "2026-11-06T14:46:00+03:00",
"sentAt": "2026-11-06T14:46:00+03:00",
"context": {
"ip": "string",
"userAgent": "string"
},
"integrations": {},
"type": "alias",
"previousId": "string"
}text/plainstring
Aynı JSON, metin olarak (tarayıcı beacon).
Responses
200İşlendi.
application/jsonTrackingResponseExample · JSON{ "success": true, "accepted": 0, "rejected": [ { "index": 0, "errors": [ { "code": "invalid_message", "path": "string", "message": "string" } ] } ], "warnings": [ { "index": 0, "code": "invalid_message", "path": "string" } ] }400Gövde okunamadı ya da bütün mesajlar reddedildi (
all_rejected,rejectedlistesiyle). Tekrar etmeyin.application/jsonRefusal401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal403Originkaynağın izinli alan adlarında değil (origin_not_allowed).application/jsonRefusal413Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.
application/jsonRefusal429Kaynağın hız sınırı aşıldı (
rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı.Retry-Aftersaniye bekleyip aynı partiyi yeniden gönderin.Response headers
Retry-AfterintegerYeniden denemeden önce beklenecek saniye.
at least 1
application/jsonRefusal5XXGeçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).
POST/v1/batch
Toplu gönderim (batch)
En fazla 500 mesaj, karışık tiplerde; her mesajda type zorunlu. Tarayıcıdan text/plain gövdeyle ve writeKey gövdede gönderilebilir (CORS ön isteği yok).
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request bodyBody required
application/jsonBatchRequest
{
"batch": [
{
"type": "track",
"event": "string"
}
],
"writeKey": "string",
"sentAt": "2026-11-06T14:46:00+03:00",
"context": {
"ip": "string",
"userAgent": "string"
}
}text/plainstring
Aynı JSON, metin olarak (tarayıcı beacon).
Responses
200İşlendi.
application/jsonTrackingResponseExample · JSON{ "success": true, "accepted": 0, "rejected": [ { "index": 0, "errors": [ { "code": "invalid_message", "path": "string", "message": "string" } ] } ], "warnings": [ { "index": 0, "code": "invalid_message", "path": "string" } ] }400Gövde okunamadı ya da bütün mesajlar reddedildi (
all_rejected,rejectedlistesiyle). Tekrar etmeyin.application/jsonRefusal401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal403Originkaynağın izinli alan adlarında değil (origin_not_allowed).application/jsonRefusal413Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.
application/jsonRefusal429Kaynağın hız sınırı aşıldı (
rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı.Retry-Aftersaniye bekleyip aynı partiyi yeniden gönderin.Response headers
Retry-AfterintegerYeniden denemeden önce beklenecek saniye.
at least 1
application/jsonRefusal5XXGeçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).
Kurulum
4 endpoints
Bağlantı testi, SDK uzak yapılandırması, web SDK paketi, sağlık.
POST/v1/ping
Bağlantı testi
Anahtarı ve (gönderildiyse ya da kaynak istiyorsa) imzayı doğrular; hiçbir şey kaydetmez. Gövde {}.
- Authentication
- writeKeyBasic or writeKeyBearer or writeKeyBasic + signature
Parameters
Request body
application/jsonobject
{}Responses
200Anahtar (ve imza) geçerli.
application/jsonPingResponseExample · JSON{ "success": true, "sourceId": "string", "appId": "string", "environment": "string", "test": true, "signature": "valid" }401Anahtar yok/yanlış (
missing_key,invalid_key) ya da imza (signature_required,signature_invalid,signature_expired). Anahtarı ve sunucu saatini denetleyin.application/jsonRefusal
GET/v1/config/{writeKey}
SDK uzak yapılandırması
Panelde kaynak için yapılan yakalama ayarları (hariç yollar, rıza kipi, otomatik yakalama, örnekleme…). ttlSeconds kadar önbelleğe alınabilir; istek başarısızsa SDK varsayılanlarla çalışır.
- Authentication
- No authentication
Parameters
Responses
200Yapılandırma.
application/jsonRemoteConfigExample · JSON{ "sourceId": "string", "appId": "string", "kind": "web", "environment": "production", "test": true, "ttlSeconds": 1, "consentMode": "required", "excludedPaths": [ "string" ], "maskSelectors": [ "string" ], "ignoreSelectors": [ "string" ], "stripQueryParams": [ "string" ], "sessionTimeoutMinutes": 5, "interactionSampleRate": 0, "autocapture": { "pageviews": true, "pageleave": true, "clicks": true, "rageClicks": true, "deadClicks": true, "scroll": true, "errors": true, "forms": true, "layout": true, "outboundLinks": true, "downloads": true, "webVitals": true }, "dataLayerEvents": [ "string" ], "schemaHints": { "mode": "strict", "events": [ { "name": "string", "required": [] } ], "blocked": [ "string" ], "truncated": true } }404Anahtar tanınmadı.
application/jsonRefusal
GET/m.js
Web SDK (pixel)
Kurulum kodunun yüklediği tarayıcı SDK'sı (@metrics/web, ≤ 12 KB gzip). ETag ile önbelleklenir.
- Authentication
- No authentication
Responses
200JavaScript.
304Değişmedi.
GET/v1/health
Sağlık
- Authentication
- No authentication
Responses
200Süreç ve veritabanı çalışıyor.
application/jsonobjectExample · JSON{ "status": "string", "database": "string" }
Schemas
Schemas that requests and responses refer to by name.