Skip to main content

PrintPal Logo

PrintPal Python Client

AI-Powered Image to 3D Model Generation for 3D Printing

PyPI version Python versions License

Website | API Docs | Get API Key | Buy Credits


The official Python client for the PrintPal 3D Generation API. Convert images and text into high-quality, print-ready 3D models using state-of-the-art AI technology.

Perfect for:

  • 3D Printing Businesses automating custom model creation
  • E-commerce Platforms offering personalized 3D printed products
  • Game Developers generating 3D assets from concept art
  • Product Designers rapidly prototyping from sketches
  • Makers and Creators bringing ideas to life
  • Manufacturing Companies streamlining CAD model generation

Why PrintPal?

  • Image to 3D in Seconds: Convert any image into a printable 3D model
  • Text to 3D: Describe what you want and get a 3D model
  • Print-Ready Formats: Export directly to STL, OBJ, GLB, PLY, or FBX
  • Multiple Quality Tiers: From quick previews to ultra-high resolution (1024 cubed)
  • Texture Support: Generate textured models for realistic renders
  • Simple API: Get started with just a few lines of code
  • Scalable: Process thousands of models programmatically

Installation

pip install printpal

Or install from source:

git clone https://github.com/printpal-io/printpal-python.git
cd printpal-python
pip install -e .

Quick Start

1. Get Your API Key

Sign up at printpal.io and get your API key from the API Keys dashboard.

2. Set Your API Key

Set your API key as an environment variable:

export PRINTPAL_API_KEY="pp_live_your_api_key_here"

Or pass it directly to the client:

from printpal import PrintPal

client = PrintPal(api_key="pp_live_your_api_key_here")

Note: You can also use PrintPalClient or printpal as aliases if you prefer.

3. Generate a 3D Model

from printpal import PrintPal

# Initialize client
client = PrintPal()

# Generate a 3D model from an image (simplest method)
output_path = client.generate_and_download(
    image_path="my_image.png",
    output_path="my_model.stl"
)

print(f"3D model saved to: {output_path}")

Features

  • Image to 3D model generation
  • Text to 3D model generation
  • Multiple quality levels (default, high, ultra, super, superplus)
  • Multiple output formats (STL, GLB, OBJ, PLY, FBX)
  • Texture support for high-resolution models
  • Async/polling-based workflow for long-running generations
  • Credit balance and usage tracking
  • Comprehensive error handling

Usage Examples

Basic Image to 3D

from printpal import PrintPal, Quality, Format

client = PrintPal()

# One-liner: generate and download
path = client.generate_and_download("image.png", "model.stl")

Step-by-Step Generation

For more control over the process:

from printpal import PrintPal, Quality, Format

client = PrintPal()

# Step 1: Submit generation request
result = client.generate_from_image(
    image_path="my_image.png",
    quality=Quality.DEFAULT,
    format=Format.STL,
)

print(f"Generation UID: {result.generation_uid}")
print(f"Estimated time: {result.estimated_time_seconds} seconds")

# Step 2: Wait for completion
status = client.wait_for_completion(result.generation_uid)

# Step 3: Download the model
if status.is_completed:
    path = client.download(result.generation_uid, "my_model.stl")
    print(f"Downloaded to: {path}")

High-Resolution Generation

Generate ultra-high-quality models with super resolution:

from printpal import PrintPal, Quality, Format

client = PrintPal()

# Super resolution (768 cubed) - geometry only
result = client.generate_from_image(
    image_path="my_image.png",
    quality=Quality.SUPER,
    format=Format.STL,
)

# Super+ resolution (1024 cubed) - highest quality
result = client.generate_from_image(
    image_path="my_image.png",
    quality=Quality.SUPERPLUS,
    format=Format.STL,
)

# With textures (GLB or OBJ only)
result = client.generate_from_image(
    image_path="my_image.png",
    quality=Quality.SUPERPLUS_TEXTURE,
    format=Format.GLB,
)

Text to 3D

Generate 3D models from text descriptions:

from printpal import PrintPal, Quality, Format

client = PrintPal()

result = client.generate_from_prompt(
    prompt="a cute robot toy",
    quality=Quality.HIGH,
    format=Format.GLB,
)

path = client.wait_and_download(result.generation_uid, "robot.glb")

Note: Text to 3D is only available for default, high, and ultra quality levels.

Check Credits

from printpal import PrintPal

client = PrintPal()

# Get credit balance
credits = client.get_credits()
print(f"Available credits: {credits.credits}")

# Get pricing info
pricing = client.get_pricing()
for name, tier in pricing.credits.items():
    print(f"{name}: {tier.cost} credits")

Async/Polling Workflow

For long-running generations or web applications:

from printpal import PrintPal, Quality

client = PrintPal()

# Submit and get the UID
result = client.generate_from_image("image.png", quality=Quality.SUPER)
uid = result.generation_uid

# Save UID somewhere (database, file, etc.)
print(f"Started generation: {uid}")

# Later, check status
status = client.get_status(uid)
if status.is_completed:
    client.download(uid, "model.stl")
elif status.is_processing:
    print("Still processing...")
elif status.is_failed:
    print("Generation failed")

With Progress Callback

from printpal import PrintPal

client = PrintPal()

def on_status(status):
    print(f"Status: {status.status}")

result = client.generate_from_image("image.png")
path = client.wait_and_download(
    result.generation_uid,
    output_path="model.stl",
    callback=on_status,
)

Context Manager

from printpal import PrintPal

with PrintPal() as client:
    credits = client.get_credits()
    print(f"Credits: {credits.credits}")

Quality Levels

