Trellis 2
API kılavuzu ve entegrasyon referansı: uç nokta, girdi alanları, fiyatlar, webhook ve hatalar.
İstek ve yanıt
https://kolayzeka.com/api/models/trellis-2/generateGövde: { "input": {…alanlar}, "category_id"?: sayı, "webhook_url"?: "https://…" }. Alanlar aşağıda; tanımlı olmayan bir alan 422 döner.
cURL · JSON
curl -X POST https://kolayzeka.com/api/models/trellis-2/generate \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"input": {
"resolution": 1024,
"ss_guidance_strength": 7.5,
"ss_guidance_rescale": 0.7,
"ss_guidance_interval_start": 0.6,
"ss_guidance_interval_end": 1,
"ss_sampling_steps": 12,
"ss_rescale_t": 5,
"shape_slat_guidance_strength": 7.5,
"shape_slat_guidance_rescale": 0.5,
"shape_slat_guidance_interval_start": 0.6,
"shape_slat_guidance_interval_end": 1,
"shape_slat_sampling_steps": 12,
"shape_slat_rescale_t": 3,
"tex_slat_guidance_strength": 1,
"tex_slat_guidance_rescale": 0,
"tex_slat_guidance_interval_start": 0.6,
"tex_slat_guidance_interval_end": 0.9,
"tex_slat_sampling_steps": 12,
"tex_slat_rescale_t": 3,
"decimation_target": 500000,
"texture_size": 2048,
"remesh": true,
"remesh_band": 1,
"remesh_project": 0,
"uv_unwrap_angle_threshold_deg": 90,
"uv_unwrap_refine_iterations": 0,
"uv_unwrap_global_iterations": 1,
"uv_unwrap_smooth_strength": 1,
"image_url": "https://cdn.example.com/input.jpg"
},
"webhook_url": "https://your-server.com/hooks/kolayzeka"
}'cURL · multipart (dosya yükleyerek)
curl -X POST https://kolayzeka.com/api/models/trellis-2/generate \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -F 'input[resolution]=1024' \ -F 'input[ss_guidance_strength]=7.5' \ -F 'input[ss_guidance_rescale]=0.7' \ -F 'input[ss_guidance_interval_start]=0.6' \ -F 'input[ss_guidance_interval_end]=1' \ -F 'input[ss_sampling_steps]=12' \ -F 'input[ss_rescale_t]=5' \ -F 'input[shape_slat_guidance_strength]=7.5' \ -F 'input[shape_slat_guidance_rescale]=0.5' \ -F 'input[shape_slat_guidance_interval_start]=0.6' \ -F 'input[shape_slat_guidance_interval_end]=1' \ -F 'input[shape_slat_sampling_steps]=12' \ -F 'input[shape_slat_rescale_t]=3' \ -F 'input[tex_slat_guidance_strength]=1' \ -F 'input[tex_slat_guidance_rescale]=0' \ -F 'input[tex_slat_guidance_interval_start]=0.6' \ -F 'input[tex_slat_guidance_interval_end]=0.9' \ -F 'input[tex_slat_sampling_steps]=12' \ -F 'input[tex_slat_rescale_t]=3' \ -F 'input[decimation_target]=500000' \ -F 'input[texture_size]=2048' \ -F 'input[remesh]=true' \ -F 'input[remesh_band]=1' \ -F 'input[remesh_project]=0' \ -F 'input[uv_unwrap_angle_threshold_deg]=90' \ -F 'input[uv_unwrap_refine_iterations]=0' \ -F 'input[uv_unwrap_global_iterations]=1' \ -F 'input[uv_unwrap_smooth_strength]=1' \ -F 'input[image_url]=@./image_url.jpg' \ -F 'webhook_url=https://your-server.com/hooks/kolayzeka'
202 ve status: "queued" döner; sonuç henüz yoktur. Sonucu GET https://kolayzeka.com/api/generations/{id} ile sorgulayın ya da webhook_url verin (aynı nesne gelir). Durumlar: queued → processing → completed | failed. estimated_seconds bu modun geçmiş ortalama süresidir (null olabilir).1 · POST yanıtı (202)
{
"data": {
"id": "9d1c…-uuid",
"model": "trellis-2",
"output_type": "3d",
"source": "api",
"status": "queued",
"input_data": {
"resolution": 1024,
"ss_guidance_strength": 7.5,
"ss_guidance_rescale": 0.7,
"ss_guidance_interval_start": 0.6,
"ss_guidance_interval_end": 1,
"ss_sampling_steps": 12,
"ss_rescale_t": 5,
"shape_slat_guidance_strength": 7.5,
"shape_slat_guidance_rescale": 0.5,
"shape_slat_guidance_interval_start": 0.6,
"shape_slat_guidance_interval_end": 1,
"shape_slat_sampling_steps": 12,
"shape_slat_rescale_t": 3,
"tex_slat_guidance_strength": 1,
"tex_slat_guidance_rescale": 0,
"tex_slat_guidance_interval_start": 0.6,
"tex_slat_guidance_interval_end": 0.9,
"tex_slat_sampling_steps": 12,
"tex_slat_rescale_t": 3,
"decimation_target": 500000,
"texture_size": 2048,
"remesh": true,
"remesh_band": 1,
"remesh_project": 0,
"uv_unwrap_angle_threshold_deg": 90,
"uv_unwrap_refine_iterations": 0,
"uv_unwrap_global_iterations": 1,
"uv_unwrap_smooth_strength": 1,
"image_url": "https://cdn.example.com/input.jpg"
},
"output_data": null,
"thumbnail_url": null,
"credit_cost": 313676,
"duration": null,
"estimated_seconds": 12,
"error_message": null,
"webhook_url": "https://your-server.com/hooks/kolayzeka",
"created_at": "2026-06-29T12:00:00.000000Z",
"updated_at": "2026-06-29T12:00:00.000000Z"
},
"success": true
}2 · Tamamlandı (GET /generations/{id} veya webhook)
{
"data": {
"id": "9d1c…-uuid",
"model": "trellis-2",
"output_type": "3d",
"source": "api",
"status": "completed",
"input_data": {
"resolution": 1024,
"ss_guidance_strength": 7.5,
"ss_guidance_rescale": 0.7,
"ss_guidance_interval_start": 0.6,
"ss_guidance_interval_end": 1,
"ss_sampling_steps": 12,
"ss_rescale_t": 5,
"shape_slat_guidance_strength": 7.5,
"shape_slat_guidance_rescale": 0.5,
"shape_slat_guidance_interval_start": 0.6,
"shape_slat_guidance_interval_end": 1,
"shape_slat_sampling_steps": 12,
"shape_slat_rescale_t": 3,
"tex_slat_guidance_strength": 1,
"tex_slat_guidance_rescale": 0,
"tex_slat_guidance_interval_start": 0.6,
"tex_slat_guidance_interval_end": 0.9,
"tex_slat_sampling_steps": 12,
"tex_slat_rescale_t": 3,
"decimation_target": 500000,
"texture_size": 2048,
"remesh": true,
"remesh_band": 1,
"remesh_project": 0,
"uv_unwrap_angle_threshold_deg": 90,
"uv_unwrap_refine_iterations": 0,
"uv_unwrap_global_iterations": 1,
"uv_unwrap_smooth_strength": 1,
"image_url": "https://cdn.example.com/input.jpg"
},
"output_data": {
"result": "https://<signed-url>/output.jpg"
},
"thumbnail_url": "https://<signed-url>/thumb.jpg",
"credit_cost": 313676,
"duration": 4.52,
"estimated_seconds": 12,
"error_message": null,
"webhook_url": "https://your-server.com/hooks/kolayzeka",
"created_at": "2026-06-29T12:00:00.000000Z",
"updated_at": "2026-06-29T12:00:05.000000Z"
},
"success": true
}3 · Başarısız
{
"data": {
"id": "9d1c…-uuid",
"model": "trellis-2",
"output_type": "3d",
"source": "api",
"status": "failed",
"input_data": {
"resolution": 1024,
"ss_guidance_strength": 7.5,
"ss_guidance_rescale": 0.7,
"ss_guidance_interval_start": 0.6,
"ss_guidance_interval_end": 1,
"ss_sampling_steps": 12,
"ss_rescale_t": 5,
"shape_slat_guidance_strength": 7.5,
"shape_slat_guidance_rescale": 0.5,
"shape_slat_guidance_interval_start": 0.6,
"shape_slat_guidance_interval_end": 1,
"shape_slat_sampling_steps": 12,
"shape_slat_rescale_t": 3,
"tex_slat_guidance_strength": 1,
"tex_slat_guidance_rescale": 0,
"tex_slat_guidance_interval_start": 0.6,
"tex_slat_guidance_interval_end": 0.9,
"tex_slat_sampling_steps": 12,
"tex_slat_rescale_t": 3,
"decimation_target": 500000,
"texture_size": 2048,
"remesh": true,
"remesh_band": 1,
"remesh_project": 0,
"uv_unwrap_angle_threshold_deg": 90,
"uv_unwrap_refine_iterations": 0,
"uv_unwrap_global_iterations": 1,
"uv_unwrap_smooth_strength": 1,
"image_url": "https://cdn.example.com/input.jpg"
},
"output_data": null,
"thumbnail_url": null,
"credit_cost": 0,
"duration": null,
"estimated_seconds": 12,
"error_message": "Sağlayıcı yoğun, lütfen tekrar deneyin.",
"webhook_url": "https://your-server.com/hooks/kolayzeka",
"created_at": "2026-06-29T12:00:00.000000Z",
"updated_at": "2026-06-29T12:00:00.000000Z"
},
"success": true
}- Sonuç
output_data.resultalanındadır (imzalı URL, süreli: kalıcı tutmak için kendi depolamanıza indirin). - Medya URL'leri imzalıdır ve süresi dolar; eski bir URL için işi tekrar
GETedin, taze URL gelir. - Geçmiş:
GET https://kolayzeka.com/api/generations(en yeni önce, sayfa başına 20,?page=).
Fiyat ve teklif
Fiyat kredi cinsindendir ve seçtiğiniz seçeneklere (kalite, boyut, süre, adet…) göre değişir. Varsayılan ayarlarla bu mod ≈ 313676 kredi.
| Seçenek | Tier anahtarı | Kredi (çalıştırma başına) |
|---|---|---|
| 512p | 512p | 224054 |
| 1024p | 1024p | 268865 |
| 1536p | 1536p | 313676 |
Fiyat çalıştırma başına verilir; birden fazla çıktı isterseniz adetle çarpılır. Daha düşük kalite / boyut daha ucuzdur.
https://kolayzeka.com/api/models/trellis-2/quoteÇalıştırmadan, tam bu girdinin fiyatı. Token gerekmez; girdiyi üretimdeki gibi doğrular.
cURL
curl -X POST https://kolayzeka.com/api/models/trellis-2/quote \
-H "Content-Type: application/json" \
-d '{"input":{"resolution":1024,"ss_guidance_strength":7.5,"ss_guidance_rescale":0.7,"ss_guidance_interval_start":0.6,"ss_guidance_interval_end":1,"ss_sampling_steps":12,"ss_rescale_t":5,"shape_slat_guidance_strength":7.5,"shape_slat_guidance_rescale":0.5,"shape_slat_guidance_interval_start":0.6,"shape_slat_guidance_interval_end":1,"shape_slat_sampling_steps":12,"shape_slat_rescale_t":3,"tex_slat_guidance_strength":1,"tex_slat_guidance_rescale":0,"tex_slat_guidance_interval_start":0.6,"tex_slat_guidance_interval_end":0.9,"tex_slat_sampling_steps":12,"tex_slat_rescale_t":3,"decimation_target":500000,"texture_size":2048,"remesh":true,"remesh_band":1,"remesh_project":0,"uv_unwrap_angle_threshold_deg":90,"uv_unwrap_refine_iterations":0,"uv_unwrap_global_iterations":1,"uv_unwrap_smooth_strength":1,"image_url":"https://cdn.example.com/input.jpg"}}'Yanıt
{
"success": true,
"data": {
"credits": 313676,
"basis": "per_generation",
"exact": true,
"mode": {
"category_id": null,
"label": "Mod"
}
}
}exact: false: fiyat çıktıya bağlı (ör. token, gerçek süre); teklif tipik değerle hesaplanır.- Kredi, istek kabul edilince teklif tutarı kadar ayrılır. İş bitince gerçek tutara göre fark düşülür ya da iade edilir; iş başarısız olursa tamamı iade edilir. Kesin tutar: sonuçtaki
credit_cost. - Bakiye:
GET https://kolayzeka.com/api/me→credit_balance. Yetmezse 402insufficient_credits.
Girdi alanları
input içine gönderilir. Tip etiketi gönderilecek JSON değeridir (string, integer, number, boolean, url, array<url>). Aynı liste makine-okunur olarak GET https://kolayzeka.com/api/ai-models/trellis-2 yanıtında.
seedSeed · Random seed for reproducibility
resolutionResolution · Output resolution; higher is slower but more detailed
Kabul edilen değerler:51210241536
Varsayılan: 1024 (gönderilmezse bu kullanılır)
ss_guidance_strengthSs Guidance Strength · How closely the initial 3D structure follows the input image. Higher values produce more faithful but potentially noisier results.
Varsayılan: 7.5 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 10
ss_guidance_rescaleSs Guidance Rescale · Dampens artifacts from high guidance in stage 1. Lower values allow stronger guidance effects, higher values stabilize the output.
Varsayılan: 0.7 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
ss_guidance_interval_startSs Guidance Interval Start · Fraction of the denoising process at which classifier-free guidance starts for stage 1 (sparse structure). Guidance is only applied between interval_start and interval_end; outside this window the model runs unguided. Lower values apply guidance earlier.
Varsayılan: 0.6 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
ss_guidance_interval_endSs Guidance Interval End · Fraction of the denoising process at which classifier-free guidance ends for stage 1 (sparse structure). Must be >= ss_guidance_interval_start.
Varsayılan: 1 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
ss_sampling_stepsSs Sampling Steps · Number of denoising steps for the initial structure. More steps = slower but potentially higher quality.
Varsayılan: 12 (gönderilmezse bu kullanılır)
Sınırlar: en az 1 · en çok 50
ss_rescale_tSs Rescale T · Controls noise schedule sharpness for structure generation. Higher values produce sharper transitions.
Varsayılan: 5 (gönderilmezse bu kullanılır)
Sınırlar: en az 1 · en çok 6
shape_slat_guidance_strengthShape Slat Guidance Strength · How closely the detailed geometry follows the input image. Higher values add more detail but may introduce noise.
Varsayılan: 7.5 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 10
shape_slat_guidance_rescaleShape Slat Guidance Rescale · Dampens artifacts from high guidance in the shape stage. Increase if you see noisy geometry.
Varsayılan: 0.5 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
shape_slat_guidance_interval_startShape Slat Guidance Interval Start · Fraction of the denoising process at which classifier-free guidance starts for stage 2 (shape refinement). Guidance is only applied between interval_start and interval_end.
Varsayılan: 0.6 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
shape_slat_guidance_interval_endShape Slat Guidance Interval End · Fraction of the denoising process at which classifier-free guidance ends for stage 2 (shape refinement). Must be >= shape_slat_guidance_interval_start.
Varsayılan: 1 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
shape_slat_sampling_stepsShape Slat Sampling Steps · Number of denoising steps for shape refinement. More steps = slower but potentially smoother geometry.
Varsayılan: 12 (gönderilmezse bu kullanılır)
Sınırlar: en az 1 · en çok 50
shape_slat_rescale_tShape Slat Rescale T · Controls noise schedule sharpness for shape refinement. Higher values produce sharper geometric details.
Varsayılan: 3 (gönderilmezse bu kullanılır)
Sınırlar: en az 1 · en çok 6
tex_slat_guidance_strengthTex Slat Guidance Strength · How closely the texture follows the input image colors. Higher values produce more vivid but potentially oversaturated textures.
Varsayılan: 1 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 10
tex_slat_guidance_rescaleTex Slat Guidance Rescale · Dampens artifacts from high guidance in the texture stage. Increase if textures look noisy or have color banding.
Varsayılan: 0 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
tex_slat_guidance_interval_startTex Slat Guidance Interval Start · Fraction of the denoising process at which classifier-free guidance starts for stage 3 (texture). Guidance is only applied between interval_start and interval_end.
Varsayılan: 0.6 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
tex_slat_guidance_interval_endTex Slat Guidance Interval End · Fraction of the denoising process at which classifier-free guidance ends for stage 3 (texture). Must be >= tex_slat_guidance_interval_start.
Varsayılan: 0.9 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
tex_slat_sampling_stepsTex Slat Sampling Steps · Number of denoising steps for texture generation. More steps = slower but potentially cleaner textures.
Varsayılan: 12 (gönderilmezse bu kullanılır)
Sınırlar: en az 1 · en çok 50
tex_slat_rescale_tTex Slat Rescale T · Controls noise schedule sharpness for texture generation. Higher values produce sharper texture details.
Varsayılan: 3 (gönderilmezse bu kullanılır)
Sınırlar: en az 1 · en çok 6
decimation_targetDecimation Target · Target number of vertices in the final mesh. Lower values produce smaller files but less detail. 500k is good for most uses, reduce to 20k-50k for web/mobile.
Varsayılan: 500000 (gönderilmezse bu kullanılır)
Sınırlar: en az 5000 · en çok 2000000
texture_sizeTexture Size · Resolution of the texture image baked onto the mesh. Higher values capture finer surface details but produce larger files.
Kabul edilen değerler:102420484096
Varsayılan: 2048 (gönderilmezse bu kullanılır)
remeshRemesh · Rebuild the mesh topology for cleaner triangles. Slower but usually produces better results for downstream use (animation, 3D printing, etc).
Varsayılan: true (gönderilmezse bu kullanılır)
remesh_bandRemesh Band · Controls how far remeshing can move vertices from the original surface. Higher values allow more smoothing but may lose fine details.
Varsayılan: 1 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 4
remesh_projectRemesh Project · How much to project remeshed vertices back onto the original surface. 0 = no projection (smoother), 1 = full projection (preserves detail).
Varsayılan: 0 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 1
uv_unwrap_angle_threshold_degUv Unwrap Angle Threshold Deg · Maximum angle (in degrees) between adjacent face normals allowed within a single UV chart. Lower values produce more charts with less distortion; higher values produce fewer, larger charts with potentially more stretching.
Varsayılan: 90 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 180
uv_unwrap_refine_iterationsUv Unwrap Refine Iterations · Number of local refinement passes during UV chart computation. Higher values produce cleaner chart boundaries at the cost of additional UV-unwrap time.
Varsayılan: 0 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 10
uv_unwrap_global_iterationsUv Unwrap Global Iterations · Number of global clustering passes during UV chart computation. More passes produce more balanced charts.
Varsayılan: 1 (gönderilmezse bu kullanılır)
Sınırlar: en az 1 · en çok 10
uv_unwrap_smooth_strengthUv Unwrap Smooth Strength · Smoothing strength applied to UV chart boundaries. Higher values reduce visible seams but may introduce UV distortion.
Varsayılan: 1 (gönderilmezse bu kullanılır)
Sınırlar: en az 0 · en çok 10
image_urlImage Url · URL of the input image to convert to 3D
JSON'da herkese açık bir https URL gönderin, ya da dosyayı multipart ile yükleyin: -F 'input[image_url]=@./dosya.jpg'
Kimlik doğrulama
Her istekte Authorization: Bearer YOUR_API_TOKEN. Token'ı Profil sayfasında oluşturun. Katalog ve teklif (/ai-models, /quote) token istemez. Ayrıntılar: geliştirici rehberi.
Webhook
İsteğe bir webhook_url (https) ekleyin; iş bitince oraya imzalı bir POST gelir. Gövde { event, success, data }: data, durum endpoint'inin döndüğü nesnenin aynısıdır. Sorgulamaya gerek kalmaz; uzun işler (video, çok adımlı uygulamalar) için önerilir.
Gelen başlıklar
X-KolayZeka-Event: generation.completed // veya generation.failed
X-KolayZeka-Signature: sha256=<hex>
User-Agent: KolayZeka-Webhook/1.0
İmza = ham gövdenin, hesabınızın webhook imzalama anahtarı ile HMAC-SHA256'sı. Anahtarı Profil sayfasında oluşturun (bir kez gösterilir). Anahtar yoksa webhook gönderilmez.
Doğrulama · Node.js
import crypto from 'node:crypto';
// rawBody: the request body exactly as received (before JSON.parse).
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.KOLAYZEKA_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
const given = req.headers['x-kolayzeka-signature'] ?? '';
if (given.length !== expected.length ||
!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(given))) {
return res.status(401).end();
}Doğrulama · PHP / Laravel
$expected = 'sha256='.hash_hmac('sha256', $request->getContent(), config('services.kolayzeka.webhook_secret'));
abort_unless(hash_equals($expected, (string) $request->header('X-KolayZeka-Signature')), 401);- 2xx dönün. Diğer yanıtlar ve ağ hataları 30 sn arayla en çok 5 kez yeniden denenir.
- Aynı iş için birden fazla gelebilir:
data.idile tekilleştirin. - Özel / iç ağ / bulut-metadata adresleri reddedilir (422 invalid_webhook_url).
Hatalar
Her hata aynı şekildedir: { success: false, code, error, … }. Kodunuzu code'a göre yazın; error insan için mesajdır.
| HTTP | code | Ne zaman |
|---|---|---|
400 | invalid_mode | Modelin şu an çalıştırılabilir bir modu yok (geçici; başka model deneyin). |
401 | unauthenticated | Bearer token yok, geçersiz ya da iptal edilmiş. |
402 | insufficient_credits | Bakiye yetmiyor. Yanıtta balance (bakiye) ve required (gereken) var. |
403 | forbidden | Bu kaynağa erişim yetkiniz yok. |
404 | not_found | Model / uygulama / iş yok, aktif değil ya da size ait değil. |
405 | method_not_allowed | Endpoint bu HTTP metodunu kabul etmiyor. |
422 | validation_failed | Girdi şemaya uymuyor. errors alanı: alan → mesajlar. |
422 | invalid_webhook_url | webhook_url https değil, çözümlenmiyor ya da özel / iç ağ adresi. |
429 | rate_limited | Hız sınırı aşıldı. retry_after saniye sonra tekrar deneyin. |
500 | server_error | Beklenmeyen hata. Tekrar denemeden önce listeden (GET /api/generations) işin oluşup oluşmadığına bakın. |
402 örneği
{
"success": false,
"code": "insufficient_credits",
"error": "Yetersiz kredi. Bakiye: 40, Gerekli: 55",
"balance": 40,
"required": 55
}422 örneği
{
"success": false,
"code": "validation_failed",
"error": "Doğrulama başarısız oldu.",
"errors": {
"quality": [
"`quality` alanı şunlardan biri olmalıdır: low, medium, high."
]
}
}