Skip to content
Documentation menuTracking API

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.

The descriptions in this reference come from the OpenAPI document generated from the code and are written in Turkish for now; endpoints, fields and types are language-neutral.

Servers

URLDescription
https://collect.metrics.exampleTracking API
http://localhost:7110Yerel geliştirme

Authentication

NameMethodDescription
writeKeyBasicHTTP BasicKullanıcı adı = yazma anahtarı, şifre boş (Segment uyumlu).
writeKeyBearerBearer token (pk_…)Yazma anahtarı.
signatureHeader: Metrics-Signatureİstek imzası (sunucu kaynakları).

Limits

LimitValue
Message sizeat most 32 KB
Batch sizeat most 500 KB
Messages per batchat most 500
Timestamp in the pastat most 31 days
Timestamp in the futureat most 3600 s
Signature time window±300 s
userId, anonymousId, groupId lengthat most 200 characters
messageId lengthat most 100 characters
Event name lengthat most 200 characters
Elements in a layout ($layout)at most 300
Click coordinate scale0–1000 (of the document’s width and height)
Rate limit per source60,000 messages a minute; above it 429 with Retry-After
Short burst allowanceat most 10,000 messages at once

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).

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request bodyBody required

application/jsonTrackMessage

FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: track

eventrequiredstring

1–200 characters

propertiesobject

Free-form keys

