API reference

API reference

The BlacklistGuard HTTP API lets you send email and manage your audience, sending domains, and reporting programmatically. Every endpoint speaks JSON and uses the conventions on this page.

Base URL

All API requests go to:

https://app.blacklistguard.com/api/v1

Authentication

Authenticate every request with an API key in the X-API-Key header. Keys begin with efk_ and are tied to your workspace.

curl https://app.blacklistguard.com/api/v1/emails/send \
  -H "X-API-Key: efk_your_api_key"

See Authentication & API keys for creating, rotating, and securing keys.

Response format

Responses use a consistent envelope. On success, your data is in data:

{ "success": true, "data": { /* ... */ }, "message": "..." }

On failure, success is false and you get an error message plus a machine-readable code:

{ "success": false, "error": "From address is not authorized", "code": "VALIDATION_ERROR" }

Error codes

The HTTP status reflects the outcome; the code field tells you exactly what happened. The codes you're most likely to handle:

CodeHTTPMeaning
VALIDATION_ERROR400The request was malformed or a field was invalid.
BAD_REQUEST400The request couldn't be processed as sent.
UNAUTHORIZED401Missing or invalid API key.
FORBIDDEN403The key isn't allowed to perform this action.
NOT_FOUND404The requested resource doesn't exist.
CONFLICT409The request conflicts with existing data (e.g. a duplicate).
RATE_LIMIT_EXCEEDED429Too many requests too quickly — slow down and retry.
PLAN_LIMIT_REACHED402Your plan's monthly volume is used up.
INSUFFICIENT_BALANCE402Your prepaid balance is too low to cover this action.
EMAIL_NOT_VERIFIED403The sender address or domain isn't verified yet.
SERVICE_SUSPENDED403The workspace is suspended.
INTERNAL_ERROR500Something went wrong on our side — retry shortly.

Rate limits

The API accepts up to 100 requests per second (with short bursts to 200) per source IP. If you exceed that, requests return 429 with code RATE_LIMIT_EXCEEDED — pause briefly and retry. For steady throughput, keep well under the limit and add a small backoff when you see a 429.

Quotas & plan limits

How much you can send is governed by your plan, not a fixed request cap. Each plan includes a monthly email allowance:

PlanIncluded emails / moOver the allowance
Free3,000Sending pauses when the allowance is reached.
Growth — $35/mo50,000$0.0008 per additional email.
Scale — $95/mo250,000$0.0008 per additional email.
EnterpriseCustomNegotiated.

On paid plans, sending beyond your allowance draws from your prepaid balance — if it runs out, sends return INSUFFICIENT_BALANCE until you top up. Free plans hard-stop at the allowance with PLAN_LIMIT_REACHED. Your workspace may also have an optional hourly send cap configured by an administrator.

Pagination

List endpoints accept page and limit query parameters and return a pagination object alongside the results:

{
  "success": true,
  "data": {
    "pagination": { "page": 1, "limit": 50, "total": 214, "total_pages": 5 },
    "transactions": [ /* ... */ ]
  }
}

Endpoints

Reference pages by resource: