The Best Temp Mail API in 2026: FreeCustom.Email API Deep Dive + Full Competitor Comparison

Dishant SinghMarch 5, 2026

Why Developers Need a Dedicated Temp Mail API in 2026

Email is still at the center of nearly every application authentication flow — sign-up confirmations, OTP delivery, password resets, trial activations. Testing these flows correctly requires real inboxes with real delivery behavior. And doing it at any meaningful scale requires programmatic access, not manual browser sessions.

That's the core problem a temp mail API solves: programmatic creation and management of disposable email inboxes, so your tests, automation workflows, and QA pipelines can run end-to-end without touching real user accounts or polluting production data.

But not all temp mail APIs are built the same. Some are scrappy community tools with no SLA and a single free tier. Others are enterprise testing platforms with pricing that starts at hundreds of dollars per month. The right choice depends entirely on what you're building and how much control you need over the inbox lifecycle.

This guide covers everything: the full FreeCustom.Email API v2.0 — every endpoint, authentication model, WebSocket spec, and OTP extraction feature — followed by a deep, honest comparison against every major competitor available in 2026.

Start building with the FreeCustom.Email API →


FreeCustom.Email API v2.0: What It Is and Who It's For

The FreeCustom.Email API is a RESTful + WebSocket interface for programmatic disposable email infrastructure. It gives developers full lifecycle control over temporary inboxes: register them, receive messages in real time, read full content including HTML and attachments, extract OTPs automatically, and delete messages when done.

Base URL: https://api2.freecustom.email

API version: 2.0.0 (updated March 2026)

Auth model: Bearer token — all authenticated routes require Authorization: Bearer fce_<your_key> in the request header. Keys are prefixed fce_ for easy identification.

The API is organized into four functional areas:

  • Account — Plan info, feature flags, live usage stats

  • Inboxes — Register, list, and unregister inboxes

  • Messages — List, read (with full HTML/text/attachments), and delete messages

  • OTP — Dedicated OTP and verification link extraction endpoint


Complete API Endpoint Reference

Account Endpoints

GET /v1/me — Get Account Info

Returns the authenticated developer's full account state: current plan, credit balance, feature flags enabled on the plan, and active rate limits.

curl https://api2.freecustom.email/v1/me \
  -H "Authorization: Bearer fce_your_api_key"

Response example:

{
  "success": true,
  "data": {
    "plan": "startup",
    "credits": 25000,
    "features": {
      "otp_extraction": true,
      "attachments": true,
      "max_attachment_size_mb": 10,
      "custom_domains": false,
      "websocket": true,
      "max_ws_connections": 5
    },
    "rate_limits": {
      "requests_per_second": 25,
      "requests_per_month": 500000
    },
    "inboxes_registered": 12
  }
}

Response headers expose live rate limit state for every request:

  • X-RateLimit-Limit-Second / X-RateLimit-Remaining-Second

  • X-RateLimit-Limit-Month / X-RateLimit-Remaining-Month

This per-response header approach means you can build adaptive throttling into your application without a separate usage poll.


GET /v1/usage — Get Live Usage Stats

Returns current billing period usage with percentage consumed — perfect for dashboards, alerting, or dynamic throttling logic.

curl https://api2.freecustom.email/v1/usage \
  -H "Authorization: Bearer fce_your_api_key"

Response includes:

  • Plan name and billing period

  • Requests used / limit / remaining / percent_used

  • Credit balance with notes

  • Per-second rate limit currently active


GET /v1/plans — List Plans and Credit Packages (public, no auth)

The only public endpoint — no API key required. Returns all available plans, their feature sets, rate limits, and available credit top-up packages. Useful for building pricing pages, upgrade prompts, or self-service plan comparison tools.

curl https://api2.freecustom.email/v1/plans

Inbox Management Endpoints

POST /v1/inboxes — Register an Inbox

Registers a specific email address as an API-managed inbox. Once registered, the API will track and serve incoming messages for that address.

curl -X POST https://api2.freecustom.email/v1/inboxes \
  -H "Authorization: Bearer fce_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"inbox": "qa-test-march@ditapi.info"}'

