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.
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.pdftemplateapi.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
- Email: support@pdftemplateapi.com
- Issues: GitHub Issues
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file templatefox-1.7.0.tar.gz.
File metadata
- Download URL: templatefox-1.7.0.tar.gz
- Upload date:
- Size: 42.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4f46d85658d427129b7a255db9699d75dcb61358c7b790d254339f68e549fca
|
|
| MD5 |
af6e1ed179e973abbf2a9692c06bdd64
|
|
| BLAKE2b-256 |
9a662acf14b54ded0c28730fea088f0c21cb6ae2a15fa7ed5f361989b1f00f72
|
Provenance
The following attestation bundles were made for templatefox-1.7.0.tar.gz:
Publisher:
publish.yml on TemplateFoxPDF/pythonsdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
templatefox-1.7.0.tar.gz -
Subject digest:
d4f46d85658d427129b7a255db9699d75dcb61358c7b790d254339f68e549fca - Sigstore transparency entry: 1227948208
- Sigstore integration time:
-
Permalink:
TemplateFoxPDF/pythonsdk@148133cb72a28bc8c628a44e597adc7976ef14c1 -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/TemplateFoxPDF
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@148133cb72a28bc8c628a44e597adc7976ef14c1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file templatefox-1.7.0-py3-none-any.whl.
File metadata
- Download URL: templatefox-1.7.0-py3-none-any.whl
- Upload date:
- Size: 71.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
985ad07829c0194f709544166c98292a2605c27f917e2e75a53373d0c0f5ef7d
|
|
| MD5 |
7384ba3792b9a9fc28224a3cbab35e95
|
|
| BLAKE2b-256 |
0ed38005a3425bcc358d6482babe816afcb99fd75f96b12c4a438aedb65fe6fe
|
Provenance
The following attestation bundles were made for templatefox-1.7.0-py3-none-any.whl:
Publisher:
publish.yml on TemplateFoxPDF/pythonsdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
templatefox-1.7.0-py3-none-any.whl -
Subject digest:
985ad07829c0194f709544166c98292a2605c27f917e2e75a53373d0c0f5ef7d - Sigstore transparency entry: 1227948212
- Sigstore integration time:
-
Permalink:
TemplateFoxPDF/pythonsdk@148133cb72a28bc8c628a44e597adc7976ef14c1 -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/TemplateFoxPDF
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@148133cb72a28bc8c628a44e597adc7976ef14c1 -
Trigger Event:
release
-
Statement type: