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.