Response (201 Created):

{
  "success": true,
  "data": {
    "inbox": "qa-test-march@ditapi.info",
    "registered_at": "2026-03-05T10:23:11Z"
  }
}

Important notes:

  • Custom domain inboxes require Growth plan or higher and prior domain verification

  • Registering an already-registered inbox returns 409 already_registered

  • Invalid addresses return 400 invalid_inbox

  • Plan restrictions return 403 plan_restriction with an upgrade_url


GET /v1/inboxes — List Registered Inboxes

Returns all inboxes currently registered under your API key, with a count.

curl https://api2.freecustom.email/v1/inboxes \
  -H "Authorization: Bearer fce_your_api_key"

DELETE /v1/inboxes/{inbox} — Unregister an Inbox

Removes an inbox from your account. The address must be URL-encoded (e.g., qa-test%40ditapi.info).

curl -X DELETE \
  "https://api2.freecustom.email/v1/inboxes/qa-test%40ditapi.info" \
  -H "Authorization: Bearer fce_your_api_key"

Message Endpoints

GET /v1/inboxes/{inbox}/messages — List Messages

Returns the message list for a registered inbox with cursor-based pagination.

curl "https://api2.freecustom.email/v1/inboxes/qa-test%40ditapi.info/messages?limit=20" \
  -H "Authorization: Bearer fce_your_api_key"

Query parameters:

Param

Type

Default

Description

limit

integer

20

Max messages to return (max 100)

before

string

Message ID — returns messages older than this (cursor pagination)

Message summary object includes:

{
  "id": "msg_abc123",
  "from": "noreply@someservice.com",
  "subject": "Verify your email",
  "date": "2026-03-05T10:25:00Z",
  "has_attachment": false,
  "otp": "482910",
  "verification_link": "https://app.example.com/verify?token=xyz"
}

Note: On free plan, otp returns __DETECTED__ (indicating an OTP is present) rather than the actual value. Full extraction requires Developer plan or higher.


GET /v1/inboxes/{inbox}/messages/{id} — Get Full Message

Returns complete message detail including full HTML body, plain text, extracted OTP, verification link, and attachment metadata.

curl "https://api2.freecustom.email/v1/inboxes/qa-test%40ditapi.info/messages/msg_abc123" \
  -H "Authorization: Bearer fce_your_api_key"

Response data includes:

{
  "id": "msg_abc123",
  "from": "noreply@someservice.com",
  "to": "qa-test@ditapi.info",
  "subject": "Verify your email",
  "date": "2026-03-05T10:25:00Z",
  "html": "<html>...full email HTML...</html>",
  "text": "Your verification code is 482910",
  "otp": "482910",
  "verification_link": "https://app.example.com/verify?token=xyz",
  "has_attachment": true,
  "attachments": [
    {
      "filename": "welcome.pdf",
      "content_type": "application/pdf",
      "size_bytes": 48320
    }
  ]
}

This is the richest endpoint in the API — full HTML rendering, automatic OTP extraction, automatic verification link detection, and complete attachment metadata in a single call.


DELETE /v1/inboxes/{inbox}/messages/{id} — Delete a Message

Removes a specific message from an inbox.

curl -X DELETE \
  "https://api2.freecustom.email/v1/inboxes/qa-test%40ditapi.info/messages/msg_abc123" \
  -H "Authorization: Bearer fce_your_api_key"

OTP Endpoint (Developer Plan+)

GET /v1/inboxes/{inbox}/otp — Get Latest OTP

The most developer-focused endpoint in the API. Returns the extracted OTP code and verification link from the most recently received message that contains one — in a single, clean call.

curl "https://api2.freecustom.email/v1/inboxes/qa-test%40ditapi.info/otp" \
  -H "Authorization: Bearer fce_your_api_key"

Response:

{
  "success": true,
  "data": {
    "inbox": "qa-test@ditapi.info",
    "otp": "482910",
    "verification_link": "https://app.example.com/verify?token=xyz",
    "from": "noreply@someservice.com",
    "subject": "Verify your email",
    "message_id": "msg_abc123",
    "received_at": "2026-03-05T10:25:00Z",
    "message": null
  }
}

