API overview
How to send a notification, and what the response means.
Sending
Create an endpoint in the app, copy its send URL, then POST JSON. Base host:
https://api.pinglark.app
Minimal send:
curl -X POST \
'https://api.pinglark.app/v1/send/{credential}' \
-H 'Content-Type: application/json' \
-d '{"message":"Deploy finished"}'
Useful optional fields: title, subtitle,
sound, image (https),
link (https), actions, reference,
thread.
Keep the credential secret. Anyone with the URL can notify that endpoint.
Example accepted response (202):
{
"notification_id": "ntf_…",
"accepted_at": "2026-10-09T12:00:00Z",
"warnings": []
}
Accepted vs delivered
A successful send returns 202 with a
notification_id. That means the service
accepted the request. It is not a promise that APNs delivered a
banner or that you saw it.
If you send the same reference again within 24 hours for
the same endpoint, the service returns the original receipt and does not
send again.
Action replies
Set "actions":"acknowledge" to add an Acknowledge button.
Values: acknowledge, yes_no,
approve_decline. You can answer from the lock screen or
Inbox. Pinglark records your answer. The app does not contact your
script directly or automatically rerun your job.
curl -X POST \
'https://api.pinglark.app/v1/send/{credential}' \
-H 'Content-Type: application/json' \
-d '{"title":"Deploy?","message":"Ship 2.4.1 now?","actions":"approve_decline"}'
Practice vs live
Practice mode keeps sends on your iPhone. To get a URL your scripts can call, turn on live sending in Settings, then create the endpoint. Endpoints made in practice mode stay on the device.