Skip to main content

Official Python SDK for Blendflare API - Search and download 3D assets for Blender

Project description

Blendflare Python SDK

PyPI version Python 3.8+ License: MIT

Official Python SDK for the Blendflare API - Search and download Blender projects with powerful filtering options.

[!IMPORTANT] API keys are intended for personal use only. Do not expose your API key in public apps, client-side code, or any environment where it could be accessed by others. Keep your key secure and private.

Features

  • 🔍 Advanced Search - Filter by category, style, features, and technical specs
  • 📦 Easy Downloads - Generate download URLs for any asset
  • 🎯 Type Safety - Full type hints and enum support for all parameters
  • 🔧 Blender Integration - Perfect for building Blender add-ons

Installation

pip install blendflare

Quick Start

from blendflare import BlendflareClient, Category, Feature, SortBy

# Initialize the client with your API key
client = BlendflareClient(api_key="sk_live_your_api_key")

# Search for rigged and animated sports cars
results = client.search_projects(
    q="sports car",
    category=Category.TRANSPORT,
    features=[Feature.RIGGED, Feature.ANIMATED],
    sort_by=SortBy.POPULAR,
    limit=20
)

# Display results
for project in results.items:
    # Project info
    print(f"Title: {project.project_info.title}")
    print(f"Tags: {', '.join(project.project_info.tags)}")
    
    # Slug
    print(f"Slug: {project.slug}")

    # Category and subcategory
    print(f"Category: {project.category}")
    print(f"Subcategory: {project.subcategory}")
    
    # Author
    print(f"Author: {project.author.nickname}")
    print(f"Avatar: {project.author.avatar_url}")
    
    # Stats
    print(f"Downloads: {project.stats.downloads_count}")
    print(f"Likes: {project.stats.likes_count}")
    print(f"Views: {project.stats.views_count}")
    
    # Technical specs
    print(f"Blender: {project.technical_specs.blender_version.full_version}")
    print(f"Render engine: {project.technical_specs.render_engine}")
    
    # File info
    print(f"File size: {project.file_info.file_size_mb:.2f} MB")
    print(f"Polygons: {project.file_info.poly_count}")
    
    # Legal
    print(f"License: {project.legal.license_type}")

# Download the first result
if results.items:
    download = client.download_project(
        project_slug=results.items[0].slug,
        nickname=results.items[0].author.nickname
    )
    print(f"Download URL: {download.data.download_url}")
    print(f"File size: {download.data.file_size_mb:.2f} MB")

Getting Your API Key

  1. Sign up at Blendflare
  2. Go to your API Keys settings
  3. Create a new API key
  4. Copy your key (format: sk_live_...)

Usage Guide

Basic Search

from blendflare import BlendflareClient, Category

client = BlendflareClient(api_key="sk_live_your_api_key")

# Simple keyword search
results = client.search_projects(q="dragon")

# Search with category
results = client.search_projects(
    q="chair",
    category=Category.DECORATION
)

# Search by tags
results = client.search_projects(
    tags=["vehicle", "red", "sports"]
)

Advanced Filtering

from blendflare import (
    BlendflareClient,
    Category,
    Subcategory,
    Style,
    Feature,
    RenderEngine,
    LicenseType,
    SortBy
)

client = BlendflareClient(api_key="sk_live_your_api_key")

results = client.search_projects(
    # Basic filters
    q="character",
    category=Category.CHARACTER,
    subcategory=Subcategory.ROBOT,
    style=Style.REALISTIC,
    
    # Technical specs
    render_engine=RenderEngine.CYCLES,
    blender_version="4.4",
    
    # Features
    features=[Feature.RIGGED, Feature.ANIMATED, Feature.GAME_READY],
    
    # Polygon count range
    min_poly_count=1000,
    max_poly_count=50000,
    
    # License
    license_type=LicenseType.CC0,
    
    # Popularity filters
    min_downloads=100,
    min_likes=50,
    
    # Sorting
    sort_by=SortBy.POPULAR,
    
    # Pagination
    page=1,
    limit=20
)

Working with Results

results = client.search_projects(q="tree", category=Category.NATURE)

# Access metadata
print(f"Total results: {results.pagination.total}")
print(f"Search time: {results.metadata.search_time_ms}ms")