If no OTP has arrived yet, all fields return null — making it easy to poll this endpoint in a test loop until the code appears. This endpoint eliminates the need to fetch, parse, and regex-search message content in your test code. The extraction is done server-side, and you get a clean structured response.


Real-Time Email with WebSockets

One of FreeCustom.Email API v2.0's most powerful features is its WebSocket push interface, available on Startup plan and above. Instead of polling the message list endpoint repeatedly — which adds latency, burns through rate limits, and complicates test orchestration — you subscribe to a WebSocket connection and receive new emails the moment they arrive.

WebSocket endpoint:

wss://api2.freecustom.email/v1/ws

Connection parameters:

Query param

Required

Description

api_key

Yes

Your fce_ prefixed API key

mailbox

No

Subscribe to a specific inbox; omit to receive events for all registered inboxes

Connection example (Node.js):

const WebSocket = require('ws');

const ws = new WebSocket(
  'wss://api2.freecustom.email/v1/ws?api_key=fce_your_key&mailbox=qa-test@ditapi.info'
);

ws.on('message', (data) => {
  const event = JSON.parse(data);

  if (event.type === 'new_message') {
    console.log('New email received:', event.data.inbox);
    console.log('OTP:', event.data.message.otp);
    console.log('Verification link:', event.data.message.verification_link);
  }

  if (event.type === 'ping') {
    ws.send(JSON.stringify({ type: 'pong' }));
  }
});

Server → Client Events

connected — Fires on successful connection. Includes:

  • Current plan

  • subscribed_to — which inbox(es) you're monitoring

  • max_connections — connection limit for your plan

  • current_connections — connections currently open

new_message — Fires on every incoming email. Includes:

{
  "type": "new_message",
  "data": {
    "inbox": "qa-test@ditapi.info",
    "message": {
      "id": "msg_abc123",
      "from": "noreply@someservice.com",
      "subject": "Verify your email",
      "date": "2026-03-05T10:25:00Z",
      "has_attachment": false,
      "otp": "482910",
      "verification_link": "https://app.example.com/verify?token=xyz"
    }
  }
}

ping — Server heartbeat every 30 seconds. Respond with pong to keep the connection alive.

WebSocket Close Codes

Code

Meaning

4001

Invalid or missing API key

4003

Plan too low (WebSocket requires Startup+)

4004

Inbox not registered to this account

4029

Connection limit reached for your plan


Authentication, Error Handling, and Rate Limits

Authentication

All authenticated routes use Bearer token authentication:

Authorization: Bearer fce_your_api_key_here

The fce_ prefix makes API keys immediately identifiable in logs, configuration files, and secret scanning tools. Missing or invalid keys return 401 unauthorized. Revoked keys return 401 key_revoked.

Error Response Format

All errors follow a consistent structure:

{
  "success": false,
  "error": "rate_limit_exceeded",
  "message": "You have exceeded your per-second rate limit.",
  "upgrade_url": "https://www.freecustom.email/pricing",
  "credits_url": "https://www.freecustom.email/credits",
  "hint": "Consider upgrading to Startup for 25 req/s"
}

Plan restriction errors (403) include an upgrade_url. Rate limit errors (429) include both an upgrade_url and a credits_url for purchasing additional credits, plus a Retry-After header indicating how long to wait.

Rate Limiting

The API enforces two independent rate limit dimensions:

  1. Per-second limit — Burst protection. If exceeded, returns 429 rate_limit_exceeded. The Retry-After header tells you exactly how many seconds to wait.

  2. Monthly quota — Total requests in the billing period. If exceeded, returns 429 monthly_quota_exceeded. Resolvable by upgrading your plan or purchasing credit top-ups (no interruption to service).

Both limits are exposed in real-time via response headers on every request, making it straightforward to build adaptive rate management into any client.


Complete Integration Example: Automated Sign-Up Testing