Quality Resolution Credits Est. Time Texture Support
default 256 cubed 4 20 sec No
high 384 cubed 6 30 sec No
ultra 512 cubed 8 60 sec No
super 768 cubed 20 3 min No
super_texture 768 cubed 40 6 min Yes
superplus 1024 cubed 30 4 min No
superplus_texture 1024 cubed 50 12 min Yes

Output Formats

Format Extension Description Availability
STL .stl 3D printing format All quality levels
GLB .glb Binary glTF (web/games) All quality levels
OBJ .obj Wavefront OBJ All quality levels
PLY .ply Polygon file format default, high, ultra
FBX .fbx Autodesk FBX super, superplus only

Note: Texture generation (super_texture, superplus_texture) only supports GLB and OBJ formats. OBJ with texture returns as a ZIP archive containing the .obj, .mtl, and texture files.

Error Handling

from printpal import (
    PrintPal,
    AuthenticationError,
    InsufficientCreditsError,
    ValidationError,
    GenerationError,
    NotFoundError,
    RateLimitError,
)

client = PrintPal()

try:
    result = client.generate_from_image("image.png")
except AuthenticationError:
    print("Invalid API key")
except InsufficientCreditsError as e:
    print(f"Not enough credits. Need {e.credits_required}, have {e.credits_available}")
except ValidationError as e:
    print(f"Invalid parameters: {e}")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after} seconds")
except GenerationError as e:
    print(f"Generation failed: {e}")
except NotFoundError:
    print("Resource not found")

API Reference

PrintPal

The main client class for interacting with the PrintPal API.

Aliases: PrintPalClient, printpal (for those who prefer different naming conventions)

Constructor

PrintPal(
    api_key: str = None,      # API key (or set PRINTPAL_API_KEY env var)
    base_url: str = "https://printpal.io",  # API base URL
    timeout: int = 60,        # Request timeout in seconds
)

Methods

Method Description
get_credits() Get current credit balance
get_pricing() Get API pricing information
get_usage() Get API usage statistics
health_check() Check API health status
generate_from_image() Submit image for 3D generation
generate_from_prompt() Submit text prompt for 3D generation
get_status() Get generation status
get_download_url() Get presigned download URL
download() Download completed model
wait_for_completion() Poll until generation completes
wait_and_download() Wait and download in one call
generate_and_download() Generate and download in one call

Quality Enum

from printpal import Quality

Quality.DEFAULT        # 256 cubed, 4 credits
Quality.HIGH           # 384 cubed, 6 credits
Quality.ULTRA          # 512 cubed, 8 credits
Quality.SUPER          # 768 cubed, 20 credits
Quality.SUPER_TEXTURE  # 768 cubed + texture, 40 credits
Quality.SUPERPLUS      # 1024 cubed, 30 credits
Quality.SUPERPLUS_TEXTURE  # 1024 cubed + texture, 50 credits

Format Enum

from printpal import Format

Format.STL  # .stl
Format.GLB  # .glb
Format.OBJ  # .obj
Format.PLY  # .ply
Format.FBX  # .fbx (super/superplus only)

Example Scripts

The examples/ directory contains ready-to-run scripts:

Script Description
basic_generation.py Simple image to 3D
high_quality_generation.py Super resolution generation
batch_generation.py Process multiple images
text_to_3d.py Generate from text prompts
check_credits.py Check balance and pricing
async_generation.py Submit/check/download workflow

Run any example:

export PRINTPAL_API_KEY="pp_live_your_api_key_here"
python examples/basic_generation.py path/to/image.png

Rate Limits

  • 50 requests per minute per API key
  • 10,000 requests per day per account
  • 5 concurrent generations maximum

Use Cases

3D Printing Services

Automate custom 3D model creation for your print-on-demand business. Accept customer images and automatically generate print-ready STL files.

E-commerce Product Customization

Let customers upload images and receive custom 3D printed products. Perfect for personalized gifts, figurines, and merchandise.

Game Development and Digital Assets

Convert concept art and sketches into 3D game assets. Generate low-poly to high-poly models with or without textures.

Rapid Prototyping

Transform product sketches and designs into 3D prototypes. Accelerate your design-to-print workflow.

Educational and Maker Projects

Build applications that help students and makers bring their creative ideas into the physical world through 3D printing.

Manufacturing and CAD

Streamline CAD model generation from reference images. Integrate with your existing manufacturing pipeline.

Support

License

MIT License. See LICENSE for details.


PrintPal: AI 3D Model Generation API for 3D Printing
Image to 3D | Text to 3D | STL Generator | 3D Printing API | AI 3D Modeling

printpal.io

Metadata

Release files for printpal 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for printpal 1.0.4
File Size Uploaded
printpal-1.0.4.tar.gz 39.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for printpal 1.0.4
File Interpreter ABI Platform
printpal-1.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 57.9 kB

Release files / printpal-1.0.4.tar.gz

Download URL printpal-1.0.4.tar.gz
Size 39.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5d8df615ae83751c4d862ab4ce1368900dd6cb931cffb2c0a8427e819d6a07b3
BLAKE2b-256 checksum
How to use checksums
f12fae37e3b118faeeada2d4db28d433f4f0b5a36f6d059e9039220f82178947
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 5, 2026.

Transparency log

Release files / printpal-1.0.4-py3-none-any.whl

Download URL printpal-1.0.4-py3-none-any.whl
Size 18.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6a78f905e29b2d90965ad9fd630695814cc380bd1e6de0fbc3274f5a7204b06
BLAKE2b-256 checksum
How to use checksums
a3a297df50451d4da9f5664cc6c492088a129643293c335191f5dee8423319b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page