API Overview
The Pingovo REST API lets you verify email addresses and send transactional email (order confirmations, password resets, one-time codes) from your own application, then read back what happened to every message. API access requires a paid plan (Lite and above).
Quickstart
- 1Create an API key in Dashboard → API (see Managing API Keys). Copy it straight away — it is shown only once.
- 2Check it works by asking for your balance:
curl https://pingovo.com/api/v1/credits -H "X-API-Key: YOUR_API_KEY" - 3Verify an address with POST /verify, or send an email with POST /send.
- 4Look at what you sent in Dashboard → API Sends, or read it back with GET /sends.
curl https://pingovo.com/api/v1/credits \
-H "X-API-Key: YOUR_API_KEY"Basics
| Property | Value |
|---|---|
| Base URL | https://pingovo.com/api/v1 |
| Authentication | X-API-Key: YOUR_KEY header on every request |
| Request format | JSON body (Content-Type: application/json) |
| Response format | JSON. Successful responses carry "success": true |
| Rate limit | Set by your plan (requests per minute and per day), shared by all of your keys. See Errors & Rate Limits |
| Credit cost | Charged per call. See the table below |
Endpoints
| Method | Endpoint | What it does |
|---|---|---|
| POST | /verify | Verify one email address |
| POST | /verify/batch | Verify up to 50 addresses in one request |
| GET | /credits | Your credit balance and plan |
| POST | /send | Send one transactional email, with optional tags, tracking and pacing |
| GET | /sends | List the emails you sent, newest first |
| GET | /sends/:id | One send, including delivery status and engagement |
| GET | /activity | Your own call history |
What each call costs
| Call | Credits |
|---|---|
| POST /verify | 1 per email |
| POST /verify/batch | 1 per email in the batch |
| GET /credits, /sends, /sends/:id, /activity | Free |
| POST /send — delivery | 1 per email delivered |
| POST /send — verify before send | 1 per recipient checked (on by default; you never send to an address that comes back invalid) |
| POST /send — open / click tracking | A flat extra charge per tracked email, only if you turn tracking on |
Credit costs are set by Pingovo and can change over time. The current figures are shown at the top of Dashboard → API Sends, and a price change never reprices an existing subscriber mid-plan.
Authentication
Send your key in the X-API-Key header. Keep it on your server — never in a browser, mobile app or public repository. If a key leaks, delete it and create a new one.
Repeated requests with unknown or missing keys block the calling IP address for a while, and while it is blocked even a valid key from that address is refused with 429 AUTH_THROTTLED. Check for typos in the header name and value before retrying in a loop.
Response envelope
Every response is JSON. A success looks like this:
{
"success": true,
"data": { ... },
"credits_used": 1,
"credits_remaining": 499
}A failure has the HTTP status plus a machine-readable error code:
{
"success": false,
"error": "INSUFFICIENT_CREDITS",
"message": "Not enough credits to send this email"
}Branch on error, never on the wording of message. The full list is in Errors & Rate Limits.