Here's a full end-to-end test flow using the FreeCustom.Email API in Python — registering an inbox, triggering a sign-up, waiting for the OTP via WebSocket, and cleaning up:

import requests
import websocket
import json
import threading

API_KEY = "fce_your_api_key"
BASE_URL = "https://api2.freecustom.email/v1"
TEST_INBOX = "e2e-test-signup@ditapi.info"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# Step 1: Register inbox
requests.post(f"{BASE_URL}/inboxes", headers=HEADERS, json={"inbox": TEST_INBOX})

# Step 2: Trigger sign-up in your app (using your test framework here)
# app.register_user(email=TEST_INBOX)

# Step 3: Wait for OTP via WebSocket
otp_received = threading.Event()
otp_code = {}

def on_message(ws, message):
    event = json.loads(message)
    if event.get("type") == "new_message":
        otp = event["data"]["message"].get("otp")
        if otp:
            otp_code["value"] = otp
            otp_received.set()
    elif event.get("type") == "ping":
        ws.send(json.dumps({"type": "pong"}))

ws = websocket.WebSocketApp(
    f"wss://api2.freecustom.email/v1/ws?api_key={API_KEY}&mailbox={TEST_INBOX}",
    on_message=on_message
)
thread = threading.Thread(target=ws.run_forever)
thread.start()

# Wait up to 30 seconds for OTP
otp_received.wait(timeout=30)
ws.close()

print(f"OTP received: {otp_code.get('value')}")

# Step 4: Complete verification in your app
# app.verify_otp(otp_code["value"])

# Step 5: Clean up
messages = requests.get(
    f"{BASE_URL}/inboxes/{TEST_INBOX}/messages", headers=HEADERS
).json()

for msg in messages["data"]["messages"]:
    requests.delete(
        f"{BASE_URL}/inboxes/{TEST_INBOX}/messages/{msg['id']}", headers=HEADERS
    )

This pattern — register inbox, trigger action, receive via WebSocket, assert, clean up — maps cleanly onto Playwright, Cypress, Selenium, or any other test framework.


Deep Competitor Comparison: FreeCustom.Email API vs. Everyone Else (2026)

The temp mail API landscape in 2026 includes a mix of lightweight free tools, dedicated testing platforms, and enterprise testing suites. Here's a comprehensive, factual comparison.

Competitor Overview

Mail.tm API — A genuinely free, account-based temp mail API with no API key requirement, no paid tiers, and SSE for real-time delivery. The model requires creating a temporary "account" (with a password) for each inbox rather than a developer API key pattern. No OTP extraction, no custom domains, no attachment API, no SLA. Good for hobby projects and open-source tools. Not suitable for commercial or production use.

Temp-mail.org (via RapidAPI) — Available through RapidAPI's marketplace. Basic get-emails-by-hash functionality. No WebSocket, no OTP extraction, no inbox registration model. Pricing is marketplace-metered with limited transparency. The model is hash-based rather than address-based, which makes test orchestration less intuitive. Has a premium tier but capabilities are constrained.

Mailsac — An established disposable email platform that's been around for nearly a decade. Strong enterprise positioning with SAML SSO, team accounts, sub-accounts, and webhook forwarding. Supports WebSocket and REST. Focused primarily on the enterprise QA market with yearly billing models. Pricing is opaque without direct quotes for higher tiers. No native OTP extraction endpoint.

MailSlurp — A full email API that handles both sending and receiving — making it significantly more capable than a pure temp mail API, but also significantly more complex and expensive. Starts at approximately $19-23/month with paid tiers up to $430/month for enterprise. Has official SDKs in JavaScript, Python, PHP, Java, Go, Ruby, and more. No free tier for production use. Excellent for teams that need a complete email testing platform with SMTP, not just disposable receive-only inboxes.

Mailinator — An enterprise email and SMS testing platform. Private domain support, webhook delivery, message routing rules. Originally famous for its completely public inboxes (anyone can read anything@mailinator.com). Upgraded plans add private domains and API access. Pricing is enterprise-scale; not publicly listed. Includes SMS testing features that others don't.