Example · JSON
{
  "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/jsonTrackingResponse

    Example · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağı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-After saniye bekleyip aynı partiyi yeniden gönderin.

    Response headers

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      at least 1

    application/jsonRefusal

  • 5XX

    Geç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.

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request bodyBody required

application/jsonIdentifyMessage

FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: identify

traitsobject

Free-form keys

Example · JSON
{
  "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/jsonTrackingResponse

    Example · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağı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-After saniye bekleyip aynı partiyi yeniden gönderin.

    Response headers

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      at least 1

    application/jsonRefusal

  • 5XX

    Geç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.

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request bodyBody required

application/jsonPageMessage

FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: page

namestring

at most 500 characters

categorystring

at most 200 characters

propertiesobject

Free-form keys

Example · JSON
{
  "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/jsonTrackingResponse

    Example · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağı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-After saniye bekleyip aynı partiyi yeniden gönderin.

    Response headers

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      at least 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/screen

Ekran görüntüleme (screen)

Mobil uygulama ekranı.

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request bodyBody required

application/jsonScreenMessage

FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: screen

namestring

at most 500 characters

categorystring

at most 200 characters

propertiesobject

Free-form keys

Example · JSON
{
  "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/jsonTrackingResponse

    Example · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağı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-After saniye bekleyip aynı partiyi yeniden gönderin.

    Response headers

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      at least 1

    application/jsonRefusal

  • 5XX

    Geç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.

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request bodyBody required

application/jsonGroupMessage

FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: group

groupIdrequiredstring | number
traitsobject

Free-form keys

Example · JSON
{
  "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/jsonTrackingResponse

    Example · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağı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-After saniye bekleyip aynı partiyi yeniden gönderin.

    Response headers

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      at least 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/alias

Kimlik birleştir (alias)

previousId ile userId aynı kişidir.

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request bodyBody required

application/jsonAliasMessage

FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdrequiredstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: alias

previousIdrequiredstring | number
Example · JSON
{
  "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/jsonTrackingResponse

    Example · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağı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-After saniye bekleyip aynı partiyi yeniden gönderin.

    Response headers

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      at least 1

    application/jsonRefusal

  • 5XX

    Geç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).

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request bodyBody required

application/jsonBatchRequest

FieldTypeDescription
batchrequired(TrackMessage | IdentifyMessage | PageMessage | ScreenMessage | GroupMessage | AliasMessage)[]

1–500 items

writeKeystringYalnız tarayıcı beacon'ı için (başlık gönderilemediğinde).
sentAtstring

Format: date-time

contextContextKendi context'i olmayan mesajlara uygulanır.
Example · JSON
{
  "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/jsonTrackingResponse

    Example · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağı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-After saniye bekleyip aynı partiyi yeniden gönderin.

    Response headers

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      at least 1

    application/jsonRefusal

  • 5XX

    Geç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 {}.

Parameters

NameInTypeDescription
Metrics-Signatureheaderstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Pattern: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

Request body

application/jsonobject

Example · JSON
{}

Responses

  • 200

    Anahtar (ve imza) geçerli.

    application/jsonPingResponse

    Example · JSON
    {
      "success": true,
      "sourceId": "string",
      "appId": "string",
      "environment": "string",
      "test": true,
      "signature": "valid"
    }
  • 401

    Anahtar 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

NameInTypeDescription
writeKeyrequiredpathstringKaynağın yazma anahtarı (pk_…).
schemaHintsquerystring1: yanıtta ayrıca schemaHints — uygulamanın olay planının özeti (planlanmış olaylar ve zorunlu özellikleri, engellenen olaylar, şema kipi). Web SDK debug kipinde ister; parametresiz yanıt değişmez.

Values: 1

Responses

  • 200

    Yapılandırma.

    application/jsonRemoteConfig

    Example · 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
      }
    }
  • 404

    Anahtar 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

  • 200

    JavaScript.

  • 304

    Değişmedi.

GET/v1/health

Sağlık

Authentication
No authentication

Responses

  • 200

    Süreç ve veritabanı çalışıyor.

    application/jsonobject

    Example · JSON
    {
      "status": "string",
      "database": "string"
    }

Schemas

Schemas that requests and responses refer to by name.

TrackingResponseobject

TrackingResponse
FieldTypeDescription
successrequiredboolean

Constant: true

acceptedrequiredintegerMesajlardan kabul edilenlerin sayısı (tekrar edenler dahil; tekrar eden bir kez saklanır).
rejectedrequiredobject[]Reddedilenler. Düzeltmeden tekrar göndermeyin.
rejected[].indexrequiredinteger
rejected[].messageIdstring
rejected[].errorsrequiredobject[]
rejected[].errors[].coderequiredstring

Values: invalid_message, unknown_type, event_name_missing, identity_missing, event_unplanned, event_blocked, property_required, property_type, property_unplanned, property_too_long, pii_detected, timestamp_invalid, timestamp_out_of_range, message_too_large, currency_unknown, property_out_of_range

rejected[].errors[].pathrequiredstring
rejected[].errors[].messagerequiredstring
warningsrequiredobject[]Kabul edildi ama dikkat: planlanmamış özellik, kişisel veri maskelendi…
warnings[].indexrequiredinteger
warnings[].coderequiredstring

Values: invalid_message, unknown_type, event_name_missing, identity_missing, event_unplanned, event_blocked, property_required, property_type, property_unplanned, property_too_long, pii_detected, timestamp_invalid, timestamp_out_of_range, message_too_large, currency_unknown, property_out_of_range

warnings[].pathrequiredstring

Refusalobject

Refusal
FieldTypeDescription
successrequiredboolean

Constant: false

errorrequiredobject
error.coderequiredstring
error.messagerequiredstring
rejectedobject[]
rejected[].indexrequiredinteger
rejected[].messageIdstring
rejected[].errorsrequiredobject[]
rejected[].errors[].coderequiredstring

Values: invalid_message, unknown_type, event_name_missing, identity_missing, event_unplanned, event_blocked, property_required, property_type, property_unplanned, property_too_long, pii_detected, timestamp_invalid, timestamp_out_of_range, message_too_large, currency_unknown, property_out_of_range

rejected[].errors[].pathrequiredstring
rejected[].errors[].messagerequiredstring

PingResponseobject

PingResponse
FieldTypeDescription
successrequiredboolean

Constant: true

sourceIdrequiredstring
appIdrequiredstring
environmentrequiredstring
testrequiredboolean
signaturerequiredstring

Values: valid, absent

RemoteConfigobject

RemoteConfig
FieldTypeDescription
sourceIdrequiredstring
appIdrequiredstring
kindrequiredstring

Values: web, ios, android, server, other

environmentrequiredstring

Values: production, staging, development

testrequiredboolean
ttlSecondsrequiredinteger

above 0

consentModerequiredstring

Values: required, implied, none

excludedPathsrequiredstring[]
maskSelectorsrequiredstring[]
ignoreSelectorsrequiredstring[]
stripQueryParamsrequiredstring[]
sessionTimeoutMinutesrequiredinteger

5–240

interactionSampleRaterequirednumber

0–1

autocapturerequiredobject
autocapture.pageviewsrequiredboolean
autocapture.pageleaverequiredboolean
autocapture.clicksrequiredboolean
autocapture.rageClicksrequiredboolean
autocapture.deadClicksrequiredboolean
autocapture.scrollrequiredboolean
autocapture.errorsrequiredboolean
autocapture.formsrequiredboolean
autocapture.layoutrequiredboolean
autocapture.outboundLinksrequiredboolean
autocapture.downloadsrequiredboolean
autocapture.webVitalsrequiredboolean
dataLayerEventsrequiredstring[]
schemaHintsobject
schemaHints.moderequiredstring

Values: strict, lenient, discover

schemaHints.eventsrequiredobject[]
schemaHints.events[].namerequiredstring
schemaHints.events[].requiredrequiredstring[]
schemaHints.blockedrequiredstring[]
schemaHints.truncatedrequiredboolean

Contextobject

Context
FieldTypeDescription
ipstring

at most 64 characters

userAgentstring

at most 1000 characters

localestring

at most 35 characters

timezonestring

at most 64 characters

groupIdstring | number
traitsobject

Free-form keys

pageobject
page.urlstring

at most 4000 characters

page.pathstring

at most 2000 characters

page.titlestring

at most 1000 characters

page.referrerstring

at most 4000 characters

page.searchstring

at most 2000 characters

campaignobject
campaign.sourcestring

at most 200 characters

campaign.mediumstring

at most 200 characters

campaign.namestring

at most 300 characters

campaign.contentstring

at most 300 characters

campaign.termstring

at most 300 characters

campaign.idstring

at most 200 characters

appobject
app.namestring

at most 200 characters

app.versionstring

at most 100 characters

app.buildstring

at most 100 characters

app.namespacestring

at most 300 characters

deviceobject
device.typestring

at most 50 characters

device.manufacturerstring

at most 100 characters

device.modelstring

at most 100 characters

device.idstring

at most 200 characters

device.advertisingIdstring

at most 200 characters

osobject
os.namestring

at most 100 characters

os.versionstring

at most 100 characters

screenobject
screen.widthnumber

at least 0

screen.heightnumber

at least 0

screen.densitynumber

above 0

libraryobject
library.namestring

at most 100 characters

library.versionstring

at most 50 characters

viewportobject
viewport.widthnumber

at least 0

viewport.heightnumber

at least 0

clickIdsobject
clickIds.gclidstring

at most 500 characters

clickIds.gbraidstring

at most 500 characters

clickIds.wbraidstring

at most 500 characters

clickIds.dclidstring

at most 500 characters

clickIds.fbclidstring

at most 500 characters

clickIds.fbcstring

at most 500 characters

clickIds.fbpstring

at most 500 characters

clickIds.li_fat_idstring

at most 500 characters

clickIds.msclkidstring

at most 500 characters

clickIds.ttclidstring

at most 500 characters

clickIds.yclidstring

at most 500 characters

clickIds.gclid_atstring | number
attributionobject
attribution.first_touchobject
attribution.first_touch.sourcestring

at most 200 characters

attribution.first_touch.mediumstring

at most 200 characters

attribution.first_touch.campaignstring

at most 300 characters

attribution.first_touch.contentstring

at most 300 characters

attribution.first_touch.termstring

at most 300 characters

attribution.first_touch.campaign_idstring

at most 200 characters

attribution.first_touch.landing_pathstring

at most 2000 characters

attribution.first_touch.referrer_hoststring

at most 300 characters

attribution.first_touch.atstring

Format: date-time

attribution.last_non_direct_touchobject
attribution.last_non_direct_touch.sourcestring

at most 200 characters

attribution.last_non_direct_touch.mediumstring

at most 200 characters

attribution.last_non_direct_touch.campaignstring

at most 300 characters

attribution.last_non_direct_touch.contentstring

at most 300 characters

attribution.last_non_direct_touch.termstring

at most 300 characters

attribution.last_non_direct_touch.campaign_idstring

at most 200 characters

attribution.last_non_direct_touch.landing_pathstring

at most 2000 characters

attribution.last_non_direct_touch.referrer_hoststring

at most 300 characters

attribution.last_non_direct_touch.atstring

Format: date-time

attribution.session_touchobject
attribution.session_touch.sourcestring

at most 200 characters

attribution.session_touch.mediumstring

at most 200 characters

attribution.session_touch.campaignstring

at most 300 characters

attribution.session_touch.contentstring

at most 300 characters

attribution.session_touch.termstring

at most 300 characters

attribution.session_touch.campaign_idstring

at most 200 characters

attribution.session_touch.landing_pathstring

at most 2000 characters

attribution.session_touch.referrer_hoststring

at most 300 characters

attribution.session_touch.atstring

Format: date-time

attribution.methodstring

Values: consent, same_visit

consentobject
consent.analyticsrequiredboolean
consent.marketingrequiredboolean
sessionobject
session.idrequiredstring

1–100 characters

session.startboolean
tabobject
tab.idrequiredstring

1–100 characters

testboolean
internalboolean
gaobject
ga.clientIdstring

Pattern: ^\d{1,20}\.\d{1,20}$

ga.sessionIdstring

Pattern: ^\d{1,20}$

TrackMessageobject

TrackMessage
FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: track

eventrequiredstring

1–200 characters

propertiesobject

Free-form keys

IdentifyMessageobject

IdentifyMessage
FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: identify

traitsobject

Free-form keys

PageMessageobject

PageMessage
FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: page

namestring

at most 500 characters

categorystring

at most 200 characters

propertiesobject

Free-form keys

ScreenMessageobject

ScreenMessage
FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: screen

namestring

at most 500 characters

categorystring

at most 200 characters

propertiesobject

Free-form keys

GroupMessageobject

GroupMessage
FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: group

groupIdrequiredstring | number
traitsobject

Free-form keys

AliasMessageobject

AliasMessage
FieldTypeDescription
messageIdstring

Pattern: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdrequiredstring | number
timestampstring

Format: date-time

sentAtstring

Format: date-time

contextContext
integrationsobject

Free-form keys

typestring

Constant: alias

previousIdrequiredstring | number

BatchRequestobject

BatchRequest
FieldTypeDescription
batchrequired(TrackMessage | IdentifyMessage | PageMessage | ScreenMessage | GroupMessage | AliasMessage)[]

1–500 items

writeKeystringYalnız tarayıcı beacon'ı için (başlık gönderilemediğinde).
sentAtstring

Format: date-time

contextContextKendi context'i olmayan mesajlara uygulanır.