DeepSeek Vision and Grok Imagine models are now live on CometAPI →
guide/Riset CometAPI

Cara Menghubungkan Beberapa Model AI ke n8n dengan Satu Kunci CometAPI

Bangun alur kerja low-code n8n yang mengarahkan tugas spreadsheet ke beberapa penyedia AI melalui satu kunci CometAPI, melakukan polling tugas video, dan menyimpan setiap hasil.

CometAPI
AnnaTim riset model AI dan API
Diperbarui Aug 25, 2026 11 menit baca
Cara Menghubungkan Beberapa Model AI ke n8n dengan Satu Kunci CometAPI
Gunakan pola ini

Lakukan API call pertama.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

Bagaimana Menghubungkan Banyak Model AI ke n8n dengan Satu API?

Menghubungkan model AI satu penyedia demi satu bisa bekerja untuk prototipe, namun menjadi rapuh saat penggunaan meningkat. Setiap penyedia membawa kredensial, endpoint, format permintaan, batas laju, penagihan, dan struktur respons yang terpisah. Di n8n, hal itu sering menciptakan node HTTP yang terduplikasi dan cabang spesifik penyedia, sehingga menambahkan model atau mengubah jalur fallback berarti mengedit beberapa bagian dari workflow.

n8n dan CometAPI menyelesaikan lapisan masalah yang berbeda. n8n mengontrol kapan sebuah job berjalan, memvalidasi input, merutekan tugas sinkron dan asinkron, mencoba ulang kegagalan, dan menyimpan hasil. CometAPI memusatkan akses model di balik satu API key dan satu URL dasar. Bersama-sama, mereka menjaga perubahan penyedia tetap di luar lapisan orkestrasi: Anda dapat mengganti ID model sambil mempertahankan antrean, polling, penyimpanan, dan logika pemantauan yang sama.

Kombinasi ini sangat berguna untuk job campuran gambar dan video yang datang dari spreadsheet atau alat internal. Workflow tetap visual dan dapat diaudit di n8n, sementara kredensial, ketersediaan model, dan biaya penggunaan lebih mudah dikelola melalui satu lapisan API.

Cara paling mudah untuk mengintegrasikan banyak penyedia AI ke satu aplikasi adalah memisahkan orkestrasi dari akses model. Biarkan n8n menangani pemicu, percabangan, retry, dan penyimpanan, sementara CometAPI memberi setiap cabang satu API key dan satu URL dasar. ID model menjadi field di setiap job alih-alih akun penyedia terpisah, SDK, dan penyiapan penagihan.

Dalam panduan ini, Anda akan membangun pipeline low-code yang berfungsi yang membaca job gambar dan video dari Google Sheets, mengirimnya ke model OpenAI dan ByteDance melalui CometAPI, menyimpan ID tugas video asinkron, melakukan polling hingga selesai, dan melakukan upsert hasil akhir ke n8n Data Table.

Apa yang Akan Anda Bangun

Workflow yang selesai mengikuti jalur ini:

Google Sheets Trigger → Normalize Job → Switch berdasarkan jenis media → Permintaan gambar atau video CometAPI → Tunggu dan polling tugas video → Unggah atau referensikan output → Data Table upsert.

Gunakan kolom ini di sheet sumber:

job_id | media_type | model | prompt | size | seconds | status

Baris gambar tipikal menggunakan image, gpt-image-2, dan 1024x1024. Baris video menggunakan video, seedance-2-5, 1280x720, dan durasi dari 4 hingga 30 detik.

Sebelum Anda Mulai

Anda memerlukan instance n8n, Google Sheet, API key CometAPI, dan n8n Data Table bernama ai_jobs. Buat kolom ini di Data Table: job_id, media_type, model, status, task_id, result_url, error, dan updated_at.

Untuk n8n self-hosted, tambahkan nilai berikut ke lingkungan yang digunakan oleh proses n8n Anda:

COMETAPI_BASE_URL=https://api.cometapi.com/v1COMETAPI_KEY=your_cometapi_key

Restart n8n setelah mengubah lingkungannya. Di n8n Cloud, atau kapan pun Anda tidak ingin mengekspos variabel lingkungan dalam ekspresi node, buat kredensial HTTP Header Auth bernama CometAPI Bearer. Setel nama header ke Authorization dan nilainya ke Bearer your_cometapi_key. Contoh di bawah menggunakan kredensial ini dan URL dasar yang kompatibel dengan OpenAI https://api.cometapi.com/v1.

Gunakan ID Model Terkini