Guerrilla Mail — Primarily a consumer browser tool with a basic API. No OTP extraction, no WebSocket, no custom domains. Mostly suitable for very simple integrations or manual testing workflows. Not built for production automation.

Feature Comparison Table

Feature

FreeCustom.Email API

Mail.tm

Mailsac

MailSlurp

Mailinator

Auth model

Bearer fce_ key

Per-inbox token (no global key)

API key

API key

API key

REST API

✅ Full

✅ Basic

✅ Full

✅ Full (send+receive)

✅ Full

WebSocket / real-time push

✅ (Startup+)

✅ SSE

✅ Webhook

OTP auto-extraction

✅ Dedicated endpoint

❌ (manual parse)

Verification link extraction

✅ Automatic

Custom domains

✅ (Growth+)

Attachment support

✅ (plan-based)

Outbound sending

❌ (receive-only)

❌ (receive)

Cursor pagination

Free tier

✅ (with OTP preview)

✅ (fully free)

✅ (limited)

❌ (paid from ~$19/mo)

❌ (enterprise)

Pay-as-you-go credits

Rate limit headers on every response

Public plans endpoint (no auth)

Consistent error format

✅ (all errors structured)

⚠️ Partial

SAML SSO

✅ Business+

✅ Team+

SMS testing

OpenAPI / Swagger spec

✅ (v3.1.0)

Where FreeCustom.Email API Uniquely Wins

1. OTP extraction as a first-class API feature. No other temp mail API in this comparison offers a dedicated /otp endpoint that returns a structured {otp, verification_link, message_id, received_at} response from the most recent email containing a code. Every competitor requires you to fetch the raw message, parse the HTML or text body, and extract the code yourself — which means writing and maintaining regex patterns across different email templates from different senders. The OTP endpoint eliminates that entire category of test maintenance burden.

Additionally, even on the free plan, the message list endpoint signals "otp": "__DETECTED__" when an OTP is present — so free tier users know an OTP arrived even before upgrading to read it.

2. Rate limit transparency on every response. Knowing your current rate limit state without making a separate API call is a meaningful operational advantage for high-frequency automation workflows. Every response from the FreeCustom.Email API includes four rate limit headers: second-level limit and remaining, month-level limit and remaining. No other provider in this comparison exposes per-response rate limit state at both time dimensions simultaneously.

3. Pay-as-you-go credit top-ups. Monthly quota exceeded? Don't want to upgrade your entire plan? FreeCustom.Email is the only provider in this comparison with a credit purchase model — buy additional requests without changing your subscription tier. For teams with variable usage patterns (heavy QA sprints followed by quiet periods), this flexibility is practically significant.

4. Structured error responses with upgrade and credits URLs embedded. When you hit a plan restriction or rate limit, the error response itself tells you exactly where to go to fix it — with upgrade_url and credits_url fields embedded directly in the error JSON. This is a small detail but a meaningful DX (developer experience) improvement over raw HTTP 403/429 responses that require out-of-band documentation lookup.

5. Verification link extraction alongside OTP. The /otp endpoint and the message detail endpoint both return verification_link — a server-side extracted URL from the email body. For test flows involving email verification (click a link to confirm your account), this means you don't need to parse HTML or regex-search for URLs. The API gives you the link directly.

Where Competitors Win

Mail.tm wins on zero-cost access with no API key requirements — genuinely useful for open-source tools and community projects where infrastructure cost is a constraint. The trade-off is no SLA, no OTP features, no commercial terms, and a per-inbox auth model that's more complex to orchestrate at scale.

MailSlurp wins if you also need to send email — it's the only full SMTP-capable API in this comparison that handles both inbound and outbound at scale. For teams testing complex email flows that involve replies, forwarding, or outbound transactional triggers, MailSlurp's bidirectional capability is genuinely necessary. The cost and complexity premium is real, but so is the capability delta.

Mailsac wins for large enterprises that need SAML SSO, team management with role-based access, and the kind of procurement-friendly billing (PO-based, enterprise MSA) that large organizations require. If you're deploying into a Fortune 500 with a dedicated IT procurement process, Mailsac's enterprise tier structure is better aligned with those workflows.

