The official Python SDK for the Buena.ai API provides a convenient way to integrate Buena.ai’s lead generation and LinkedIn automation features into your Python applications.

🔄 Auto-Generated: Generated with OpenAPI Generator and automatically updated via GitHub Actions.

📦 Installation

Install the SDK using pip:

pip install buena-sdk

🚀 Quick Start

import buena_sdk
from buena_sdk.rest import ApiException
from buena_sdk.api.default_api import DefaultApi

# Initialize the client
configuration = buena_sdk.Configuration(
    host="https://api.buena.ai/api/v2"
)
configuration.api_key['ApiKeyAuth'] = 'your-api-key'

# Create API client
with buena_sdk.ApiClient(configuration) as api_client:
    api_instance = DefaultApi(api_client)

    try:
        # List leads
        leads = api_instance.list_leads()
        print(leads)

        # Create a new lead
        lead_request = buena_sdk.CreateLeadRequest(
            first_name="John",
            last_name="Doe",
            email="john@example.com",
            company="Example Corp"
        )
        new_lead = api_instance.create_lead(lead_request)
        print(f"Created lead: {new_lead}")

    except ApiException as e:
        print(f"Exception when calling API: {e}")

🔧 Configuration

import buena_sdk

# Basic configuration
configuration = buena_sdk.Configuration(
    host='https://api.buena.ai/api/v2',  # API base URL
)

# Set API key
configuration.api_key['ApiKeyAuth'] = 'your-api-key'

# Optional: Configure timeouts and retries
configuration.connection_pool_maxsize = 10
configuration.proxy = None  # Set proxy if needed
configuration.verify_ssl = True  # SSL verification
configuration.ssl_ca_cert = None  # Custom CA certificate

📋 Available Operations

Leads Management

  • api_instance.list_leads() - List all leads with optional filtering
  • api_instance.create_lead(create_lead_request) - Create a new lead
  • api_instance.get_lead(lead_id) - Get a specific lead
  • api_instance.update_lead(lead_id, update_lead_request) - Update an existing lead
  • api_instance.delete_lead(lead_id) - Delete a lead

API Keys Management

  • api_instance.list_api_keys() - List all API keys
  • api_instance.create_api_key(create_api_key_request) - Create a new API key

Health Check

  • api_instance.health_check() - Check API status

🔗 Repository & Advanced Usage

For complete documentation, examples, and source code:

📁 Python SDK Repository

Access the full SDK source code, advanced examples, and detailed documentation.

💡 Features

Type Hints - Full type annotations for better IDE support
Async Support - Optional async/await patterns with asyncio
Error Handling - Comprehensive exception handling
Pagination - Built-in pagination support for large datasets
Auto Updates - Automatically updated from OpenAPI spec via GitHub Actions
Production Ready - Battle-tested OpenAPI Generator with robust HTTP client

🔄 Async Support

The SDK supports async/await patterns using the async client:

import asyncio
import buena_sdk
from buena_sdk.api.default_api import DefaultApi
from buena_sdk.rest import ApiException

async def main():
    configuration = buena_sdk.Configuration(
        host="https://api.buena.ai/api/v2"
    )
    configuration.api_key['ApiKeyAuth'] = 'your-api-key'

    async with buena_sdk.ApiClient(configuration) as api_client:
        api_instance = DefaultApi(api_client)

        try:
            # List leads asynchronously
            leads = await api_instance.list_leads()
            print(leads)

            # Create lead asynchronously
            lead_request = buena_sdk.CreateLeadRequest(
                first_name="Jane",
                last_name="Smith",
                email="jane@example.com"
            )
            new_lead = await api_instance.create_lead(lead_request)
            print(f"Created lead: {new_lead}")

        except ApiException as e:
            print(f"Exception when calling API: {e}")

# Run async function
asyncio.run(main())

🛠️ Error Handling

from buena_sdk.rest import ApiException

try:
    leads = api_instance.list_leads()
except ApiException as e:
    print(f"Exception when calling DefaultApi->list_leads: {e}")

    # Handle specific error codes
    if e.status == 401:
        print('Invalid API key - check your authentication')
    elif e.status == 429:
        print('Rate limit exceeded - please retry later')
    elif e.status == 500:
        print('Server error - please contact support')
    else:
        print(f'API error {e.status}: {e.reason}')

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

📄 Working with Models

import buena_sdk

# Create a lead object
lead_request = buena_sdk.CreateLeadRequest(
    first_name="John",
    last_name="Doe",
    email="john@example.com",
    company="Example Corp",
    phone="+1234567890",
    linkedin_url="https://linkedin.com/in/johndoe"
)

# Access lead properties
print(f"Creating lead: {lead_request.first_name} {lead_request.last_name}")
print(f"Email: {lead_request.email}")

🆘 Support