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
| Name | In | Type | Description |
|---|---|---|---|
appId | query | string | If the key isn't restricted to one app (also accepted in the body) |
Body
| Field | Type | Description |
|---|
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"
}'