Dokümantasyona dön

Video Üretim API'si

API anahtarınızla Veo 3.1 metinden videoya ve görselden videoya görevleri oluşturun, sonucu görseller için kullandığınız aynı /api/status uç noktasından alın.

Nano AI API Temel URL: https://nanobnana.com

Kimlik doğrulama

Her istekte API anahtarınızı Bearer token olarak gönderin. Görev oluşturmak ve durumunu sorgulamak için aynı anahtarı kullanın. Anahtarları panelinizdeki API Keys sayfasında oluşturabilirsiniz.

http
Authorization: Bearer YOUR_API_KEY

Modeller ve krediler

model alanına aşağıdaki değerlerden birini yazın. Başka bir değer HTTP 400 ile reddedilir ve kredi düşülmez.

model değeriModelMetinden videoya (kredi)Görselden videoya (kredi)
veo3_fastVeo 3.1 Fast (varsayılan)2535
veo3Veo 3.1 Quality180180

veo3-fast, veo3_fast için takma ad olarak kabul edilir. model gönderilmezse veo3_fast kullanılır. image_urls en az bir URL içerdiğinde görselden videoya fiyatı uygulanır.

Video görevi oluşturma

İsteği doğrular, krediyi düşer ve bir task_id döndürür. Video eşzamansız üretilir: sonucu almak için /api/status'u sorgulayın veya callback_url ayarlayın.

İstek gövdesiJSON
prompt:string

Üretilecek videonun metin açıklaması.

model:isteğe bağlıstring

veo3_fast (takma ad veo3-fast) veya veo3. Başka bir değer HTTP 400 döndürür. Varsayılan değer veo3_fast.

image_urls:isteğe bağlıstring[]

Görselden videoya için herkese açık görsel URL'leri. 1 görselle video bu görselin etrafında oluşturulur. 2 görselle bunlar ilk ve son kare olur. imageUrls (camelCase) takma ad olarak da kabul edilir. İki alan birlikte gönderilirse image_urls kullanılır.

aspect_ratio:isteğe bağlıstring

16:9, 9:16 veya Auto. Auto videoyu yüklenen görsele göre kırpar. Varsayılan değer 16:9.

translation:isteğe bağlıboolean

true olduğunda prompt, üretimden önce İngilizceye çevrilir. Varsayılan değer true.

watermark:isteğe bağlıstring

Videoya eklenecek filigran metni.

callback_url:isteğe bağlıstring

Görev bittiğinde nihai sonucu içeren bir POST isteği alacak herkese açık URL.

Desteklenmeyen alanlar

duration, resolution ve tekil image_url bu API'nin parçası değildir ve yok sayılır. Video süresini model belirler. Görselleri image_urls dizisi olarak gönderin.

bash
curl -X POST "https://nanobnana.com/api/video/generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
    "model": "veo3_fast",
    "image_urls": ["https://example.com/first-frame.jpg"],
    "aspect_ratio": "16:9"
  }'
{
  "code": 200,
  "message": "success",
  "data": {
    "task_id": "veo24223f74e4f445ec9c4403b532cc328fbksv"
  }
}

Görev durumunu kontrol etme

Video görev kimlikleri veo ile başlar ve bksv ile biter. /api/status bunları otomatik tanır ve görev tamamlandığında video URL'sini döndürür.

Sorgu parametreleri
task_id:string

POST /api/video/generate tarafından döndürülen task_id.

model:isteğe bağlıstring

task_id veo…bksv biçiminde değilse video sorgusunu zorlamak için veo3 yazın.

bash
curl "https://nanobnana.com/api/status?task_id=veo24223f74e4f445ec9c4403b532cc328fbksv" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "code": 200,
  "message": "success",
  "data": {
    "task_id": "veo24223f74e4f445ec9c4403b532cc328fbksv",
    "request": {
      "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
      "model": "veo3_fast",
      "image_urls": [
        "https://example.com/first-frame.jpg"
      ],
      "aspect_ratio": "16:9"
    },
    "response": null,
    "status": "IN_PROGRESS",
    "status_code": 3,
    "status_text": "IN_PROGRESS",
    "consumed_credits": 35,
    "created_at": "2026-10-04 17:05:12",
    "model": "veo3"
  },
  "model": "veo3"
}

Durum değerleri

  • IN_PROGRESS · status_code: 3 — video hâlâ üretiliyor. Sorgulamaya devam edin.
  • COMPLETED · status_code: 1 — video hazır. response video URL'sini içerir.
  • FAILED · status_code: 2 — üretim başarısız oldu. error_message nedenini açıklar ve krediler otomatik olarak iade edilir.

Ücretlendirme ve iadeler

  • Krediler, görev oluşturulurken, üretim başlamadan önce düşülür.
  • Oluşturma isteği HTTP 200 döndürmezse görev oluşmaz ve düşülen krediler hemen iade edilir. Yanıt, kaç kredinin iade edildiğini belirtir.
  • Oluşturulan bir görev daha sonra FAILED olarak biterse kredileri otomatik iade edilir ve durum yanıtındaki consumed_credits 0 olur.

Sorgulama örneği

Video üretimi genellikle birkaç dakika sürer. status_code 3 olduğu sürece 10 saniyede bir sorgulayın, 1 veya 2 olduğunda durun.

javascript
async function waitForVideo(taskId) {
  while (true) {
    const res = await fetch(`https://nanobnana.com/api/status?task_id=${taskId}`, {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    const payload = await res.json();
    if (!res.ok) throw new Error(payload.message);

    const task = payload.data;
    if (task.status_code === 1) return task.response[0];
    if (task.status_code === 2) throw new Error(task.error_message || 'Video generation failed');

    await new Promise((resolve) => setTimeout(resolve, 10000));
  }
}

Callback

callback_url ayarlarsanız, görev tamamlandığında veya başarısız olduğunda bu JSON gövdesiyle bir POST isteği göndeririz. URL'ye internetten erişilebilmelidir.

{
  "code": 200,
  "message": "success",
  "data": {
    "request": {
      "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
      "model": "veo3_fast",
      "image_urls": [
        "https://example.com/first-frame.jpg"
      ],
      "aspect_ratio": "16:9"
    },
    "response": [
      "https://example.com/generated-video.mp4"
    ],
    "status": "COMPLETED",
    "created_at": "2026-10-04 17:05:12"
  }
}

Sık karşılaşılan hatalar

{
  "code": 400,
  "message": "prompt is required",
  "data": null
}