Mailinator wins if you need SMS testing alongside email — it's the only provider in this comparison with native SMS inbox support, making it the right choice for teams testing multi-channel authentication (email + SMS OTP).

Pricing Comparison

Provider

Free Tier

Entry Paid Tier

Notes

FreeCustom.Email

✅ Yes (OTP preview, basic limits)

See pricing page

Credit top-ups available; no forced upgrade

Mail.tm

✅ Fully free

No paid tier

No SLA, community project

Mailsac

✅ Limited free

Business/Enterprise (annual billing)

Pricing not public; contact sales

MailSlurp

❌ No free tier

~$19–23/month (Starter)

Paid from day one; no free production use

Mailinator

❌ No

Enterprise pricing

Not publicly listed; contact sales


Practical Integration Patterns

CI/CD Pipeline Integration (GitHub Actions)

# .github/workflows/email-test.yml
name: Email Flow Tests

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run email verification tests
        env:
          FCE_API_KEY: ${{ secrets.FCE_API_KEY }}
          TEST_INBOX: "ci-test-${{ github.run_id }}@ditapi.info"
        run: |
          # Register inbox
          curl -X POST https://api2.freecustom.email/v1/inboxes \
            -H "Authorization: Bearer $FCE_API_KEY" \
            -H "Content-Type: application/json" \
            -d "{\"inbox\": \"$TEST_INBOX\"}"

          # Run your test suite
          npm test -- --email $TEST_INBOX

          # Cleanup: unregister inbox
          ENCODED=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$TEST_INBOX'))")
          curl -X DELETE "https://api2.freecustom.email/v1/inboxes/$ENCODED" \
            -H "Authorization: Bearer $FCE_API_KEY"

Playwright Test Integration

// tests/signup.spec.ts
import { test, expect } from '@playwright/test';

const API_KEY = process.env.FCE_API_KEY!;
const BASE = 'https://api2.freecustom.email/v1';
const INBOX = `playwright-${Date.now()}@ditdrive.info`;

async function registerInbox() {
  await fetch(`${BASE}/inboxes`, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ inbox: INBOX }),
  });
}

async function waitForOtp(maxWaitMs = 30000): Promise<string> {
  const deadline = Date.now() + maxWaitMs;
  while (Date.now() < deadline) {
    const res = await fetch(`${BASE}/inboxes/${encodeURIComponent(INBOX)}/otp`, {
      headers: { Authorization: `Bearer ${API_KEY}` },
    });
    const data = await res.json();
    if (data.data?.otp) return data.data.otp;
    await new Promise((r) => setTimeout(r, 2000));
  }
  throw new Error('OTP not received within timeout');
}

test('user can sign up and verify email', async ({ page }) => {
  await registerInbox();

  await page.goto('https://yourapp.com/signup');
  await page.fill('[name=email]', INBOX);
  await page.fill('[name=password]', 'TestPass123!');
  await page.click('[type=submit]');

  const otp = await waitForOtp();
  await page.fill('[name=otp]', otp);
  await page.click('[type=submit]');

  await expect(page).toHaveURL('/dashboard');
});

JavaScript / Node.js Polling Pattern

const FCE_BASE = 'https://api2.freecustom.email/v1';
const headers = { Authorization: `Bearer fce_your_key` };

async function pollForOtp(inbox, timeoutMs = 30000) {
  const start = Date.now();
  const encoded = encodeURIComponent(inbox);

  while (Date.now() - start < timeoutMs) {
    const res = await fetch(`${FCE_BASE}/inboxes/${encoded}/otp`, { headers });
    const { data } = await res.json();

    if (data?.otp) {
      return { otp: data.otp, link: data.verification_link };
    }

    // Respect rate limits from response headers
    const remaining = res.headers.get('X-RateLimit-Remaining-Second');
    const delay = parseInt(remaining) < 3 ? 2000 : 500;
    await new Promise((r) => setTimeout(r, delay));
  }

  throw new Error(`OTP not received for ${inbox} within ${timeoutMs}ms`);
}

