The Dub Python SDK provides a pythonic interface to interact with the Dub API from Python applications.
Installation
Install the SDK using pip:
Authentication
Initialize the SDK with your API key from the Dub Dashboard:
from dub import Dub
import os
dub = Dub(
token=os.environ.get("DUB_API_KEY")
)
Store your API key securely in environment variables. Never commit it to version control.
Quick Start
Create a Short Link
from dub import Dub
import os
dub = Dub(token=os.environ.get("DUB_API_KEY"))
link = dub.links.create(
url="https://example.com/long-url",
domain="your-domain.com",
key="custom-key"
)
print(link.short_link) # https://your-domain.com/custom-key
List Links
Retrieve links from your workspace with optional filtering:
links = dub.links.list(
search="example",
page_size=10
)
for link in links.result:
print(f"{link.short_link} -> {link.url}")
print(f"Clicks: {link.clicks}")
print(f"Created: {link.created_at}")
Update a Link
updated_link = dub.links.update(
link_id="clx1...",
url="https://example.com/new-destination"
)
Delete a Link
dub.links.delete(link_id="clx1...")
Domain Management
List Domains
domains = dub.domains.list()
for domain in domains.result:
print(domain.slug)
Get Domain Details
domain = dub.domains.get(slug="your-domain.com")
print(f"Domain: {domain.slug}")
print(f"Verified: {domain.verified}")
Customer Tracking
List Customers
Retrieve customers using their external ID:
customers = dub.customers.list(
external_id="user_123",
include_expanded_fields=True
)
customer = customers[0] if len(customers) > 0 else None
Conversion Tracking
Track Lead Conversions
dub.track.lead(
click_id=dub_id,
event_name="Sign Up",
customer_external_id="user_123",
customer_name="John Doe",
customer_email="[email protected]",
customer_avatar="https://example.com/avatar.jpg"
)
Track Sale Conversions
dub.track.sale(
click_id=dub_id,
event_name="Purchase",
customer_external_id="user_123",
amount=99.99,
currency="USD",
metadata={
"order_id": "order_456",
"product_id": "prod_789"
}
)
Error Handling
Handle exceptions when making API calls:
try:
link = dub.links.create(
url="https://example.com",
domain="your-domain.com"
)
except Exception as e:
print(f"Failed to create link: {e}")
Type Hints
The SDK supports Python type hints for better IDE integration:
from dub import Dub
from dub.models import Link, Domain
dub = Dub(token=os.environ.get("DUB_API_KEY"))
link: Link = dub.links.create(
url="https://example.com"
)
Next Steps
API Reference
Explore the complete API documentation
Client-Side Tracking
Add analytics tracking to your website