Skip to main content

Official TemplateFox Python SDK - Generate PDFs from HTML templates

Project description

TemplateFox Python SDK

Official Python SDK for TemplateFox - Generate PDFs from HTML templates via API.

PyPI version License: MIT

Installation

pip install templatefox

Or with poetry:

poetry add templatefox

Quick Start

from templatefox import ApiClient, Configuration
from templatefox.api import PDFApi
from templatefox.models import CreatePdfRequest

# Initialize the client
config = Configuration()
config.api_key['ApiKeyAuth'] = 'your-api-key'

with ApiClient(config) as client:
    api = PDFApi(client)

    # Generate a PDF
    response = api.create_pdf(
        CreatePdfRequest(
            template_id='YOUR_TEMPLATE_ID',
            data={
                'name': 'John Doe',
                'invoice_number': 'INV-001',
                'total_amount': 150.00,
            }
        )
    )

    print(f'PDF URL: {response.url}')
    print(f'Credits remaining: {response.credits_remaining}')

Features

  • Template-based PDF generation - Create templates with dynamic variables, generate PDFs with your data
  • Multiple export options - Get a signed URL (default) or raw binary PDF
  • S3 integration - Upload generated PDFs directly to your own S3-compatible storage
  • Type hints - Full type annotations for IDE support

API Methods

PDF Generation

from templatefox.models import CreatePdfRequest

# Generate PDF and get URL
response = api.create_pdf(
    CreatePdfRequest(
        template_id='TEMPLATE_ID',
        data={'name': 'John Doe'},
        export_type='url',       # 'url' or 'binary'
        expiration=86400,        # URL expiration in seconds (default: 24h)
        filename='invoice-001'   # Custom filename
    )
)

Templates

from templatefox.api import TemplatesApi

templates_api = TemplatesApi(client)

# List all templates
templates = templates_api.list_templates()
for template in templates.templates:
    print(f'{template.id}: {template.name}')

# Get template fields
fields = templates_api.get_template_fields(template_id='TEMPLATE_ID')
for field in fields:
    print(f'{field.key}: {field.type} (required: {field.required})')

Account

from templatefox.api import AccountApi

account_api = AccountApi(client)

# Get account info
account = account_api.get_account()
print(f'Credits: {account.credits}')
print(f'Email: {account.email}')

# List transactions
transactions = account_api.list_transactions(limit=100, offset=0)
for tx in transactions.transactions:
    print(f'{tx.transaction_type}: {tx.credits} credits')

S3 Integration

from templatefox.api import IntegrationsApi
from templatefox.models import S3ConfigRequest

integrations_api = IntegrationsApi(client)

# Save S3 configuration
integrations_api.save_s3_config(
    S3ConfigRequest(
        endpoint_url='https://s3.amazonaws.com',
        access_key_id='AKIAIOSFODNN7EXAMPLE',
        secret_access_key='your-secret-key',
        bucket_name='my-pdf-bucket',
        default_prefix='generated/pdfs/'
    )
)

# Test connection
test = integrations_api.test_s3_connection()
print(f'Connection: {"OK" if test.success else "Failed"}')

Configuration

from templatefox import Configuration

config = Configuration(
    host='https://api.templatefox.com',  # Default API URL
)
config.api_key['ApiKeyAuth'] = 'your-api-key'

# Or use environment variable
import os
config.api_key['ApiKeyAuth'] = os.environ.get('TEMPLATEFOX_API_KEY')

Error Handling

from templatefox.exceptions import ApiException

try:
    response = api.create_pdf(CreatePdfRequest(...))
except ApiException as e:
    if e.status == 402:
        print('Insufficient credits')
    elif e.status == 403:
        print('Access denied - check your API key')
    elif e.status == 404:
        print('Template not found')
    else:
        print(f'Error: {e.reason}')

Async Support

import asyncio
from templatefox import ApiClient, Configuration
from templatefox.api import PDFApi
from templatefox.models import CreatePdfRequest

async def generate_pdfs():
    config = Configuration()
    config.api_key['ApiKeyAuth'] = 'your-api-key'

    async with ApiClient(config) as client:
        api = PDFApi(client)
        # Use async methods
        response = await api.create_pdf(
            CreatePdfRequest(template_id='...', data={...})
        )

asyncio.run(generate_pdfs())

Documentation

Support

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

templatefox-1.9.3.tar.gz (46.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

templatefox-1.9.3-py3-none-any.whl (79.0 kB view details)

Uploaded Python 3

File details

Details for the file templatefox-1.9.3.tar.gz.

File metadata

  • Download URL: templatefox-1.9.3.tar.gz
  • Upload date:
  • Size: 46.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for templatefox-1.9.3.tar.gz
Algorithm Hash digest
SHA256 107b4063dc3d2d493020262cd9f5888e80723d7600c91e85bbe5abb282f2f3aa
MD5 3ecd124361f41feed3c0e8bace956d18
BLAKE2b-256 b94728a64f083f160fe6e87435839f36055861b5d0f4faadd6818db95b6a179c

See more details on using hashes here.

Provenance

The following attestation bundles were made for templatefox-1.9.3.tar.gz:

Publisher: publish.yml on TemplateFoxPDF/pythonsdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file templatefox-1.9.3-py3-none-any.whl.

File metadata

  • Download URL: templatefox-1.9.3-py3-none-any.whl
  • Upload date:
  • Size: 79.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for templatefox-1.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2e2ba9bd30005f8e3357bdaa18a4bc1a36388e5701fb0246b6da1533bc81bb71
MD5 68d03df9bdc0ef475903a1b40aa011c3
BLAKE2b-256 9cf80f1dce37b51130987db46844e4e58961575ba620747f41aaba8ee3c57be6

See more details on using hashes here.

Provenance

The following attestation bundles were made for templatefox-1.9.3-py3-none-any.whl:

Publisher: publish.yml on TemplateFoxPDF/pythonsdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page