// Usage
const inbox = `signup-test-${Date.now()}@ditapi.info`;
await fetch(`${FCE_BASE}/inboxes`, {
  method: 'POST',
  headers: { ...headers, 'Content-Type': 'application/json' },
  body: JSON.stringify({ inbox }),
});

// Trigger your app's signup flow here...

const { otp, link } = await pollForOtp(inbox);
console.log(`OTP: ${otp}, Verification link: ${link}`);

Plan Selection Guide

Choosing the right FreeCustom.Email API plan depends on your scale, team size, and which features you need. Here's a practical breakdown:

Use Case

Recommended Tier

Evaluating the API / personal side projects

Free (OTP preview included)

Solo developer with regular QA workflows

Developer (full OTP extraction)

Small team, CI/CD pipeline, WebSocket required

Startup

Custom domain inboxes, high-volume testing

Growth+

Variable usage with occasional spikes

Any plan + credit top-ups

See the FreeCustom.Email pricing page for current plan limits and feature details. You can also call GET /v1/plans (no auth required) programmatically to retrieve current plan data in your application.


Security and Privacy Characteristics

No shared inbox exposure. Registered inboxes are private to your API key. Unlike services with public inboxes (like Mailsac's public @mailsac.com addresses), inboxes registered via the FreeCustom.Email API are account-scoped — only your key can read their messages.

API key scoping. The fce_ prefix convention makes keys identifiable in secret scanning tools (like GitHub's secret scanning or tools like truffleHog), helping prevent accidental exposure in version control.

Rate limit abuse prevention. Both the per-second and per-month limits exist to prevent runaway automation loops from creating unintended usage spikes. The Retry-After header on 429 responses makes well-behaved client implementation straightforward.

HTTPS throughout. All API traffic is encrypted in transit. The WebSocket endpoint is WSS (WebSocket Secure).

For more on FreeCustom.Email's privacy model, see Is Temp Mail Safe? A Complete Privacy & Security Guide and FreeCustom.Email Just Got More Powerful: Attachments & Advanced Security.


Getting Started in Under 5 Minutes

# 1. Get your API key from the dashboard
# https://www.freecustom.email/dashboard

# 2. Check your account status
curl https://api2.freecustom.email/v1/me \
  -H "Authorization: Bearer fce_your_key_here"

# 3. Register your first test inbox
curl -X POST https://api2.freecustom.email/v1/inboxes \
  -H "Authorization: Bearer fce_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"inbox": "my-first-test@ditapi.info"}'

# 4. Check for messages
curl "https://api2.freecustom.email/v1/inboxes/my-first-test%40ditapi.info/messages" \
  -H "Authorization: Bearer fce_your_key_here"

# 5. Get the latest OTP (Developer plan+)
curl "https://api2.freecustom.email/v1/inboxes/my-first-test%40ditapi.info/otp" \
  -H "Authorization: Bearer fce_your_key_here"

Full interactive documentation is available at FreeCustom.Email API Docs and API Playground. Questions or issues? Reach the team via the contact page or submit feedback at freecustom.email/feedback.


Conclusion: The Right Temp Mail API for Modern Development

The FreeCustom.Email API v2.0 occupies a specific and well-defined niche in the 2026 email API landscape: it's the best option for developers and QA teams who need disposable inbox infrastructure with first-class OTP extraction, real-time WebSocket delivery, and a developer experience built around automated testing workflows — at a price point that starts free and scales affordably.

It's not a full email platform (no outbound sending), and it's not an enterprise compliance tool (no SAML SSO). For those specific needs, MailSlurp and Mailsac are the right choices respectively. But for the vast majority of development teams testing sign-up flows, OTP delivery, email verification, and onboarding sequences — FreeCustom.Email's API is the most purpose-built, DX-optimized option available.

Get your API key and start building →


Written by

D

Dishant Singh

A full stack developer with good knowledge of email server, SEO, proxies, and networking, have more than 3 years of experience in building webapps for the netizens. Developing open source, fast, and free SaaS for all.

Discussion0

No comments yet. Be the first to share your thoughts.