BounceZip API
Connect BounceZip to your website, app or backend to verify emails in real time, or send entire lists for bulk verification — all over a simple JSON HTTP API.
Base URLs
Authentication
Users authenticate API requests with an API key. Include the key as a query parameter on every request. You can create and manage keys under API → API keys in the dashboard.
API key parameters
| API | Query parameter | Example |
|---|---|---|
| Real-time API | api | ?api=YOUR_API_KEY |
| Catch-All API | api | ?api=YOUR_API_KEY |
| Bulk API | key | ?key=YOUR_API_KEY |
curl "https://api.bouncezip.com/v1/verify?api=YOUR_API_KEY&email=name@example.com"
curl "https://api.bouncezip.com/v1/catchall?api=YOUR_API_KEY&email=name@example.com"
curl -X POST "https://api.bouncezip.com/v1/upload?key=YOUR_API_KEY" -F "file=@emails.csv"
# Create a sandbox key under Dashboard → API. Never hardcode a production key.
bz_test_YOUR_SANDBOX_KEY
Real-time API
Verify a single email address in real time — perfect for validating sign-ups at the point of entry. Results return in about a second.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| apirequired | string | Required API key. |
| emailrequired | string | Required email address to verify. URL-encode special characters. |
| timeout | integer | Optional value from 2 to 60 seconds. Default is 20 seconds. |
Request
curl "https://api.bouncezip.com/v1/verify?api=YOUR_API_KEY&email=name@example.com&timeout=10"
<?php
$url = "https://api.bouncezip.com/v1/verify?api=YOUR_API_KEY&email=" . urlencode("name@example.com") . "&timeout=10";
$response = file_get_contents($url);
$result = json_decode($response, true);
echo $result["result"]; // "ok"
import requests r = requests.get("https://api.bouncezip.com/v1/verify", params={ "api": "YOUR_API_KEY", "email": "name@example.com", "timeout": 10, }) print(r.json()["result"]) # "ok"
const res = await fetch( "https://api.bouncezip.com/v1/verify?api=YOUR_API_KEY" + "&email=name@example.com&timeout=10" ); const data = await res.json(); console.log(data.result); // "ok"
Response
{
"email": "name@example.com",
"quality": "good",
"result": "ok",
"result_code": 1,
"sub_result": "deliverable",
"free": false,
"role": false,
"did_you_mean": "",
"credits": 107255,
"execution_time": 2,
"error": ""
}
Expected response fields
| Field | Description |
|---|---|
| The email address that was verified. | |
| quality | good risky bad — a quick deliverability signal. |
| result | Primary verification result. One of ok, catch_all, unknown, disposable, invalid. |
| result_code | Numeric code for the result value. |
| sub_result | Reason detail, e.g. deliverable, accept_all, bad_domain, bad_syntax. |
| free | true for free providers (Gmail, Outlook…). |
| role | true for role addresses (info@, support@…). |
| did_you_mean | Suggested correction for a likely typo, if any. |
| credits | Credits remaining on your account. |
| execution_time | Time taken to process the request. |
| error | Error message if the request could not be completed, otherwise empty. |
Possible result values
| Code | Result | Meaning |
|---|---|---|
| 1 | ok | Valid, deliverable mailbox. |
| 2 | catch_all | Domain accepts all mail — deliverability uncertain. |
| 3 | unknown | Server did not respond in time. |
| 4 | disposable | Temporary / throwaway address. |
| 6 | invalid | Mailbox or domain does not exist. |
Catch-All API
Deep-check a single catch-all or uncertain email address and return deliverability, recommendation, confidence, score, and supporting verification details.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| apirequired | string | Required API key. |
| emailrequired | string | Required email address to deep-check. URL-encode special characters. |
| timeout | integer | Optional value from 2 to 60 seconds. Default is 20 seconds. |
Request
curl "https://api.bouncezip.com/v1/catchall?api=YOUR_API_KEY&email=name@example.com&timeout=10"
import requests r = requests.get("https://api.bouncezip.com/v1/catchall", params={ "api": "YOUR_API_KEY", "email": "name@example.com", "timeout": 10, }) print(r.json()["recommendation"])
const res = await fetch( "https://api.bouncezip.com/v1/catchall?api=YOUR_API_KEY" + "&email=name@example.com&timeout=10" ); const data = await res.json(); console.log(data.deliverability, data.score);
Response
{
"email": "name@example.com",
"status": "catchall",
"result": "catch_all",
"result_code": 2,
"quality": "risky",
"deliverability": "uncertain",
"score": 72,
"recommendation": "send_with_caution",
"confidence": "medium",
"risk_level": "medium",
"mx": {},
"smtp": {},
"checks": {},
"credits": 107250,
"execution_time": 2.4,
"error": ""
}
Expected response fields
| Field | Description |
|---|---|
| The email address that was checked. | |
| status | Normalized BounceZip status such as valid, catchall, unknown, or invalid. |
| result | API-compatible result value such as ok, catch_all, unknown, disposable, or invalid. |
| deliverability | Human-readable deliverability signal: deliverable, undeliverable, or uncertain. |
| score | Deliverability score from 0 to 100 when available. |
| recommendation | Suggested next action such as send, send_with_caution, retry_or_verify_later, or do_not_send. |
| confidence | Confidence level for the result. |
| mx, smtp, checks | Additional verification details returned by the verification engine. |
| credits | Credits remaining after the request. |
| execution_time | Time taken to process the request. |
| error | Error message if the request could not be completed, otherwise empty. |
Bulk API
Send entire lists for verification: upload a file, poll for progress, then download the results. Ideal for cleaning large databases.
Bulk API flow
Upload a file
Submit a CSV or spreadsheet file and receive a file_id. Use verification_type=catchall for bulk Catch-All checks.
Check progress
Poll the file status until processing is finished.
Download results
Export all rows or a filtered result set.
Stop a job
Stop a running job if it is no longer needed.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/upload | Upload a file for standard or catch-all bulk verification. |
| GET | /v1/fileinfo | Check job status, progress and summary counts. |
| GET | /v1/download | Download complete or filtered results. |
| GET | /v1/stop | Stop a running bulk verification job. |
1 · Upload a file
curl -X POST "https://api.bouncezip.com/v1/upload?key=YOUR_API_KEY" -F "verification_type=email" -F "file_contents=@/path/to/list.csv"
import requests with open("list.csv", "rb") as f: r = requests.post( "https://api.bouncezip.com/v1/upload", params={"key": "YOUR_API_KEY"}, data={"verification_type": "email"}, files={"file_contents": f}, ) print(r.json()["file_id"])
verification_type=catchall with the same /v1/upload endpoint. Standard aliases include email, standard, or normal; catch-all aliases include catchall, catch_all, or catch-all.{
"file_id": "940",
"file_name": "list.csv",
"status": "in_progress",
"total_rows": 12500,
"percent": 0,
"estimated_time_sec": 320
}
2 · Check progress
{
"file_id": "940",
"status": "finished",
"percent": 100,
"total_rows": 12500,
"ok": 9750,
"catch_all": 1250,
"invalid": 1000,
"unknown": 500,
"credit": 12500
}
3 · Download results
Use the filter parameter to download the exact result set you need.
Download filters
| Filter | Description |
|---|---|
ok | Only valid / deliverable emails. |
ok_and_catch_all | Valid emails plus catch-all results. |
unknown | Emails where verification could not be confirmed. |
invalid | Invalid or undeliverable emails. |
all | All verification results. |
4 · Stop a running job
Credits API
Check your available credit balance programmatically. The response shows available credits, bulk credits, and the current plan.
curl "https://api.bouncezip.com/v1/credits?api=YOUR_API_KEY"
{
"credits": 107255,
"bulk_credits": 107255,
"plan": "pro"
}
Zapier Guidance
Use BounceZip with Zapier to verify emails from forms, CRMs, spreadsheets, and other no-code workflows. A Zap can send each email to the Real-time API, then route the contact based on the verification result.
Choose a trigger
Start from a form submission, CRM contact, spreadsheet row, or any Zapier-supported app.
Call BounceZip
Use a Zapier webhook or approved BounceZip action to send the email and API key securely.
Verify & route
Use the result field to keep valid emails, tag catch-all or unknown contacts, and skip invalid addresses.
Suggested Zapier actions
- Verify an email — call the Real-time API and return the full result for a single address.
- Deep-check catch-all — call the Catch-All API when a contact needs a higher-confidence deliverability decision.
- Check credits — read the remaining balance before running a workflow.