Plop Python SDK
The official Python SDK for Plop — receive and poll for emails in your tests and applications.
Installation
pip install plop-sdk
Quick Start
from plop_sdk import Plop
# Reads PLOP_API_KEY from environment if not provided
plop = Plop(api_key="plop_...")
# List mailboxes
mailboxes = plop.mailboxes.list()
# List messages
messages = plop.messages.list(mailbox="qa", tag="login", limit=10)
# Get a specific message
message = plop.messages.get("message-uuid")
# Get the latest message
latest = plop.messages.latest(mailbox="qa", tag="otp")
# Wait for an email (polls until match or timeout)
email = plop.messages.wait_for(
mailbox="qa",
tag="verification",
timeout=30,
interval=1.0,
)
Async Usage
from plop_sdk import AsyncPlop
async with AsyncPlop() as plop:
email = await plop.messages.wait_for(mailbox="qa", tag="login")
messages = await plop.messages.list(mailbox="qa")
Webhook Verification
from plop_sdk import Plop
plop = Plop()
is_valid = plop.webhooks.verify(
secret="whsec_...",
signature=request.headers["x-plop-signature"],
body=raw_body,
)
Error Handling
from plop_sdk import Plop, PlopError, PlopNotFoundError, PlopTimeoutError
plop = Plop()
try:
message = plop.messages.get("nonexistent-id")
except PlopNotFoundError:
print("Message not found")
except PlopError as e:
print(f"API error: {e.message} (status={e.status})")
Configuration
| Parameter | Environment Variable | Default |
|---|---|---|
api_key |
PLOP_API_KEY |
Required |
base_url |
PLOP_BASE_URL |
https://api.plop.email |
timeout |
- | 30.0 seconds |
License
MIT
Metadata
Release files for plop-sdk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plop_sdk-0.1.0.tar.gz | 12.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plop_sdk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.9 kB
Release files / plop_sdk-0.1.0.tar.gz
| Download URL | plop_sdk-0.1.0.tar.gz |
|---|---|
| Size | 12.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fd8d6c34fe5360c6537aaa9fe0c5c4559b50bb22cf4d2893e314436f967000a0
|
|
BLAKE2b-256 checksum How to use checksums |
5bf5dd757091a991ecbe752add63e4c382991e402dac565ec27eb5b976ae19f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 7, 2026.
Transparency logRelease files / plop_sdk-0.1.0-py3-none-any.whl
| Download URL | plop_sdk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
86d8dd3aea29306f0c53b13f75fdbd82f7d22778f4bf9da6337d6b457942db37
|
|
BLAKE2b-256 checksum How to use checksums |
596ae8e371a68b51fd2c1dccc42153d0a1eeecf7c36f0864e38538a9ddde3c01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 7, 2026.
Transparency log