# Tripo P1 — API Reference Model ID: `model_tripo-p1-image-to-3d` --- ## Authentication - **API_KEY** and **API_SECRET** are found in your [Scenario Project Settings](https://app.scenario.com/team&tab=api_keys) under API Keys. - Set them as environment variables `SCENARIO_SDK_API_KEY` and `SCENARIO_SDK_API_SECRET` — both SDKs pick them up by default. - For raw HTTP (cURL), use Basic Auth: `Authorization: Basic base64(":")`. ### Install the SDK - JavaScript / TypeScript: `npm install @scenario-labs/sdk` - Python: `pip install scenario-sdk` --- ## Generate **Endpoint:** `POST https://api.cloud.scenario.com/v1/generate/custom/model_tripo-p1-image-to-3d` ### Parameters | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `image` | assetId | yes | - | Single image for image-to-model. | | `texture` | boolean | - | `true` | Enable texturing. Set to false for a model without textures. | | `textureQuality` | string | - | `standard` | Texture quality level. 'Fast' is the same resolution as standard and will use texture version v3.5. 'Detailed' gives HD quality textures. | | `textureVersion` | string | - | `` | Texture model, independent of the geometry model. Leave unset for Tripo's default (v3.0 for v3.x and the P series, v2.5 for v2.5). 'Fast' quality and delight will use v3.5. | | `delight` | boolean | - | `true` | Removes baked-in lighting and shadows from your reference image, so the model can be lit by your own scene. True by default. Turn it off to keep the original shading baked into the texture. That requires texture version v3.5, which will be used automatically. | | `textureAlignment` | string | - | `original_image` | Determines the prioritization of texture alignment in the 3D model. Original Image: prioritizes visual fidelity to the source image (may have minor 3D inconsistencies). Geometry: prioritizes 3D structural accuracy (may cause slight deviations from the original image appearance). | | `textureSeed` | number | - | - | Random seed for texture generation. Using the same seed will produce identical textures. | | `orientation` | string | - | `default` | Set to 'Align Image' to automatically rotate the model to align the original image. | | `enableImageAutofix` | boolean | - | `false` | When enabled, optimizes the input image to get better generation results. | | `pbr` | boolean | - | `true` | Enable PBR generation. Default value is True. If this option is set to True, texture parameters will be ignored. | | `faceLimit` | number | - | - | Maximum face count. Adaptive if unset. Must be between 48 and 20,000 if set. | | `autoSize` | boolean | - | `false` | Automatically scale the model to real-world dimensions, with the unit in meters. | | `seed` | number | - | - | Random seed for model generation. The seed controls the geometry generation process, ensuring identical models when the same seed is used. | ### Example Requests **cURL** ```bash curl -X POST "https://api.cloud.scenario.com/v1/generate/custom/model_tripo-p1-image-to-3d" \ -H "Authorization: Basic $(echo -n ':' | base64)" \ -H "Content-Type: application/json" \ --data-binary @- <<'EOF' { "image": "", "texture": true, "textureQuality": "standard", "textureVersion": "", "delight": true, "textureAlignment": "original_image", "orientation": "default", "enableImageAutofix": false, "pbr": true, "autoSize": false } EOF ``` **Python** ```python import os from scenario_sdk import Scenario client = Scenario( api_key=os.environ.get("SCENARIO_SDK_API_KEY"), api_secret=os.environ.get("SCENARIO_SDK_API_SECRET"), ) body = { "image": "", "texture": True, "textureQuality": "standard", "textureVersion": "", "delight": True, "textureAlignment": "original_image", "orientation": "default", "enableImageAutofix": False, "pbr": True, "autoSize": False } response = client.generate.run_model( model_id="model_tripo-p1-image-to-3d", body=body, ) print(response) ``` **JavaScript** ```javascript import Scenario from "@scenario-labs/sdk"; const client = new Scenario({ apiKey: process.env["SCENARIO_SDK_API_KEY"], apiSecret: process.env["SCENARIO_SDK_API_SECRET"], }); const body = { "image": "", "texture": true, "textureQuality": "standard", "textureVersion": "", "delight": true, "textureAlignment": "original_image", "orientation": "default", "enableImageAutofix": false, "pbr": true, "autoSize": false }; const response = await client.generate.runModel("model_tripo-p1-image-to-3d", { body }); console.info(response); ``` --- ## Retrieve Results After submitting a generation request, you receive a `jobId`. Poll the job until `job.status` is `"success"`. The generated asset IDs are in `job.metadata.assetIds`. **Endpoint:** `GET https://api.cloud.scenario.com/v1/jobs/{jobId}` ### Example Requests **cURL** ```bash curl -X GET "https://api.cloud.scenario.com/v1/jobs/" \ -H "Authorization: Basic $(echo -n ':' | base64)" ``` **Python** ```python job = client.jobs.retrieve(job_id="") print(job.status) print(job.metadata.asset_ids) ``` **JavaScript** ```javascript // Option 1 — wait on the response from runModel using the SDK helper const completed = await response.job.wait(); console.info(completed.status); console.info(completed.metadata?.assetIds); // Option 2 — retrieve a job by its ID const job = await client.jobs.retrieve(""); console.info(job.status); console.info(job.metadata?.assetIds); ``` **Example response:** ```json { "job": { "jobId": "job_abc123", "status": "success", "metadata": { "assetIds": [ "asset_abc123" ] } } } ``` > **Important:** Generated asset URLs are **temporary** and expire after a short period. Download and store any images you wish to keep before the URL expires. More info: [Content Delivery Network (CDN)](https://docs.scenario.com/get-started/documentation/content-delivery-network-cdn). --- *Generated by [Scenario](https://app.scenario.com)*