Skip to content

Authentication ​

Before you start, please generate an API key by visiting the API key page.

We use the HTTP Bearer token as our authentication method. For all endpoints, include this header:

Authorization: Bearer YOUR_TRIPO_API_KEY

Once you've generated an API key, store it somewhere in a secure location.

Fastest path (30 seconds) ​

  1. Submit a task with POST /v2/openapi/task.
  2. Get task_id from the response.
  3. Poll GET /v2/openapi/task/{task_id} until status becomes success.
  4. Read outputs from data.output.

Task lifecycle ​

Task lifecycle

Try the first task with your key ​

Once you’ve generated your API key, you can try to trigger your first 3D model generation request:

python
import requests
import json

url = "https://api.tripo3d.ai/v2/openapi/task"

payload = json.dumps({
  "type": "text_to_model",
  "prompt": "A dachshund standing on a stool.",
})
headers = {
  "Content-Type": "application/json",
  "Authorization": "Bearer YOUR_TRIPO_API_KEY",
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.json()["data"]["task_id"])

Or try our fantastic image generation request for flux.1 kontext pro:

python
import requests
import json

url = "https://api.tripo3d.ai/v2/openapi/task"

payload = json.dumps({
  "type": "generate_image",
  "prompt": "A dachshund standing on a stool.",
})
headers = {
  "Content-Type": "application/json",
  "Authorization": "Bearer YOUR_TRIPO_API_KEY",
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.json()["data"]["task_id"])

Then you can query the final result with your_task_id:

python
import requests
import time

url = "https://api.tripo3d.ai/v2/openapi/task/07764597-9c93-4eb9-92b6-4ea96a8c7d1a"

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_TRIPO_API_KEY",
}

poll_interval_seconds = 2

while True:
    response = requests.get(url, headers=headers)
    data = response.json().get("data", {})
    status = data.get("status")

    if status == "success":
        print(data.get("output"))
        break

    print(f"Current status: {status}")
    time.sleep(poll_interval_seconds)

Using Python SDK ​

We also provide an official Python SDK to simplify integration with the Tripo3D API.

Installation ​

shell
pip install tripo3d

Example ​

python
import asyncio
from tripo3d import TaskStatus, TripoClient


async def main():
    async with TripoClient(api_key="YOUR_API_KEY") as client:
        task_id = await client.text_to_model(
            prompt="a small cat",
            negative_prompt="low quality, blurry",
        )
        print(f"Task ID: {task_id}")

        task = await client.wait_for_task(task_id, verbose=True)
        if task.status == TaskStatus.SUCCESS:
            files = await client.download_task_models(task, "./output")
            for model_type, path in files.items():
                print(f"Downloaded {model_type}: {path}")


asyncio.run(main())

Note

  • The SDK simplifies authentication, task submission, polling, and downloading.
  • Supports both synchronous and asynchronous workflows.
  • For full usage details and examples (mesh editing, multiview generation, stylization, etc.), refer to the GitHub repository: VAST-AI-Research/tripo-python-sdk.
Recommended product design

You’re all set now. Please refer to the task type for detailed documentation.