API Documentation

Integrate Sender Audit programmatically. Create scans, retrieve results, and monitor your email deliverability from your own tools.

BASE URL https://senderaudit.com/api/v1

Authentication

All API requests require an API key passed in the Authorization header.

API keys are created from your dashboard. Each key is tied to your account and shares its scan quota.

Authorization: Bearer sa_live_your_api_key_here

Security: Keep your API key secret. Do not expose it in client-side code, public repositories, or logs. If compromised, delete it immediately from your dashboard and create a new one.

Rate limits

Scan creation 5 requests / minute + daily plan quota
Other endpoints 30 requests / minute

When a limit is exceeded, the API returns 429 Too Many Requests.

Errors

Errors return a JSON body with a detail field:

{ "detail": "Invalid API key" }
CodeMeaning
400Bad request (missing or invalid parameters)
401Invalid or missing API key
404Resource not found
429Rate limit or daily quota exceeded
500Internal server error

Endpoint reference

Every endpoint is generated from the API itself, so it cannot drift from what the service actually accepts. Paste your API key once on that page and call any of them from there.

Calls you send from there are real. They run against production with the key you provide, count against your quotas, and operations marked as destructive delete data for good. There is no sandbox.

Open the API reference

Prefer the raw schema? Download the OpenAPI document and generate a client from it.

Typical flow

1

Create a scan

POST /scans - get back the target email address.

2

Send your email

Send a test email to the returned address using your mail infrastructure.

3

Poll for completion

GET /scans/{local_part} - poll every 5 seconds until status is completed.

4

Fetch results

GET /scans/{local_part}/results - retrieve the full deliverability report.

Complete example (bash)

#!/bin/bash
API_KEY="sa_live_YOUR_KEY"
BASE="https://senderaudit.com/api/v1"

# 1. Create scan
RESPONSE=$(curl -s -X POST "$BASE/scans" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}')
LOCAL=$(echo "$RESPONSE" | jq -r '.local_part')
EMAIL=$(echo "$RESPONSE" | jq -r '.email_address')

echo "Send your email to: $EMAIL"
echo "Waiting for analysis..."

# 2. Send your email (via your SMTP server)
# echo "Test" | mail -s "Deliverability check" "$EMAIL"

# 3. Poll until completed
while true; do
  STATUS=$(curl -s "$BASE/scans/$LOCAL" \
    -H "Authorization: Bearer $API_KEY" | jq -r '.status')
  [ "$STATUS" = "completed" ] && break
  [ "$STATUS" = "failed" ] && echo "Scan failed" && exit 1
  sleep 5
done

# 4. Get results
curl -s "$BASE/scans/$LOCAL/results" \
  -H "Authorization: Bearer $API_KEY" | jq '.scores'