AI 3D Üretimi API Belgelendirmesi#
Temel URL:
https://api.ideal.house
Sürüm: v1
Güncellendi: 2026-03-06
📖 Genel Bakış#
AI 3D Üretimi API, görüntü veya istem temelli 3D üretim görevleri göndermenizi ve sonuçlarını asenkron olarak almanızı sağlar. İş akışı iki adımdan oluşur:
- Görev oluşturma — Girdinizi (görüntü URL veya metin istemi) gönderin ve bir
taskIdalın. - Sonuçları sorgulama — Görev durumunu sorgulamak ve üretilen çıktıyı almak için
taskIdkullanın.
🔐 Kimlik Doğrulama#
Tüm API istekleri, bir API Anahtarı kullanılarak kimlik doğrulanmalıdır.
İstek başlığına API Anahtarınızı ekleyin:
| Başlık | Değer |
|---|---|
APIKEY | your_api_key_here |
⚠️ API Anahtarınızı güvenli tutun. İstemci tarafı kodda veya herkese açık depolarda ifşa etmeyin.
⚡ Eşzamanlılık Sınırı#
🚦 Önemli: Bu API, hesap başına aynı anda yalnızca 1 eşzamanlı isteğe izin verir.
Birden fazla istek aynı anda gönderilirse, sonraki istekler kuyruğa alınır ve sırayla işlenir.
Kuyruktaki konumunuzu, görev sonucu yanıtındakiwaitNumberalanı üzerinden izleyebilirsiniz.
💰 Kredi Kesintisi#
[!WARNING] 🪙 Her görev, başarılı görev oluşturulması anında hesabınızdan 20 kredi düşer.
Krediler, görev oluşturulduğu anda düşülür. Görev nihai olarak başarısız olursa, düşülen krediler hesabınıza otomatik olarak iade edilir.
Yetersiz krediler9051hata kodunu döndürür. 📄 Kredi Kesintisi Referansı bölümüne bakın.
📌 API Uç Noktaları#
1. 3D Üretim Görevi Oluşturma#
Yeni bir AI 3D üretim görevi oluşturur ve sorgulama için benzersiz bir taskId döndürür.
Uç nokta
POST /api/v1/ai3d/generate
İstek Başlıkları
| Başlık | Zorunlu | Açıklama |
|---|---|---|
APIKEY | ✅ Evet | API kimlik doğrulama anahtarınız |
Content-Type | ✅ Evet | application/json |
İstek Gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
imageUrl | string | ⚠️ imageUrl veya prompt zorunludur | 3D üretmek için kaynak görüntünün URL |
prompt | string | ⚠️ imageUrl veya prompt zorunludur | Üretilecek 3D içeriğini açıklayan metin istemi |
💡 Not:
imageUrlvepromptbirbirini dışlar — her istekte bunlardan birini sağlayın.
🖼️ Görsel gereksinimleri: JPG/JPEG, PNG veya WebP kullanın. Her görsel en fazla 20 MB boyutunda olabilir; boyutları 128 × 128 px ile 5,000 × 5,000 px (dahil) arasında olmalıdır. Görsel URL, API sunucusu tarafından doğrudan erişilebilir olmalıdır.
📥 İstek Örnekleri#
cURL
# Using imageUrl
curl -X POST "https://api.ideal.house/api/v1/ai3d/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://example.com/room.jpg"
}'
# Using prompt
curl -X POST "https://api.ideal.house/api/v1/ai3d/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A modern minimalist living room with wooden floor"
}'
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class Ai3dApiExample {
private static final String BASE_URL = "https://api.ideal.house";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
String requestBody = """
{
"imageUrl": "https://example.com/room.jpg"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/ai3d/generate")
.addHeader("APIKEY", API_KEY)
.addHeader("Content-Type", "application/json")
.post(RequestBody.create(requestBody, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println("Response: " + response.body().string());
}
}
}
Python (requests)
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
headers = {
"APIKEY": API_KEY,
"Content-Type": "application/json"
}
# Using imageUrl
payload = {
"imageUrl": "https://example.com/room.jpg"
}
# Or using prompt
# payload = {
# "prompt": "A modern minimalist living room with wooden floor"
# }
response = requests.post(
f"{BASE_URL}/api/v1/ai3d/generate",
headers=headers,
json=payload
)
data = response.json()
task_id = data.get("data")
print(f"Task ID: {task_id}")
Node.js (axios)
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function createTask() {
try {
const response = await axios.post(
`${BASE_URL}/api/v1/ai3d/generate`,
{
imageUrl: 'https://example.com/room.jpg'
// Or use prompt instead:
// prompt: 'A modern minimalist living room with wooden floor',
},
{
headers: {
'APIKEY': API_KEY,
'Content-Type': 'application/json'
}
}
);
const taskId = response.data.data;
console.log('Task ID:', taskId);
return taskId;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
createTask();
📤 Yanıt#
Başarılı Yanıt
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| Alan | Tür | Açıklama |
|---|---|---|
code | integer | 0 başarıyı gösterir |
message | string | Yanıt mesajı |
data | long | Sonuçları sorgulamak için benzersiz görev kimliği |
2. Görev Sonucunu Al#
Daha önce oluşturulmuş bir görevin mevcut durumunu ve çıktısını alır.
Uç nokta
GET /api/v1/ai3d/result
İstek Başlıkları
| Başlık | Zorunlu | Açıklama |
|---|---|---|
APIKEY | ✅ Evet | API kimlik doğrulama anahtarınız |
Sorgu Parametreleri
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
taskId | long | ✅ Evet | Görev oluşturma uç noktasından döndürülen görev kimliği |
📥 İstek Örnekleri#
cURL
curl -X GET "https://api.ideal.house/api/v1/ai3d/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class Ai3dResultExample {
private static final String BASE_URL = "https://api.ideal.house";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
long taskId = 1234567890123456789L;
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/ai3d/result?taskId=" + taskId)
.addHeader("APIKEY", API_KEY)
.get()
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println("Response: " + response.body().string());
}
}
}
Python (requests)
import requests
import time
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
headers = {
"APIKEY": API_KEY
}
task_id = 1234567890123456789
# Poll until task is complete
while True:
response = requests.get(
f"{BASE_URL}/api/v1/ai3d/result",
headers=headers,
params={"taskId": task_id}
)
data = response.json()
result = data.get("data", {})
status = result.get("status")
print(f"Status: {status}, Progress: {result.get('percentage')}%, Queue: {result.get('waitNumber')}")
if status in ("Success", "Failed"):
break
time.sleep(3) # Poll every 3 seconds
if status == "Success":
print("Result URL:", result["output"]["resultUrl"])
else:
print("Task failed or terminated")
Node.js (axios)
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function pollResult(taskId) {
const headers = { 'APIKEY': API_KEY };
while (true) {
const response = await axios.get(
`${BASE_URL}/api/v1/ai3d/result`,
{
headers,
params: { taskId }
}
);
const result = response.data.data;
const { status, percentage, waitNumber } = result;
console.log(`Status: ${status} | Progress: ${percentage}% | Queue: ${waitNumber}`);
if (['Success', 'Failed'].includes(status)) {
if (status === 'Success') {
console.log('Result URL:', result.output.resultUrl);
} else {
console.log('Task ended with status:', status);
}
break;
}
// Wait 3 seconds before next poll
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollResult(1234567890123456789n);
📤 Yanıt#
Başarılı Yanıt (Görev Tamamlandı)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"imageUrl": "https://example.com/room.jpg"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/result_3d_model.zip",
"width": 1024,
"height": 1024
}
}
}
Yanıt (Görev İşleniyor / Sırada)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 2,
"percentage": 35,
"input": {
"imageUrl": "https://example.com/room.jpg"
},
"output": null
}
}
Yanıt (Görev Başarısız)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"imageUrl": "https://example.com/room.jpg"
},
"output": null
}
}
Yanıt Alanları
| Alan | Tür | Açıklama |
|---|---|---|
id | long | Görev benzersiz tanımlayıcısı |
status | string | Mevcut görev durumu (Görev Durumu bölümüne bakın) |
waitNumber | integer | Kuyrukta öndeki görev sayısı (0 şu anda işleniyor demektir) |
percentage | integer | Görev tamamlanma yüzdesi (0–100) |
input | object | Görevin orijinal girdi parametreleri |
input.imageUrl | string | Kaynak görüntü URL (verildiyse) |
input.prompt | string | Kaynak metin istemi (verildiyse) |
input.modelType | string | Kullanılan model türü |
output | object | Üretim sonucu (yalnızca status Success olduğunda kullanılabilir) |
output.resultUrl | string | Üretilen 3D model dosyasına URL |
output.width | integer | Piksel cinsinden çıktı genişliği |
output.height | integer | Piksel cinsinden çıktı yüksekliği |
📊 Görev Durumu#
| Durum | Açıklama |
|---|---|
Unprocessed | Görev oluşturuldu ancak henüz başlamadı |
Processing | Görev şu anda işleniyor |
Success | Görev başarıyla tamamlandı — çıktı kullanılabilir |
Failed | Görev bir hata nedeniyle başarısız oldu |
Her 3-5 saniyede sorgulayın. API Görev Sınırı bölümüne bakın.
❌ Hata Yanıtları#
Tüm hata yanıtları aynı JSON yapısını paylaşır:
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
Hata Kodu Referansı#
| Kod | Ad | Açıklama | Önerilen Eylem |
|---|---|---|---|
1001 | FAILED | İstek başarısız oldu (genel hata) | Ayrıntılı hata bilgileri için message alanını kontrol edin |
1003 | INTERNAL_ERROR | Dahili sunucu hatası | Kısa bir gecikme sonrası yeniden deneyin; devam ederse destek ekibiyle iletişime geçin |
1011 | PARAM_ERROR | İstek parametre hatası | Tüm zorunlu parametrelerin sağlandığını ve doğru biçimlendirildiğini doğrulayın |
5002 | API_KEY_INVALID | Geçersiz veya eksik API Anahtarı | APIKEY başlığının mevcut olduğundan ve değerinin doğru olduğundan emin olun |
9010 | SCAN_TEXT_ERROR | Metin ifadesi içerik incelemesinden geçemedi | Hassas veya yasaklı içeriği kaldırmak için ifadeyi değiştirin |
9038 | PROHIBITED_CONTENT | Üretilen çıktı görüntüsü yasaklı içerik barındırıyor | İfadeyi/stili/girdileri ayarlayın ve yeniden deneyin |
9036 | COVERT_3D_FAILED | Bu görüntü 3D üretimini desteklemiyor | Daha net yapıya ve derinliğe sahip farklı bir görüntü deneyin |
9051 | COINS_NOT_ENOUGH | Yetersiz jeton / kredi | Hesap kredilerinizi yükleyin ve yeniden deneyin |
Hata Yanıtı Örnekleri#
5002 — Geçersiz API Anahtarı
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
1011 — Parametre Hatası
{
"code": 1011,
"message": "Request parameter error: imageUrl is required",
"data": null
}
9036 — Görüntü 3D Üretimi İçin Desteklenmiyor
{
"code": 9036,
"message": "This image does not support 3D generation",
"data": null
}
9010 — Metin İçerik Denetimi Başarısız
{
"code": 9010,
"message": "Text prompt failed content review, contains prohibited content",
"data": null
}
9051 — Yetersiz Kredi
{
"code": 9051,
"message": "Insufficient coins",
"data": null
}
📄 Yaygın API hata kodlarının tam listesi için Hata Kodu Referansı bölümüne başvurun.