Skip to main content
Use a secret key client for contacts methods.
from mailrify import Mailrify

client = Mailrify("sk_your_secret_key")

List contacts (contacts.list)

Use cursor pagination for large lists:
page1 = client.contacts.list(
    limit=50,
    subscribed=True,
    search="john",
)

print(len(page1.contacts), page1.has_more, page1.cursor)
Fetch the next page with cursor:
if page1.has_more and page1.cursor:
    page2 = client.contacts.list(
        limit=50,
        cursor=page1.cursor,
    )

    print(len(page2.contacts))

Create a contact (contacts.create)

created = client.contacts.create(
    email="[email protected]",
    subscribed=True,
    data={"firstName": "John", "plan": "premium"},
)

print(created.id, created.meta.is_new if created.meta else None)

Get one contact (contacts.get)

contact = client.contacts.get(created.id)

print(contact.email, contact.subscribed)

Update a contact (contacts.update)

updated = client.contacts.update(
    created.id,
    subscribed=False,
    data={"plan": "pro"},
)

print(updated.subscribed, updated.data)

Count contacts (contacts.count)

subscribed_count = client.contacts.count(subscribed=True)
search_count = client.contacts.count(search="john")

print(subscribed_count, search_count)

Delete a contact (contacts.delete)

client.contacts.delete(created.id)

Async equivalents

from mailrify import AsyncMailrify


async def run() -> None:
    async with AsyncMailrify("sk_your_secret_key") as client:
        page = await client.contacts.list(limit=20)
        created = await client.contacts.create(email="[email protected]", data={"source": "sdk"})
        fetched = await client.contacts.get(created.id)
        updated = await client.contacts.update(fetched.id, subscribed=False)
        total = await client.contacts.count(subscribed=False)
        await client.contacts.delete(updated.id)
        print(total)
See full details in the Contacts API reference.