JobPenyedia dan modelRequestResult
ImageOpenAI · gpt-image-2POST /v1/images/generationsGambar base64 sinkron
VideoByteDance · seedance-2-5POST /v1/videosTugas asinkron, lalu polling

Baik ID maupun kapabilitas tersedia di API direktori model CometAPI live pada 11 Agustus 2026. Model gambar mendukung pembuatan teks-ke-gambar. Seedance 2.5 mendukung pembuatan teks-ke-video dan gambar-ke-video, klip 4–30 detik, serta ukuran 480p dan 720p sesuai dokumentasi.

Harga per 11 Agustus 2026: halaman model GPT Image 2 mencantumkan $4 per juta token input dan $24 per juta token output. Halaman model Seedance 2.5 mencantumkan $0,103 per detik pada 480p dan $0,231 per detik pada 720p. Harga dapat berubah, jadi gunakan direktori model live atau halaman model sebagai sumber kebenaran saat runtime.

Perbedaan arsitektural penting adalah bahwa pembuatan gambar dapat ditangani sebagai operasi request-response, sedangkan pembuatan video harus diperlakukan sebagai job stateful. Menyimpan ID tugas video sebelum polling mencegah eksekusi n8n yang restart kehilangan job tersebut.

Bangun Workflow di n8n

1. Memicu Job Baru dari Google Sheets

Tambahkan node Google Sheets Trigger dan pilih Row added or updated. Arahkan ke worksheet yang berisi antrean job Anda. Tambahkan node IF segera setelah trigger dan lanjutkan hanya ketika status kosong atau bernilai queued. Ini mencegah baris yang sudah selesai dikirim lagi saat sheet berubah.

2. Normalisasi dan Validasi Setiap Baris

Tambahkan node Code bernama Normalize Job. Node ini menerapkan default yang aman, membatasi workflow ke ID model yang disetujui, dan menghasilkan field yang sama untuk kedua cabang.

const row = $json;​const allowedModels = {  image: new Set(['gpt-image-2']),  video: new Set(['seedance-2-5']),};​const mediaType = String(row.media_type || '').trim().toLowerCase();if (!allowedModels[mediaType]) {  throw new Error(`media_type must be image or video; received: ${row.media_type}`);}​const defaultModel = mediaType === 'image' ? 'gpt-image-2' : 'seedance-2-5';const model = String(row.model || defaultModel).trim();if (!allowedModels[mediaType].has(model)) {  throw new Error(`Model ${model} is not allowed for ${mediaType} jobs`);}​const prompt = String(row.prompt || '').trim();if (!prompt) throw new Error('prompt is required');​const seconds = mediaType === 'video' ? Number(row.seconds || 4) : null;if (mediaType === 'video' && (!Number.isInteger(seconds) || seconds < 4 || seconds > 30)) {  throw new Error('Seedance 2.5 seconds must be an integer from 4 to 30');}​return [{  json: {    job_id: String(row.job_id || $execution.id),    media_type: mediaType,    model,    prompt,    size: String(row.size || (mediaType === 'image' ? '1024x1024' : '1280x720')),    seconds,    status: 'processing',    updated_at: new Date().toISOString(),  },}];

Tambahkan node Switch setelah Normalize Job. Rute image ke cabang gambar dan video ke cabang video.

3. Menghasilkan Gambar Melalui Satu Endpoint

Tambahkan node HTTP Request bernama Create Image dengan pengaturan ini:

  • Method: POST
  • URL: https://api.cometapi.com/v1/images/generations
  • Authentication: kredensial Header Auth CometAPI Bearer
  • Body Content Type: JSON
{  "model": "={{ $('Normalize Job').item.json.model }}",  "prompt": "={{ $('Normalize Job').item.json.prompt }}",  "size": "={{ $('Normalize Job').item.json.size }}"}

GPT Image 2 mengembalikan data gambar base64. Tambahkan node Code bernama Prepare Image File untuk mengubah data tersebut menjadi item binary n8n:

const job = $('Normalize Job').item.json;const b64 = $json.data?.[0]?.b64_json;if (!b64) throw new Error('CometAPI returned no image data');​return [{  json: {    ...job,    status: 'completed',    task_id: '',    result_url: '',    error: '',    updated_at: new Date().toISOString(),  },  binary: {    media: {      data: b64,      mimeType: 'image/png',      fileName: `${job.job_id}.png`,    },  },}];

Hubungkan node ini ke node penyimpanan objek pilihan Anda, seperti S3 atau Google Drive. Simpan URL file yang dikembalikan di result_url, lalu lakukan upsert baris ke ai_jobs. Jauhkan payload base64 besar dari Data Table.

