Reseller API

Push notifications to your clients

Send push notifications to your own ZoltVPN clients from your CRM: the request, the daily limits, per-client results and the list of messages you sent.

If your account has limited notifications on, we don't send your clients renewal, expiry or billing reminders; following up is yours. With this endpoint your CRM sends them its own messages, for example "Your plan ends in 3 days". We deliver them as a push to the client's devices, and they also stay in the app's notification list.

POST /notifications, scope notify:

{ "clientIds": ["4c1d…", "9a7e…"], "title": "Your plan ends in 3 days", "body": "Renew with us today to stay connected." }
  • clientIds: 1 to 100 of your own clients.
  • title: 1–80 characters. body: 1–500 characters. Plain text.
  • Limits: 1,000 notifications per account per UTC day, and 5 per client per day.
  • Your account needs limited notifications on (ask your account manager). Otherwise the call answers 403 notifications_not_enabled.
  • Every notification is recorded with its text, the client and the key that sent it. We can see this record.

Answer:

{ "sent": 1, "refused": 1, "results": [
  { "clientId": "4c1d…", "status": "sent" },
  { "clientId": "9a7e…", "status": "refused", "error": "not_your_client" } ] }

Errors for a single client in results: not_your_client, client_daily_limit, send_failed. Errors for the whole request:

  • 400 invalid_title, invalid_body, invalid_client_ids;
  • 403 notifications_not_enabled;
  • 429 notification_daily_limit (the request would pass today's 1,000).

GET /notifications?clientId=&page=&pageSize= lists what you sent, newest first: { total, page, pageSize, items: [{ id, clientId, clientEmail, title, body, status, error, createdAt }] }.