Skip to main content

Getting Started with Python

Safe API Key Storage

In a production setup, do not store API Keys in the host's environment variables or in the source code.

Requirements​

Requires Python v3.8 or later

Getting Started​

First, install Opportify SDK via PyPI manager:

pip install opportify-sdk

Single Analysis​

Calling Email Insights​

from opportify_sdk import EmailInsights

# Initialize the wrapper with your API key
api_key = "<YOUR-API-KEY-HERE>"
email_insights = EmailInsights(api_key)

# Optional: Configure host, version, and debug mode
email_insights.set_version("v1")

# Define request parameters
params = {
"email": "<SOME-EMAIL-HERE>",
"enableAutoCorrection": True,
"enableAi": True
}

# Call the API
try:
result = email_insights.analyze(params)
print("Response:", result)
except Exception as e:
print(f"Error: {e}")

Calling IP Insights​


from opportify_sdk import IpInsights

# Initialize the wrapper with your API key
api_key = "<YOUR-API-KEY-HERE>"
ip_insights = IpInsights(api_key)

# Optional: Configure host, version, and debug mode
ip_insights.set_version("v1")

# Define request parameters
params = {
"ip": "<SOME-IP-HERE>",
"enableAi": True
}

# Call the API
try:
result = ip_insights.analyze(params)
print("Response:", result)
except Exception as e:
print(f"Error: {e}")

Batch Analysis​

For processing large volumes of emails or IP addresses, use the batch analysis methods:

Batch Email Analysis​

from opportify_sdk import EmailInsights

# Initialize the wrapper with your API key
api_key = "<YOUR-API-KEY-HERE>"
email_insights = EmailInsights(api_key)

# Define batch request parameters
batch_params = {
"emails": [
"user1@company.com",
"user2@domain.org",
"test@example.com"
],
"enableAutoCorrection": True,
"enableAi": True
}

# Start batch analysis
try:
batch_response = email_insights.batch_analyze(batch_params)
job_id = batch_response['job_id']
print(f"Batch job started: {job_id}")

# Check batch status
status = email_insights.get_batch_status(job_id)
print(f"Status: {status['status']}, Progress: {status['progress']}%")

# When completed, download URLs will be available
if status['status'] == 'COMPLETED':
download_urls = status['download_urls']
print(f"Results ready: {download_urls['csv']}")

except Exception as e:
print(f"Error: {e}")

Batch IP Analysis​

from opportify_sdk import IpInsights

# Initialize the wrapper with your API key
api_key = "<YOUR-API-KEY-HERE>"
ip_insights = IpInsights(api_key)

# Define batch request parameters
batch_params = {
"ips": [
"8.8.8.8",
"1.1.1.1",
"192.168.1.1"
],
"enableAi": True
}

# Start batch analysis
try:
batch_response = ip_insights.batch_analyze(batch_params)
job_id = batch_response['job_id']
print(f"Batch job started: {job_id}")

# Check batch status
status = ip_insights.get_batch_status(job_id)
print(f"Status: {status['status']}, Progress: {status['progress']}%")

# When completed, download URLs will be available
if status['status'] == 'COMPLETED':
download_urls = status['download_urls']
print(f"Results ready: {download_urls['csv']}")

except Exception as e:
print(f"Error: {e}")

Configuration​

Enable Debug Mode​

ip_insights.set_version("v1").set_debug_mode(True)
email_insights.set_version("v1").set_debug_mode(True)

Batch Status Polling​

For long-running batch jobs, poll the status periodically:

import time

def wait_for_batch_completion(client, job_id, max_wait=300):
"""Wait for batch job to complete with polling."""
start_time = time.time()

while time.time() - start_time < max_wait:
status = client.get_batch_status(job_id)

if status['status'] == 'COMPLETED':
return status
elif status['status'] == 'ERROR':
raise Exception(f"Batch job failed: {status.get('status_description')}")

print(f"Progress: {status.get('progress', 0)}%")
time.sleep(10) # Wait 10 seconds before next check

raise TimeoutError("Batch job did not complete within the timeout period")

# Usage
try:
batch_response = email_insights.batch_analyze(batch_params)
final_status = wait_for_batch_completion(email_insights, batch_response['job_id'])
print("Batch completed successfully!")
except Exception as e:
print(f"Error: {e}")