# Iterate through projects
for project in results.items:
    # Project info
    print(f"Title: {project.project_info.title}")
    print(f"Tags: {', '.join(project.project_info.tags)}")
    
    # Author
    print(f"Author: {project.author.nickname}")
    print(f"Avatar: {project.author.avatar_url}")
    
    # Stats
    print(f"Downloads: {project.stats.downloads_count}")
    print(f"Likes: {project.stats.likes_count}")
    print(f"Views: {project.stats.views_count}")
    
    # Technical specs
    print(f"Blender: {project.technical_specs.blender_version.full_version}")
    print(f"Render engine: {project.technical_specs.render_engine}")
    
    # File info
    print(f"File size: {project.file_info.file_size_mb:.2f} MB")
    print(f"Polygons: {project.file_info.poly_count}")
    
    # Legal
    print(f"License: {project.legal.license_type}")

# Pagination
if results.pagination.has_next_page:
    next_page = client.search_projects(
        q="tree",
        category=Category.NATURE,
        page=results.pagination.page + 1
    )

Downloading Projects

# Download a specific project
download = client.download_project(
    project_slug="sign-decal-pack",
    nickname="example_nickname"
)

# Access download information
print(f"Download URL: {download.data.download_url}")
print(f"File name: {download.data.file_name}")
print(f"File size: {download.data.file_size_mb:.2f} MB")
print(f"Expires in: {download.data.expires_in} seconds")
print(f"Is owner: {download.data.is_owner}")

# Download the file
import requests

response = requests.get(download.data.download_url)
with open(download.data.file_name, "wb") as f:
    f.write(response.content)

Error Handling

from blendflare import (
    BlendflareClient,
    AuthenticationError,
    ValidationError,
    RateLimitError,
    NotFoundError
)

client = BlendflareClient(api_key="sk_live_your_api_key")

try:
    results = client.search_projects(q="car", category="invalid_category")
except AuthenticationError:
    print("Invalid API key")
except ValidationError as e:
    print(f"Validation error: {e}")
    print(f"Details: {e.details}")
except RateLimitError as e:
    print(f"Rate limit exceeded")
except NotFoundError:
    print("Resource not found")
except Exception as e:
    print(f"Unexpected error: {e}")

See the Types Reference for all available enums and their values.

API Reference

BlendflareClient

__init__(api_key, base_url=None, timeout=30)

Initialize the client.

Parameters:

  • api_key (str): Your Blendflare API key (format: sk_live_...)
  • base_url (str, optional): Custom API base URL
  • timeout (int, optional): Request timeout in seconds

search_projects(**kwargs) -> SearchResponse

Search for projects with advanced filters.

Parameters: See Usage Guide for all available parameters.

Returns: SearchResponse object containing:

  • message: Response message
  • metadata: Search metadata and statistics
  • items: List of Project objects
  • pagination: Pagination information

download_project(project_slug, nickname) -> DownloadResponse

Generate a download URL for a project.

Parameters:

  • project_slug (str): Project slug identifier
  • nickname (str): Author's nickname

Returns: DownloadResponse object containing:

  • message: Response message
  • data: DownloadData object with URL and file info

Rate Limits

API requests are rate-limited per API key. If you exceed the limit, you'll receive a RateLimitError.

Support

License

This project is licensed under the MIT License - see the LICENSE file 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

blendflare-1.0.2.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

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

blendflare-1.0.2-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file blendflare-1.0.2.tar.gz.

File metadata

  • Download URL: blendflare-1.0.2.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.8

File hashes

Hashes for blendflare-1.0.2.tar.gz
Algorithm Hash digest
SHA256 a9fc1b2b593b8c115a3603b019c45b889041f02fd093a94b4395ce8afc214009
MD5 b0fcec2024ea81a44fb08849a5e93e29
BLAKE2b-256 1bbf167c87c33b7d426bb609c7ef87df26d2a6706a4517e39bd3c63b1e6d97e6

See more details on using hashes here.

File details

Details for the file blendflare-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: blendflare-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.8

File hashes

Hashes for blendflare-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b9810a1592c5868f75f3add5aaa67cbda5158d3815a803a40052921e8a184ad3
MD5 d9a494d404b987fe52480e1f2d9534a2
BLAKE2b-256 851392a32e6638d784fb7b0f93cfe5482b52e58ca6d5211db8089666714adc58

See more details on using hashes here.

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