Ƭrivumo Docs
Ƭrivumo Docs
HomeMCP Server
Node.jsPython
SDK's

Python

Use the Trivumo Python SDK to generate email addresses, wait for messages, and validate email workflows in your automated tests.


The Trivumo Python SDK makes it easy to test email-driven workflows such as account verification, password resets, magic links, invitations, and one-time passwords.

Installation

pip install trivumo

Usage

Create a Client

from trivumo import TrivumoClient

trivumo = TrivumoClient(
    apiKey="your_api_key",
    domain="sandbox.trivumo.com",
)

Generate an Email Address

email = trivumo.generate_email()

print(email)
# x7k2m9qp@sandbox.trivumo.com

With a custom username:

email = trivumo.generate_email("john")

print(email)
# john@sandbox.trivumo.com

Wait for an Email

message = trivumo.wait_for_message(
    {
        "to": email,
        "subject": "Verify your account",
    }
)

The returned message includes:

  • Metadata
  • HTML content
  • Plain text content
  • Extracted links
  • Extracted images
  • Verification codes and OTPs
  • Email headers

Trigger an Action and Wait for an Email

def trigger_action():
    page.click("[type=submit]")

message = trivumo.wait_for_message_after(
    trigger_action,
    {
        "to": email,
        "subject": "Verify your account",
    },
)

Only emails received after the action are considered.

Trigger an Async Action and Wait for an Email

async def trigger_action():
    await page.click("[type=submit]")

message = await trivumo.wait_for_message_after_async(
    trigger_action,
    {
        "to": email,
        "subject": "Verify your account",
    },
)

Only emails received after the action are considered.

Access Verification Codes

message = trivumo.wait_for_message(
    {
        "to": email,
    }
)

otp = (
    message.html.codes[0]
    if message.html and message.html.codes
    else None
)

print(otp)

Access Links

message = trivumo.wait_for_message(
    {
        "to": email,
    }
)

verification_link = (
    message.html.links[0].href
    if message.html and message.html.links
    else None
)

print(verification_link)

Get a Message

message = trivumo.get_message(
    reference_id
)

Search Messages

messages = trivumo.get_messages(
    {
        "to": email,
    }
)

Example:

messages = trivumo.get_messages(
    {
        "subject": "Password Reset",
        "receivedAfter": int(time.time() * 1000) - 60000,
    }
)

API Reference

TrivumoClient

Constructor

Creates a new client.

ParameterType
apiKeystr
domainstr
baseUrlstr
timeoutfloat
retriesint

See also: TrivumoClientOptions

trivumo = TrivumoClient(
    apiKey="your_api_key",
    domain="sandbox.trivumo.com",
)

generate_email

Generates a unique email address.

generate_email(username: str | None = None) -> str

wait_for_message

Waits until a matching email is received.

ParameterType
filtersMessageFilters
optionsWaitForMessageOptions

Returns: MessageDetails

message = trivumo.wait_for_message(
    {
        "to": email,
    }
)

wait_for_message_after

Executes an action and waits for a matching email received afterward.

ParameterType
actionCallable
filtersMessageFilters
optionsWaitForMessageOptions

Returns: MessageDetails

message = trivumo.wait_for_message_after(
    trigger_action,
    {
        "to": email,
    }
)

wait_for_message_after_async

Executes an async action and waits for a matching email received afterward.

ParameterType
actionCallable
filtersMessageFilters
optionsWaitForMessageOptions

Returns: MessageDetails

message = await trivumo.wait_for_message_after_async(
    trigger_action,
    {
        "to": email,
    }
)

get_message

Retrieves a message by its reference ID.

ParameterType
reference_idstr

Returns: MessageDetails

message = trivumo.get_message(
    reference_id
)

get_messages

Searches for messages matching the supplied filters.

ParameterType
filtersMessageFilters

Returns: PaginatedResponse[Message]

messages = trivumo.get_messages(
    {
        "subject": "Password Reset",
    }
)

Type Reference

TrivumoClientOptions

class TrivumoClientOptions(TypedDict):
    apiKey: str
    domain: str
    baseUrl: str
    timeout: float
    retries: int
PropertyTypeDescription
apiKeystrYour Trivumo API key.
domainstrInbox domain assigned to your team.
baseUrlstrOverride the API endpoint.
timeoutfloatHTTP request timeout in seconds.
retriesintRetry attempts for transient failures.

MessageFilters

class MessageFilters(TypedDict):
    subject: str
    fromEmail: str
    to: str
    receivedAfter: int
    page: int
PropertyTypeDescription
subjectstrFilter by email subject.
fromEmailstrFilter by sender address.
tostrFilter by recipient address.
receivedAfterintUnix timestamp in milliseconds.
pageintPage number for pagination.

WaitForMessageOptions

class WaitForMessageOptions(TypedDict):
    timeout: int
    pollInterval: int
PropertyTypeDescription
timeoutintMaximum time to wait before throwing an error.
pollIntervalintTime between polling attempts.

Message

@dataclass
class Message:
    id: str
    referenceId: str
    subject: str
    fromEmail: str
    to: str
    receivedAt: str
PropertyType
idstr
referenceIdstr
subjectstr
fromEmailstr
tostr
receivedAtstr

Header

@dataclass
class Header:
    key: str
    originalKey: str
    value: str
PropertyType
keystr
originalKeystr
valuestr

ExtractedLink

@dataclass
class ExtractedLink:
    href: str
    text: str | None
PropertyType
hrefstr
textstr

ExtractedImage

@dataclass
class ExtractedImage:
    alt: str | None
    url: str | None
    base64: str | None
PropertyType
altstr
urlstr
base64str

MessageBodyPart

@dataclass
class MessageBodyPart:
    body: str
    codes: list[str]
    links: list[ExtractedLink]
    images: list[ExtractedImage]
PropertyType
bodystr
codeslist[str]
linkslist[ExtractedLink]
imageslist[ExtractedImage]

MessageContent

@dataclass
class MessageContent:
    headers: list[Header]
    html: MessageBodyPart | None
    text: MessageBodyPart | None
PropertyType
headerslist[Header]
htmlMessageBodyPart
textMessageBodyPart

PaginatedResponse

@dataclass
class PaginatedResponse(TypedDict, Generic[T]):
	page: int
	totalPages: int
	data: list[T]
PropertyType
pageint
totalPagesint
datalist[T]

MessageDetails

@dataclass
class MessageDetails(Message, MessageContent):
    pass

Complete email including metadata, headers, HTML content, plain text content, extracted links, images, and verification codes.

Extends:

  • Message
  • MessageContent

Example:

message = trivumo.wait_for_message(
    {
        "to": email,
    }
)

print(message.subject)
print(message.html.codes[0] if message.html else None)
print(message.html.links[0].href if message.html and message.html.links else None)

Node.js

Use the Trivumo Node.js SDK to generate email addresses, wait for messages, and validate email workflows in your automated tests.

On this page

InstallationUsageCreate a ClientGenerate an Email AddressWait for an EmailTrigger an Action and Wait for an EmailTrigger an Async Action and Wait for an EmailAccess Verification CodesAccess LinksGet a MessageSearch MessagesAPI ReferenceTrivumoClientConstructorgenerate_emailwait_for_messagewait_for_message_afterwait_for_message_after_asyncget_messageget_messagesType ReferenceTrivumoClientOptionsMessageFiltersWaitForMessageOptionsMessageHeaderExtractedLinkExtractedImageMessageBodyPartMessageContentPaginatedResponseMessageDetails