GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com โ€” GitHub - DishIs/fce-sdk-python: Official Python SDK for FreeCustom.Email โ€” disposable inboxes, OTP extraction, real-time WebSocket delivery

BranchesTags
Open more actions menu

Latest commit

 

History

9 Commits
9 Commits

Folders and files

NameName
Last commit message
Last commit date
src/freecustom_email
src/freecustom_email
 
 
tests
tests
 
 
.DS_Store
.DS_Store
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
PUBLISH_GUIDE.md
PUBLISH_GUIDE.md
 
 
README.md
README.md
 
 
pyproject.toml
pyproject.toml
 
 

Repository files navigation

๐Ÿงช FreeCustom.Email โ€” Auth Flow Testing & OTP Debugging SDK

PyPI License

Test, debug, and automate signup, OTP, and email-based authentication flows โ€” with real-time observability.

FreeCustom.Email is an API-first platform for developers and QA teams to:

  • โœ… Create inboxes programmatically
  • โœ… Receive emails in real-time
  • โœ… Extract OTPs and verification links automatically
  • โœ… Debug full auth flows with timeline + latency insights

โšก Why this exists

Testing auth flows is painful:

  • โŒ Flaky email delivery
  • โŒ Polling delays
  • โŒ OTP parsing issues
  • โŒ No visibility into failures

FreeCustom.Email solves this by giving you: ๐Ÿ‘‰ real-time auth flow debugging.


๐Ÿ“ฆ Installation

pip install freecustom-email

๐Ÿš€ Quick Start (Auth Flow Testing)

import asyncio
from freecustom_email import FreeCustomEmail

async def main():
    client = FreeCustomEmail(api_key="fce_your_api_key_here")
    email = "[email protected]"

    # 1. Create inbox (pass `is_testing=True` for zero-latency testing mode)
    await client.inboxes.register(email, is_testing=True)

    # 2. Start test run (NEW - Groups events in your timeline)
    await client.inboxes.start_test(email, "signup-test-1")

    # 3. Trigger your app (e.g. using httpx or playwright)
    # await httpx.post("https://yourapp.com/api/send-otp", json={"email": email})

    # 4. Wait for OTP
    otp = await client.otp.wait_for(email)
    print(f"OTP: {otp}")

    # 5. Debug the full flow
    timeline = await client.inboxes.get_timeline(email, "signup-test-1")
    print(timeline)

if __name__ == "__main__":
    asyncio.run(main())

๐Ÿ”ฅ Debug Your Auth Flow

Timeline (see what actually happened)

timeline = await client.inboxes.get_timeline(email)
print(timeline)
# [
#   { "type": "smtp_rcpt_received", "time": 820 },
#   { "type": "email_received", "time": 830 },
#   { "type": "otp_extracted", "time": 835 },
#   { "type": "websocket_sent", "time": 840 }
# ]

Insights (why your test failed)

insights = await client.inboxes.get_insights(email)
print(insights)
# [
#   { "type": "slow_delivery", "message": "Email took >3s" },
#   { "type": "multiple_detected", "message": "Multiple emails detected" }
# ]

Test Runs (group your flows)

await client.inboxes.start_test(email, "signup-test-1")
timeline = await client.inboxes.get_timeline(email, "signup-test-1")

โšก Real-time Debugging (WebSocket)

import asyncio
from freecustom_email import FreeCustomEmail

async def main():
    client = FreeCustomEmail(api_key="fce_...")
    ws = client.realtime(mailbox="[email protected]")

    @ws.on("email")
    async def on_email(email):
        print(f"Flow update! OTP: {email.otp}")

    await ws.connect()
    await ws.wait()

asyncio.run(main())

๐Ÿงช Full Playwright Example

import pytest
from playwright.async_api import Page
from freecustom_email import FreeCustomEmail
import os

client = FreeCustomEmail(api_key=os.getenv("FCE_API_KEY"))

@pytest.mark.asyncio
async def test_signup_flow(page: Page):
    email = "[email protected]"

    await client.inboxes.register(email, is_testing=True)
    await client.inboxes.start_test(email, "e2e-signup")

    await page.goto("https://yourapp.com/signup")
    await page.fill("#email", email)
    await page.click("button[type='submit']")

    # Automatically waits for the email and extracts the code
    otp = await client.otp.wait_for(email)

    await page.fill("#otp", otp)
    await page.click("#verify")

    # Debugging: View exactly how long delivery took
    timeline = await client.inboxes.get_timeline(email, "e2e-signup")
    print("Delivery Timeline:", timeline)

๐Ÿ” Old vs New Mental Model

Old (Temp Mail) New (FreeCustom.Email)
receive emails test auth flows
read inbox debug flows
parse OTP manually auto extract + analyze
polling real-time events

๐Ÿ“Š Plans (Updated Meaning)

Plan What you get
Free basic inbox
Startup real-time emails
Growth OTP + debugging
Enterprise full observability

๐Ÿ”ฅ Most Important Methods (for devs)

  • await client.inboxes.start_test(email, test_id)
  • await client.otp.wait_for(email)
  • await client.inboxes.get_timeline(email, test_id)
  • await client.inboxes.get_insights(email)

About

Official Python SDK for FreeCustom.Email โ€” disposable inboxes, OTP extraction, real-time WebSocket delivery

www.freecustom.email/api/docs/sdk/python

Topics

disposable-emailemail-privacyfce-sdkprivacy-toolspypi-packagetemp-mail-apitemporary-email

Resources

Readme
MIT license
Activity
Custom properties

Stars

3 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 โ€” GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800ร—600. No cookies required.