Zambia Revenue Authority
Developer Documentation

Connect your own system to Notify APIs.

Use token-based authentication to send customer emails, trigger SMS, and manage automated reminders from your own website, CRM, or application.

Authentication

Create a Sanctum token from the super-admin dashboard, then send it as a Bearer token on every API request.

POST /api/tokens/create

Create an API token from email and password.

DELETE /api/tokens/current

Revoke the current Bearer token.

Customer Emails

Send manual email campaigns and read email transaction history for the authenticated account.

GET /api/customer-emails

List email transaction history. Filters: status, customer_id, per_page.

POST /api/customer-emails/send

Send an email campaign to selected customer IDs.

Customer SMS

Send SMS campaigns and review SMS delivery logs for the authenticated account.

GET /api/customer-sms

List SMS transaction history. Filters: status, customer_id, per_page.

POST /api/customer-sms/send

Send SMS to one or more customer IDs.

Scheduled Reminders

Create and manage automated reminders that are later dispatched by your queue worker and scheduler.

GET /api/scheduled-email-reminders

List scheduled email reminders.

POST /api/scheduled-email-reminders

Create a scheduled email reminder.

PUT /api/scheduled-email-reminders/{id}

Update a scheduled email reminder.

DELETE /api/scheduled-email-reminders/{id}

Delete a scheduled email reminder.

GET /api/scheduled-sms-reminders

List scheduled SMS reminders.

POST /api/scheduled-sms-reminders

Create a scheduled SMS reminder.

PUT /api/scheduled-sms-reminders/{id}

Update a scheduled SMS reminder.

DELETE /api/scheduled-sms-reminders/{id}

Delete a scheduled SMS reminder.

Usage Rules

All API calls are tenant-scoped and use the same package rules as the dashboard.

RULE Tenant Scope

Users only see and act on customers, logs, and reminders attached to their own account.

RULE Package Limits

Email, SMS, and reminder APIs are blocked automatically when a package limit is reached.

RULE JSON Errors

API validation and package-limit failures return JSON responses instead of redirects.

Create Token
curl --request POST \
  --url https://zra.notifya.cloud/api/tokens/create \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
    "email": "superadmin@notify.test",
    "password": "password",
    "token_name": "CRM Integration"
  }'
Send Email
curl --request POST \
  --url https://zra.notifya.cloud/api/customer-emails/send \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_ids": [1, 2],
    "subject": "Reminder from Notify",
    "message": "This is a test email sent from the API.",
    "template_key": "classic"
  }'
Send SMS
curl --request POST \
  --url https://zra.notifya.cloud/api/customer-sms/send \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_ids": [1],
    "message": "This is a test SMS sent from the API."
  }'
Create Email Reminder
curl --request POST \
  --url https://zra.notifya.cloud/api/scheduled-email-reminders \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_id": 1,
    "name": "Follow-up Reminder",
    "subject": "Scheduled check-in",
    "message": "This reminder was created from the API.",
    "template_key": "classic",
    "frequency": "once",
    "next_run_at": "2026-03-26 16:00:00",
    "is_active": true
  }'
Create SMS Reminder
curl --request POST \
  --url https://zra.notifya.cloud/api/scheduled-sms-reminders \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_id": 1,
    "name": "Payment Reminder",
    "message": "This reminder was created from the API.",
    "frequency": "daily",
    "next_run_at": "2026-03-26 17:00:00",
    "is_active": true
  }'