API · Events

Delivery, opens, clicks and permissions reported by the app.

Base: https://api.pushtifly.com. Every response uses { errCode, errMsg, data, meta }. Authentication and keys · Error catalog

POST/v1/events

Report app events (pk_ or sk_ with events:write; open CORS). Responds 202.

Key: pk_ / sk_

One event ({type, token, ...}) or a batch in events (maximum 100). Types: received, opened, clicked (optional actionId = button id),
dismissed (they require notificationId = _phid from the payload) and permission_granted / permission_denied (they update notificationsEnabled).
Optional occurredAt (ISO 8601 or epoch; up to 7 days back). Each event is validated: the device must exist in the app and the
notification must have been delivered to it. Repeats (same device, notification, type and button; or the same permission state)
are discarded. Additional limit of 60 events per minute per device. They are written in the background within a few seconds.
Rejection reasons per event: invalid_type, token_required, rate_limited, device_not_found, notification_required,
notification_not_found, not_a_recipient, invalid_action, invalid_occurred_at, occurred_at_out_of_range.

Parameters

NameInTypeDescription
appIdquerystringIf the key isn't restricted to one app (also accepted in the body)

Body

FieldTypeDescription

Responses: 202422

curl -X POST "https://api.pushtifly.com/v1/events" \
  -H "Authorization: Bearer pk_test_YOUR_PUBLIC_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "opened",
  "token": "DEVICE_TOKEN",
  "notificationId": "01JC2Y3Z4X5W6V7U8T9S0R1Q2P"
}'