4. Membuat Tugas Video Asinkron

Tambahkan node HTTP Request bernama Create Video:

  • Method: POST
  • URL: https://api.cometapi.com/v1/videos
  • Authentication: CometAPI Bearer
  • Body Content Type: Form-Data

Tambahkan empat field form: model, prompt, seconds, dan size. Peta nilainya dari Normalize Job.

Selanjutnya, tambahkan node Code bernama Save Video Task:

const job = $('Normalize Job').item.json;const taskId = $json.id || $json.task_id;if (!taskId) throw new Error('Video task ID missing from create response');​return [{  json: {    ...job,    task_id: taskId,    status: $json.status || 'queued',    result_url: '',    error: '',    updated_at: new Date().toISOString(),  },}];

Lakukan upsert item ini ke ai_jobs sebelum polling. Menyimpan ID tugas segera berarti restart atau timeout tidak akan kehilangan job.

5. Tunggu, Polling, dan Simpan URL Video

Tambahkan node Wait yang diatur ke 15 detik. Lalu tambahkan node HTTP Request bernama Get Video:

  • Method: GET
  • URL: =https://api.cometapi.com/v1/videos/{{ $json.task_id }}
  • Authentication: CometAPI Bearer

Setelah permintaan, gunakan node Switch pada status:

  • queued atau in_progress: kembali ke node Wait.
  • completed: lanjut ke Finalize Video.
  • failed atau error: tulis error ke ai_jobs dan berhenti.

Tambahkan node Code untuk cabang yang selesai:

const prior = $('Save Video Task').item.json;const resultUrl = $json.video_url || $json.url || $json.data?.video_url;if (!resultUrl) throw new Error('Completed video response has no video URL');​return [{  json: {    ...prior,    status: 'completed',    result_url: resultUrl,    error: '',    updated_at: new Date().toISOString(),  },}];

Lakukan upsert item final ke ai_jobs berdasarkan job_id. URL video CometAPI dapat ditandatangani dan bersifat sementara, jadi workflow produksi sebaiknya mengunduh dan meng-host ulang file sebelum menyimpan URL permanennya. Jika aplikasi Anda dapat menerima permintaan masuk, ganti polling dengan webhook di mana model yang dipilih mendukung callback.

Peta Node Lengkap

Workflow penuh dapat dirangkai dengan node berikut:

  1. Google Sheets Trigger — Row added or updated
  2. IF — Hanya proses baris baru atau queued
  3. Code — Normalize Job
  4. Switch — Image atau video
  5. Cabang gambar: HTTP Request → Prepare Image File → Object Storage → Data Table Upsert
  6. Cabang video: HTTP Request → Save Video Task → Data Table Upsert → Wait → HTTP Request → Status Switch
  7. Video selesai: Finalize Video → Object Storage atau URL permanen → Data Table Upsert
  8. Video gagal: Set Error → Data Table Upsert

Untuk cabang kegagalan, gunakan ekspresi ini di node Edit Fields:

{  "job_id": "={{ $('Save Video Task').item.json.job_id }}",  "status": "failed",  "task_id": "={{ $('Save Video Task').item.json.task_id }}",  "result_url": "",  "error": "={{ $json.error?.message || $json.message || 'Video generation failed' }}",  "updated_at": "={{ $now.toISO() }}"}

Uji Workflow

Tambahkan dua baris ini ke sheet sumber:

img-001 | image | gpt-image-2 | A cinematic product photo of a glass robot on a dark desk | 1024x1024 | | queuedvid-001 | video | seedance-2-5 | A paper airplane flies through a sunlit studio, smooth tracking shot | 1280x720 | 4 | queued

Permintaan gambar harus mengembalikan struktur serupa:

{  "created": 1786400000,  "data": [    { "b64_json": "iVBORw0KGgoAAA..." }  ]}

Permintaan pembuatan video harus mengembalikan struktur tugas serupa:

{  "id": "video_task_abc123",  "object": "video",  "status": "queued",  "progress": 0}

Setelah polling, respons yang selesai harus berisi ID tugas yang sama, status: completed, dan video_url. Field opsional yang tepat dapat bervariasi menurut model, itulah sebabnya kode normalisasi membaca status tugas yang stabil dan URL hasil alih-alih menyalin seluruh respons penyedia ke database Anda.

Error Umum dan Perbaikan

