# Rodin API Documentation > LLM-optimized documentation for Rodin. Copy into your AI assistant for integration help. ## Overview **Model ID:** `rodin` **Type:** Image Generation **Credit Cost:** 8 credits per image Hyper3D Rodin v2.5. Turn up to 5 reference images into production-ready 3D models, with fast and standard quality modes. ## Endpoint ``` POST https://pixeldojo.ai/api/v1/models/rodin/run ``` ## Authentication All requests require an API key in the Authorization header: ``` Authorization: Bearer YOUR_API_KEY ``` Get your API key: https://pixeldojo.ai/api-platform/api-keys ## Input Parameters | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `mode` | enum | No | fast | fast = quick prototyping; standard = production quality. (Options: fast, standard) | | `image_urls` | array | Yes | - | 1–5 reference image URLs. Rodin is image-to-3D — at least one image is required. | | `prompt` | string | No | - | Optional text prompt to guide the generation. Auto-derived from the images when empty. | | `tier` | enum | No | Gen-2.5-Extreme-Low | Generation tier. Fast mode supports Minimum, Extreme-Low, Low only. (Options: Gen-2.5-Minimum, Gen-2.5-Extreme-Low, Gen-2.5-Low, Gen-2.5-Medium, Gen-2.5-High...) | | `high_pack` | boolean | No | - | HighPack add-on: 4K textures (and ~16x faces in Quad mode). Adds 16 credits. | | `material` | enum | No | All | Material output: PBR, Shaded, All, or None. (Options: PBR, Shaded, All, None) | | `geometry_file_format` | enum | No | glb | Mesh file format. glb renders in the in-app viewer. (Options: glb, usdz, fbx, obj, stl) | | `quality_mesh_option` | enum | No | Auto | Mesh density. Auto picks the advised mesh for the selected tier. (Options: Auto, 1K Quad, 4K Quad, 8K Quad, 18K Quad...) | | `texture_mode` | enum | No | - | Texture generation quality. Defaults per tier when unset. (Options: legacy, extreme-low, low, medium, high) | | `use_original_alpha` | boolean | No | - | Preserve input image transparency. | | `enable_creative_mode` | boolean | No | - | Enhanced generative robustness. | | `hd_texture` | boolean | No | - | Enhanced texture post-processing. | | `texture_delight` | boolean | No | - | Remove baked lighting/highlights from textures. | | `is_micro` | boolean | No | - | Finer micro-scale geometry (Gen-2.5-Extreme-High only). | | `tapose` | boolean | No | - | Generate in T-pose / A-pose for easier rigging. | | `seed` | integer | No | - | Seed (0–65535) for reproducible output. (min: 0, max: 65535) | ## Quick Start ### 1. Submit a Job ```bash curl -X POST "https://pixeldojo.ai/api/v1/models/rodin/run" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mode": "fast", "image_urls": [ "https://..." ] }' ``` **Response:** ```json { "jobId": "job_abc123...", "status": "pending", "statusUrl": "https://pixeldojo.ai/api/v1/jobs/job_abc123", "creditCost": 8, "creditsRemaining": 95 } ``` ### 2. Poll for Results ```bash curl "https://pixeldojo.ai/api/v1/jobs/job_abc123" \ -H "Authorization: Bearer YOUR_API_KEY" ``` **Completed Response:** ```json { "jobId": "job_abc123...", "status": "completed", "output": { "images": ["https://temp.pixeldojo.ai/..."] }, "creditCost": 8 } ``` ## Python Example ```python import requests import time API_KEY = "YOUR_API_KEY" # Submit job response = requests.post( "https://pixeldojo.ai/api/v1/models/rodin/run", headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" }, json={ "mode": "fast", "image_urls": ["https://..."] } ) job = response.json() job_id = job["jobId"] # Poll for completion while True: status_response = requests.get( f"https://pixeldojo.ai/api/v1/jobs/{'{job_id}'}", headers={"Authorization": f"Bearer {API_KEY}"} ) status = status_response.json() if status["status"] == "completed": print("Output:", status["output"]) break elif status["status"] == "failed": print("Error:", status.get("error")) break time.sleep(2) ``` ## JavaScript Example ```javascript const API_KEY = 'YOUR_API_KEY'; // Submit job const submitResponse = await fetch('https://pixeldojo.ai/api/v1/models/rodin/run', { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ "mode": "fast", "image_urls": [ "https://..." ] }) }); const job = await submitResponse.json(); // Poll for completion const pollForResult = async (jobId) => { while (true) { const statusResponse = await fetch(`https://pixeldojo.ai/api/v1/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${API_KEY}` } }); const status = await statusResponse.json(); if (status.status === 'completed') return status.output; if (status.status === 'failed') throw new Error(status.error); await new Promise(r => setTimeout(r, 2000)); } }; const output = await pollForResult(job.jobId); console.log('Output:', output); ``` ## Error Codes | Code | Status | Description | |------|--------|-------------| | `unauthorized` | 401 | Invalid or missing API key | | `insufficient_credits` | 402 | Not enough credits | | `invalid_request` | 400 | Invalid parameters | | `model_not_found` | 404 | Model ID not found | | `rate_limited` | 429 | Too many requests | | `internal_error` | 500 | Server error | ## Links - **Full Documentation:** https://pixeldojo.ai/api-platform/rodin - **API Keys:** https://pixeldojo.ai/api-platform/api-keys - **Buy Credits:** https://pixeldojo.ai/api-platform/buy-credits - **All Models:** https://pixeldojo.ai/api/v1/models - **OpenAPI Spec:** https://pixeldojo.ai/api/openapi