A production REST API that converts a single photo into a 3D mesh model using an Apache 2.0 licensed open-source reconstruction model. One HTTP call, one 3D file. The open source photogrammetry API delivers GLB or OBJ output at $0.010 per model — half the pay-as-you-go rate of Meshy. 5,000 free trial credits (7-day trial), no credit card required.
Upload a JPEG, PNG, or WebP photo and receive a fully textured 3D mesh. The API reconstructs depth, geometry, and surface texture from a single image — no multi-angle capture or special hardware required. The underlying reconstruction model is released under the Apache 2.0 open-source license; PixelAPI hosts it as a managed inference API so you get production reliability without managing GPU infrastructure.
https://api.pixelapi.dev/v1/3d/generategeneration_id immediatelyGET /v1/3d/status/{id} until status=completedoutput_urlSign up, copy your key from the dashboard, and POST your product image. The endpoint returns a generation id; poll until status=completed, then download your 3D model file.
curl -X POST https://api.pixelapi.dev/v1/3d/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@product.jpg" \
-F "format=glb" \
-F "texture_size=1024"
# Response: {"generation_id": "uuid", "status": "queued", "credits_used": 10}
# Poll until completed
curl https://api.pixelapi.dev/v1/3d/status/UUID \
-H "Authorization: Bearer YOUR_API_KEY"
# Response: {"status": "completed", "output_url": "https://...", "files": {...}}
pip install pixelapi
---
from pixelapi import PixelAPI
client = PixelAPI(api_key="YOUR_API_KEY")
result = client.image_to_3d(
image="product.jpg",
format="glb", # "glb", "obj", or "all"
texture_size=1024 # 512, 1024, or 2048
)
result.save("product.glb") # downloads GLB to disk
npm install pixelapi
---
import { PixelAPI } from "pixelapi";
const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });
const result = await client.imageTo3d({
image: "./product.jpg",
format: "glb",
textureSize: 1024,
});
await result.save("product.glb"); // downloads GLB to disk
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;
$client = new Client(getenv("PIXELAPI_KEY"));
$result = $client->imageTo3d([
"image" => "product.jpg",
"format" => "glb",
"texture_size" => 1024,
]);
file_put_contents("product.glb", $result->getBody());
gem install pixelapi
---
require "pixelapi"
client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])
result = client.image_to_3d(
image: "product.jpg",
format: "glb",
texture_size: 1024
)
File.binwrite("product.glb", result.body)
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"
client := pixelapi.New("YOUR_API_KEY")
result, err := client.ImageTo3D(pixelapi.ImageTo3DParams{
Image: "product.jpg",
Format: "glb",
TextureSize: 1024,
})
if err != nil { panic(err) }
result.Save("product.glb")
| Provider | Free tier | Per-model cost | Open source model | Output formats |
|---|---|---|---|---|
| PixelAPI | 5,000 credits (7-day trial), no card | $0.010 | ✓ Apache 2.0 | GLB · OBJ · all |
| Meshy | 100 credits/mo (subscription) | $0.020 (20 credits × $0.001) | Proprietary | GLB · OBJ · FBX · USDZ |
| Tripo3D | Limited free tier | see tripo3d.ai/pricing | Proprietary | GLB · OBJ · FBX |
| Rodin (Hyper3D) | Subscription credits | see hyper3d.ai/pricing | Proprietary | GLB · OBJ · FBX · STL |
| CSM | Free tier (limited) | see 3d.csm.ai | Proprietary | GLB · OBJ |
Meshy pricing verified from docs.meshy.ai/en/api/pricing October 2026. PixelAPI per-model price is set at exactly half the cheapest verified rival rate per our pricing rule. Rival prices listed as "see pricing" were not independently verifiable at time of publish — check their pages directly.
A single self-contained file with geometry, materials, and texture baked in. Loads directly into <model-viewer>, Three.js, Babylon.js, Unity, Unreal, Blender, and Apple AR Quick Look without extra steps.
Classic mesh format for DCC pipelines. Pass format=obj to receive an .obj and its .mtl material file. Compatible with every 3D modelling and rendering tool released in the last 20 years.
Pass format=all to receive GLB and OBJ in a single call. The files object in the response contains keys glb and obj, each with a signed download URL.
Choose texture_size=512 for fast AR thumbnails, 1024 (default) for product pages, or 2048 for high-detail configurators. All textures are UV-unwrapped and baked from your input photo.
The open source photogrammetry API fits into these production workflows. Each links to a setup guide:
Automate per-SKU 3D model creation from product catalog photos. Feed GLB assets into Shopify 3D media or BigCommerce AR.
Remove the product background first for sharper geometry reconstruction, then pass the transparent PNG to the 3D endpoint.
Generate 3D assets, render from any angle, then use PixelAPI's ad-creative endpoint to composite into campaign imagery.
Upscale low-resolution product photos to 4× before sending to the 3D API — more detail in, more detail out.
Generate GLB assets from concept art or product renders for rapid prototyping in Unity or Unreal Engine projects.
Feed GLB models into <model-viewer> for web AR, or into AR Quick Look on iOS, to let shoppers place products in their space.
Auto-generate 3D models from product photos on upload via webhook, then attach them as Shopify 3D media.
Bulk 3D asset creation for BigCommerce product catalog pages with AR viewer support.
WordPress plugin pattern for auto-generating 3D GLB assets from WooCommerce product images.
No-code automation: trigger 3D generation from Google Sheets, Airtable, or any webhook in Make scenarios.
Server-side 3D generation in Next.js API routes with model-viewer rendering on the frontend.
Embed 3D product viewers in Webflow CMS collection pages via the <model-viewer> custom embed.
PixelAPI is half Meshy's pay-as-you-go rate ($0.010 vs $0.020/model). Meshy offers more output formats (FBX, USDZ) but charges more per generation and uses a proprietary model.
Tripo3D has a polished web UI; PixelAPI is pure REST API with open-source foundations and predictable per-model pricing.
Rodin (Hyper3D) targets high-fidelity asset studios. PixelAPI targets developer pipelines with simple per-call billing and SDK support.
Common Sense Machines focuses on multi-view reconstruction. PixelAPI reconstructs from a single image with transparent per-call pricing.
20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale — with 3, 10, 20, and 50 concurrent jobs respectively. Exceeding the limit returns HTTP 429 with a Retry-After header. For 3D generation specifically, each job can take 30–90 seconds; the concurrent-jobs limit matters more than the per-minute rate. Recommended: submit jobs in batches matching your concurrent-jobs allowance and poll each one asynchronously.
# Python SDK — async batch with auto-retry on 429
from pixelapi import PixelAPI
import asyncio
client = PixelAPI(api_key="...", max_retries=4)
async def process(path):
return await client.image_to_3d_async(image=path, format="glb")
results = asyncio.run(asyncio.gather(*[
process(f"product_{i}.jpg") for i in range(10)
]))
Failures return HTTP 5xx with an error_message field. Credits are auto-refunded for any failed generation — you never pay for a broken mesh. The SDK raises a PixelAPIError with the same detail.
A photogrammetry API accepts a photograph as input and returns a 3D mesh model (GLB or OBJ) reconstructed from that image. It uses AI-driven depth estimation and geometry reconstruction to infer 3D structure from a single 2D photo — no multi-view camera rig required. POST your image to the endpoint, poll for completion, and download the 3D file.
PixelAPI's image-to-3D pipeline is built on an Apache 2.0 licensed open-source 3D reconstruction model. The underlying model weights and architecture are publicly available. PixelAPI wraps that model in a production REST API with authentication, credit billing, rate limiting, and a hosted compute layer — so developers get production reliability without managing inference infrastructure themselves.
POST your image (JPG, PNG, or WebP, up to 50 MB) to https://api.pixelapi.dev/v1/3d/generate with your API key in the Authorization: Bearer header. Optionally pass format=glb (default), format=obj, or format=all, plus texture_size=512, 1024, or 2048. The endpoint returns a generation_id. Poll GET /v1/3d/status/{id} until status=completed, then download from output_url. See the Quick Start section above for code in 6 languages.
$0.010 per 3D model — 10 credits at $0.001 per credit. New accounts get 5,000 free trial credits (7-day trial) with no credit card required, enough for 500 test generations on real product data. After the trial, credits are available in prepaid bundles from $10 (10,000 credits). This is half the pay-as-you-go rate of Meshy ($0.020/model).
GLB (binary glTF) is the default — a single self-contained file that loads directly into Three.js, Babylon.js, <model-viewer>, Unity, Unreal Engine, Blender, and AR Quick Look. OBJ + MTL is also supported for DCC pipelines. Pass format=all to receive both GLB and OBJ in one call from the same output_url response.
Average generation time is 30–90 seconds depending on input image size and requested texture resolution. There are no cold-start delays — capacity is kept warm 24/7. Use the polling endpoint GET /v1/3d/status/{id} to check progress; the Python and Node SDKs handle polling automatically with configurable poll intervals.
JPEG, PNG, and WebP are all accepted. Maximum file size is 50 MB. For best mesh quality, submit a clean product photo with good lighting, a plain or transparent background, and the subject fully in frame. A background-removed PNG (using PixelAPI's remove-background endpoint) typically improves 3D reconstruction accuracy by removing background geometry noise.
Yes — pip install pixelapi. The SDK handles authentication, multipart upload, polling, and retry-on-429 automatically. Official SDKs are also available for Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), and Go (go get github.com/pixelapi/pixelapi-go). The SDK returns the local file path after downloading the 3D model.
512×512 is fast and suitable for real-time AR overlays and product thumbnails. 1024×1024 (default) is the best balance for ecommerce product pages and game asset previews. 2048×2048 gives the sharpest texture detail for close-up product configurators or high-quality renders — but takes longer to generate. All options are the same price.
20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale — with 3, 10, 20, and 50 concurrent jobs respectively. Exceeding the limit returns HTTP 429 with a Retry-After header. Higher limits for batch processing: email support@pixelapi.dev with your expected volume.
Yes. The GLB output loads directly into <model-viewer> for web AR and into Apple's AR Quick Look and Google's Scene Viewer for mobile AR. For Shopify stores, the integration guide at ai-3d-models-shopify.html shows how to auto-generate 3D assets from product photos on upload and attach them as Shopify 3D media.
Failed generations are detected automatically and credits are refunded in full — you never pay for a broken or empty mesh. The job status endpoint returns status=failed with an error_message field; the SDK raises a PixelAPIError with the same detail so your error handler can log or retry accordingly.