ErrorPerbaikan
401 UnauthorizedKonfirmasi nilai Header Auth diawali dengan Bearer dan kunci aktif.
404 model or task not foundPeriksa direktori model live dan konfirmasi ID tugas yang disimpan digunakan di GET /v1/videos/{id}.
400 invalid size or secondsGunakan ukuran yang didukung dan jaga durasi Seedance 2.5 antara 4 dan 30 detik.
429 rate limitedKurangi konkurensi n8n dan retry dengan exponential backoff plus jitter.
Polling never endsPersisten jumlah percobaan dan hentikan setelah batas waktu yang ditentukan; perlakukan failed dan error sebagai terminal.
Image payload is too largeKonversi base64 ke binary, unggah, dan simpan hanya URL permanennya.

Daftar Periksa Produksi

  • Lindungi kredensial. Simpan API key di kredensial n8n atau variabel lingkungan server-side. Jangan pernah menempatkannya di spreadsheet atau mengembalikannya ke browser.
  • Jadikan setiap job idempoten. Gunakan job_id sebagai kunci upsert Data Table. Sebelum membuat tugas baru, lewati baris yang sudah ditandai processing atau completed.
  • Kendalikan polling dan konkurensi. Polling job video setiap 10–20 detik, batasi jumlah percobaan, dan batasi eksekusi simultan. Backoff pada respons 429, 500, dan 503 alih-alih membuat tugas duplikat.
  • Validasi kebijakan model sebelum setiap permintaan. Simpan daftar izin berdasarkan jenis media. Segarkan ketersediaan model dan harga dari direktori live secara terjadwal, tetapi terapkan perubahan model melalui review alih-alih membiarkan pengguna spreadsheet mengirim ID arbitrer.
  • Lacak biaya per job. Simpan model, resolusi, durasi, dan field penggunaan pada setiap hasil. Job Seedance 2.5 empat detik 720p sekitar $0,924 pada tarif yang tercantum 11 Agustus 2026; empat detik yang sama pada 480p sekitar $0,412. Terapkan durasi dan resolusi maksimum sebelum mengirim permintaan.
  • Rehost media yang dihasilkan. Perlakukan URL penyedia bertanda tangan sebagai tautan pengiriman, bukan penyimpanan permanen. Unduh media yang selesai, unggah ke bucket yang Anda kendalikan, dan simpan URL yang tahan lama plus checksum.
  • Simpan jejak audit. Simpan model permintaan, parameter yang disanitasi, ID tugas, transisi status, jumlah retry, waktu respons, dan lokasi aset final. Jangan log API key atau prompt privat penuh.

Mengapa Pola Ini Dapat Diskalakan

Workflow tetap sederhana karena setiap penyedia atau model baru adalah keputusan routing, bukan integrasi akun baru. Spreadsheet tetap menjadi antrean job, n8n tetap menjadi lapisan orkestrasi, dan CometAPI tetap menjadi lapisan akses tunggal. Tambahkan model dengan memperluas daftar izin dan konfigurasi cabang; trigger, persistensi tugas, polling, penyimpanan, dan logika pemantauan tetap tidak berubah.

Itulah jawaban praktis untuk integrasi AI multi-penyedia: satu endpoint dan key yang terkontrol, routing model yang eksplisit, jalur sinkron dan asinkron yang terpisah, serta catatan yang tahan lama untuk setiap job.

FAQs

Bisakah n8n memanggil banyak penyedia AI melalui satu API?

Ya. Dengan lapisan API yang terunifikasi seperti CometAPI, n8n dapat mengirim permintaan ke model berbeda yang didukung sambil menjaga kredensial penyedia dan integrasi HTTP tetap terpusat.

Bisakah saya menggunakan CometAPI dengan node HTTP Request n8n?

Ya. Node HTTP Request dapat mengirim permintaan ke endpoint API CometAPI dengan autentikasi yang diperlukan dan parameter spesifik model.

Bisakah n8n secara otomatis mengganti model AI saat satu gagal?

Ya. Gunakan cabang IF/Switch setelah permintaan API dan rute kegagalan yang dapat di-retry atau spesifik model ke model fallback. Fallback harus mendukung modalitas dan kapabilitas yang sama.

Lanjut belajar

Hubungkan artikel ini ke keputusan berikutnya.

Lihat semua topik
Dipublikasikan pada Aug 25, 2026
Terakhir diperbarui Aug 25, 2026
0 tampilan
Ditinjau untuk kejelasan, atribusi sumber, dan terminologi API terkini.

Siap memangkas biaya pengembangan AI hingga 20%?

Mulai gratis dalam beberapa menit. Kredit uji coba gratis disertakan. Tidak perlu kartu kredit.

Baca Selengkapnya