Developer API

Generate 3D models programmatically via the Trify3D REST API. Authenticate with API keys, run async jobs via Trigger.dev, and receive webhooks on completion.

Authentication

All /v1/* endpoints require a Bearer token in the Authorization header:

Authorization: Bearer trf_live_xxxxxxxx

Create keys from /api/api-keys using your session cookie. Keys are hashed (SHA-256) at rest; the plaintext is shown only once.

Endpoints

POST/api/v1/generations/image-to-3dscope: write

Start an image-to-3D generation job. Async — returns a taskId for polling or webhook delivery.

POST/api/v1/generations/text-to-3dscope: write

Start a text-prompt-to-3D generation. Send a prompt, get a taskId back.

POST/api/v1/generations/multiview-to-3dscope: write

Start a multiview (2+ images) to 3D generation. For objects captured from multiple angles.

GET/api/v1/generations/{taskId}scope: read

Poll the status of a generation task. Returns status, output URL, and credit usage.

GET/api/api-keysscope: session

List your API keys (requires session auth, not Bearer).

POST/api/api-keysscope: session

Create a new API key. Returns the plaintext key once.

POST/api/api-keys/{keyId}/revokescope: session

Revoke an API key. Irreversible.

Start a generation

curl -X POST https://trify3d.com/api/v1/generations/image-to-3d \
  -H "Authorization: Bearer trf_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tripo3d/h3.1",
    "mode": "quality",
    "imageUrl": "https://example.com/image.png",
    "webhookUrl": "https://yourapp.com/hooks/trify3d"
  }'

# Response 201
{
  "taskId": "uuid",
  "provider": "tripo3d",
  "status": "processing",
  "creditsUsed": 5,
  "creditsRemaining": 95
}

Webhooks

If you pass webhookUrl on task creation, we POST the result when the job finishes (success or failure). Retries: up to 3 times with backoff (1s, 5s, 15s).

POST {your webhookUrl}
Headers:
  X-Trify3D-Event: generation.completed
  X-Trify3D-Delivery: {taskId}
Body:
{
  "taskId": "uuid",
  "type": "image_to_3d",
  "status": "completed",
  "provider": "tripo3d",
  "outputModelUrl": "https://...",
  "thumbnailUrl": "https://...",
  "creditsUsed": 5,
  "errorCode": null,
  "timestamp": "2026-06-14T..."
}

Rate limits

Each API key: 600 requests / hour. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and on 429 a Retry-After header (seconds).

Async model

Jobs run on Trigger.dev with retries and 10-minute max duration. Poll GET /api/v1/generations/{taskId} or wait for the webhook — your choice.