This document explains how the FastAPI documentation has been enhanced to provide comprehensive parameter documentation for the Hunyuan3D API server.
The API server now uses Pydantic models to automatically generate interactive documentation that includes:
- Parameter descriptions and types
- Default values and constraints
- Example requests and responses
- Organized endpoint groups
- Interactive testing interface
The API now uses structured Pydantic models instead of raw JSON requests:
class GenerationRequest(BaseModel):
"""Request model for 3D generation API"""
image: str = Field(
...,
description="Base64 encoded input image for 3D generation",
example="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
)
texture: bool = Field(
False,
description="Whether to generate textures for the 3D model"
)
seed: int = Field(
1234,
description="Random seed for reproducible generation",
ge=0,
le=2**32-1
)
# ... more parametersEach parameter includes:
- Description: What the parameter does
- Type: Data type (str, int, float, bool, etc.)
- Constraints: Min/max values, allowed values
- Default values: What happens if not provided
- Examples: Sample values for testing
Endpoints are organized into logical groups using tags:
generation: 3D model generation endpointsstatus: Task status and health check endpoints
The FastAPI app includes:
- Title and version
- Detailed description
- Contact information
- License information
- Feature overview
Generate a 3D model from an input image.
Parameters:
image(required): Base64 encoded input imageremove_background(optional): Auto-remove background (default: true)texture(optional): Generate textures (default: false)seed(optional): Random seed (default: 1234)octree_resolution(optional): Mesh resolution (default: 256)num_inference_steps(optional): Generation steps (default: 5)guidance_scale(optional): Generation guidance (default: 5.0)num_chunks(optional): Processing chunks (default: 8000)face_count(optional): Max faces for textures (default: 40000)type(optional): Output format (default: "glb")
Start asynchronous 3D generation task.
Parameters: Same as /generate
Returns: Task ID for status tracking
Check service health status.
Check task status and retrieve results.
-
Start the API server:
python api_server.py
-
Open your browser to:
- Swagger UI:
http://localhost:8081/docs - ReDoc:
http://localhost:8081/redoc
- Swagger UI:
- Try it out: Test endpoints directly from the browser
- Parameter validation: Automatic validation of input parameters
- Response examples: See expected response formats
- Error handling: Understand possible error responses
- Authentication: Configure if needed (currently not required)
import requests
import base64
# Load and encode image
with open("input_image.png", "rb") as f:
image_data = base64.b64encode(f.read()).decode()
# Prepare request
request_data = {
"image": image_data,
"texture": True,
"seed": 42,
"type": "glb"
}
# Send request
response = requests.post("http://localhost:8081/generate", json=request_data)
if response.status_code == 200:
# Save the generated 3D model
with open("output_model.glb", "wb") as f:
f.write(response.content)# Start async task
response = requests.post("http://localhost:8081/send", json=request_data)
task_id = response.json()["uid"]
# Check status
status_response = requests.get(f"http://localhost:8081/status/{task_id}")
status = status_response.json()
if status["status"] == "completed":
# Decode and save the model
model_data = base64.b64decode(status["model_base64"])
with open("async_model.glb", "wb") as f:
f.write(model_data)Use the provided test script to verify the API:
python test_api_docs.pyThis script demonstrates:
- Parameter validation
- Request formatting
- Response handling
- Error scenarios
- Self-documenting API: Parameters are clearly defined
- Type safety: Automatic validation prevents errors
- Interactive testing: Try endpoints without writing code
- Clear examples: See exactly what to send and expect
- Easy integration: Clear parameter documentation
- Error prevention: Validation catches issues early
- Quick testing: Interactive interface for exploration
- Comprehensive examples: Working code samples
fastapi: Web framework with automatic documentationpydantic: Data validation and serializationuvicorn: ASGI server
api_server.py # Main API server with Pydantic models
test_api_docs.py # Test script demonstrating usage
API_DOCUMENTATION.md # This documentation file
To add new parameters or endpoints:
-
Add to Pydantic model:
new_param: str = Field( "default_value", description="Parameter description" )
-
Update endpoint function:
@app.post("/new_endpoint", tags=["category"]) async def new_endpoint(request: RequestModel): """Endpoint description""" # Implementation
-
Documentation updates automatically!
- Import errors: Ensure all dependencies are installed
- Port conflicts: Change port in
api_server.pyif needed - Model loading: Check model paths and GPU availability
- Check the interactive documentation at
/docs - Review the test script for working examples
- Examine the Pydantic models for parameter details
The enhanced API documentation provides a professional, user-friendly interface for the Hunyuan3D API. Users can now understand all parameters, test endpoints interactively, and integrate the API more easily into their applications.