API Gateway AiStudio.ID mengimplementasikan standar REST OpenAI secara penuh. Anda dapat langsung menggunakan SDK resmi OpenAI (Python, TypeScript, LangChain, LlamaIndex, Cursor, VS Code) cukup dengan mengganti baseURL dan mengisi apiKey.
https://aistudio.id/v1
Metode Autentikasi API Key:
| Header / Parameter | Contoh Nilai | Keterangan |
|---|---|---|
Authorization |
Bearer API_KEY_MILIKMU |
Standar Resmi OpenAI |
X-API-Key |
API_KEY_MILIKMU |
Header alternatif untuk request langsung |
?api_key= |
?api_key=API_KEY_MILIKMU |
Query parameter URL untuk pengujian cepat |
Endpoint Utility Akun & Model:
| Method & Endpoint | Deskripsi | Autentikasi |
|---|---|---|
GET /v1/models |
Mengambil daftar lengkap model AI aktif yang siap digunakan | Publik / Opsional Bearer Key |
GET /v1/balance |
Mengecek sisa saldo koin akun (total, gratis, & berbayar) | Wajib Bearer Key |
GET /v1/dashboard/billing/credit_grants |
Kompatibilitas cek koin untuk aplikasi client seperti NextChat & Chatbox | Wajib Bearer Key |
Daftar model yang sedang aktif dan siap dipanggil melalui API Gateway:
Contoh: Model dengan tarif 100 Koin / 1M Token, jika request Anda menghabiskan 1.250 token, biayanya hanya 0,13 Koin.
| Model Identifier | Kategori | Nama Model | Tarif Pemotongan | Aksi |
|---|---|---|---|---|
gemini-3-1-flash |
Chat / LLM | Gemini 3.1 Flash Non-Streaming & No AI Agent | 50 Koin / 1M Token | |
gemini-3.7-flash |
Chat / LLM | Gemini 3.7 Flash | 100 Koin / 1M Token | |
gemini-3.8-flash |
Chat / LLM | Gemini 3.8 Flash | 150 Koin / 1M Token | |
tts-1 |
Voice TTS | Google Studio TTS | 1 Koin / 1.000 Karakter (Proporsional) | |
tts-multi |
Voice TTS | Studio Voice Multi-Speaker (Podcast & Dialog) | 1 Koin / 1.000 Karakter (Proporsional) | |
banana-pro |
Image Studio | Banana Pro | 5 Koin / 1x Gambar | |
gpt_imagev2 |
Image Studio | ChatGpt V2 | 8 Koin / 1x Gambar | |
google-omni |
Video AI | Omni Flash | 20 Koin / 1x Video | |
image-upscale |
Media | Image SuperScale HD/4K | 1 Koin / 1x Gambar | |
video-upscale |
Media | Video SuperScale 1K/2K/4K | 5 Koin / 1x Video | |
video-merge |
Media | Video Merge Instan (~0.5s) | 5 Koin / 1x Video | |
video-antidup |
Media | Video Anti-Duplikasi AI Bypass | 5 Koin / 1x Video | |
watermark-cleaner |
Media | Pembersih Watermark Video AI (Google) | 1 Koin / 1x Video |
Gunakan endpoint ini untuk percakapan teks, penalaran (reasoning), pembuatan artikel, analisis kode, dan respons streaming karakter demi karakter. Mendukung 2 moda keluaran:
- Realtime Streaming (SSE): Set
"stream": truepada request body. Gateway akan mengalirkan token respons kata per kata secara instan tanpa menunggu kalimat selesai melalui protokol standar Server-Sent Events (SSE). - Respon Penuh (Non-Streaming): Set
"stream": false(default). Gateway menunggu hingga kalimat tuntas dan mengembalikan satu objek JSON utuh. - Di Studio Playground: Anda dapat menyalakan/mematikan streaming cukup dengan menekan tombol "Stream: ON / OFF" pada toolbar atas obrolan.
stream: true)
Format: JSON / text/event-stream
gemini-3-1-flash (Non-Streaming & Tanpa AI Agent)
gemini-3-1-flash dirancang khusus untuk inferensi percakapan teks satu arah (single-turn non-streaming). Model ini TIDAK MENDUKUNG mode streaming (Server-Sent Events) dan TIDAK MENDUKUNG AI Agent / Tool Calling / Function Calling.
Jika integrasi aplikasi Anda mewajibkan streaming realtime atau arsitektur AI Agent (seperti LangChain, CrewAI, AutoGen, Cursor, dll), silakan gunakan model
gemini-3.7-flash atau gemini-3.8-flash.
{
"model": "gemini-3-1-flash",
"messages": [
{
"role": "system",
"content": "Anda adalah asisten AI profesional dan ahli rekayasa perangkat lunak."
},
{
"role": "user",
"content": "Jelaskan konsep microservices secara singkat!"
}
],
"temperature": 0.7,
"stream": false
}
{
"id": "chatcmpl-a9f82d1c7e90",
"object": "chat.completion",
"created": 1724567890,
"model": "gemini-3-1-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Microservices adalah pendekatan arsitektur di mana aplikasi dibangun sebagai kumpulan modul layanan kecil yang independen..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 120,
"total_tokens": 148
}
}
{
"model": "gemini-3-1-flash",
"messages": [
{
"role": "user",
"content": "Tuliskan 3 tips produktivitas kerja sehari-hari!"
}
],
"stream": true
}
data: {"id":"chatcmpl-09370f0f5173","object":"chat.completion.chunk","created":1789288684,"model":"gemini-3.7-flash","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-09370f0f5173","object":"chat.completion.chunk","created":1789288684,"model":"gemini-3.7-flash","choices":[{"index":0,"delta":{"content":"Berikut "},"finish_reason":null}]}
data: {"id":"chatcmpl-09370f0f5173","object":"chat.completion.chunk","created":1789288684,"model":"gemini-3.7-flash","choices":[{"index":0,"delta":{"content":"3 tips "},"finish_reason":null}]}
data: {"id":"chatcmpl-09370f0f5173","object":"chat.completion.chunk","created":1789288684,"model":"gemini-3.7-flash","choices":[{"index":0,"delta":{"content":"produktivitas..."},"finish_reason":null}]}
data: [DONE]
Kirimkan gambar untuk dianalisis, dideskripsikan, atau diekstrak datanya (OCR) melalui struktur konten array OpenAI Vision standard. Catatan: Chat multimodal hanya mendukung format Base64 Data URL (bukan tautan URL HTTP/HTTPS).
- Hanya Format Base64 Data URL: Gambar wajib dikirimkan dalam bentuk Base64 Data URL (contoh:
data:image/jpeg;base64,...ataudata:image/png;base64,...). - URL Gambar Publik (HTTP / HTTPS) Tidak Didukung: Gateway tidak menerima tautan langsung berupa URL online (seperti
https://domain.com/foto.jpg). Pastikan file gambar dikonversi menjadi Base64 di aplikasi klien / frontend terlebih dahulu. - Tipe File yang Didukung: PNG, JPG/JPEG, WEBP, dan GIF.
{
"model": "gemini-3-1-flash",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Analisa gambar berikut dan jelaskan grafik penjualan yang ada di dalamnya secara detail."
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wgALCAABAAEBAREA/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQABPxA="
}
}
]
}
],
"temperature": 0.5
}
Fitur unggulan AI Studio untuk menghemat kuota dan memangkas ukuran data payload jaringan. Klien TIDAK PERLU mengirimkan seluruh riwayat percakapan lama saat melanjutkan obrolan. Cukup sertakan session_id dan kirim 1 pesan giliran terbaru.
- Hemat Bandwidth 95%+: Percakapan ke-50 hanya mengirim 1 objek pesan baru, bukan riwayat panjang yang berat.
- Rekonstruksi Otomatis di Server: AI Gateway otomatis mengambil riwayat percakapan dari database, merekonstruksi konteks lengkap, dan menyematkan header sesi ke provider upstream.
- Mendukung Header Alternatif: Parameter
session_iddapat dikirim melalui body JSON atau HTTP headerX-Session-Id. - Kompatibel Realtime SSE: Mendukung streaming dengan penandaan awal meta event
type: "meta"berisi ID sesi aktif.
session_id
Header: X-Session-Id
Manajemen Sesi: /v1/chat/sessions
{
"model": "gemini-3-1-flash",
"session_id": "conv_client_001",
"system_prompt": "Anda adalah konsultan bisnis profesional.",
"messages": [
{
"role": "user",
"content": "Halo! Perusahaan saya bernama PT Maju Makmur berbasis di Surabaya."
}
]
}
{
"model": "gemini-3-1-flash",
"session_id": "conv_client_001",
"messages": [
{
"role": "user",
"content": "Sebutkan nama perusahaan saya dan di kota mana saya berbasis?"
}
]
}
{
"model": "gemini-3-1-flash",
"session_id": "conv_client_001",
"message": "Apa rekomendasi strategi ekspansi bisnis untuk perusahaan saya?"
}
# 1. Mendapatkan daftar seluruh sesi obrolan Anda:
curl -X GET "https://aistudio.id/v1/chat/sessions" \
-H "Authorization: Bearer API_KEY_MILIKMU"
# 2. Mengambil riwayat pesan lengkap dari sebuah sesi:
curl -X GET "https://aistudio.id/v1/chat/sessions?session_id=conv_client_001" \
-H "Authorization: Bearer API_KEY_MILIKMU"
# 3. Menghapus sesi obrolan beserta seluruh riwayat pesannya:
curl -X DELETE "https://aistudio.id/v1/chat/sessions?session_id=conv_client_001" \
-H "Authorization: Bearer API_KEY_MILIKMU"
Hasilkan visual, ilustrasi produk, poster promosi, dan karya seni digital berkualitas photorealistic dari deskripsi teks.
{
"model": "banana-pro",
"prompt": "Modern coffee shop interior with wooden minimalist aesthetics, warm sunlight through large window, plants, highly detailed 8k photography",
"size": "1024x1024",
"aspect_ratio": "16:9",
"response_format": "url",
"n": 1
}
{
"success": true,
"created": 1724567920,
"model": "banana-pro",
"data": [
{
"url": "https://aistudio.id/uploads/ai_gallery/images/img_1724567920_ab12cd.png",
"revised_prompt": "Modern coffee shop interior with wooden minimalist aesthetics..."
}
]
}
Modifikasi gambar yang sudah ada atau gabungkan 1 hingga 3 foto referensi (karakter, objek, wajah, atau gaya visual) dengan menyertakan referensi gambar (wajib Base64 Data URL: data:image/jpeg;base64,... atau data:image/png;base64,...) beserta prompt instruksi.
image_references (atau image / image_inputs) wajib menggunakan format Base64 Data URL (contoh: data:image/jpeg;base64,/9j/4AAQ...). Input berupa tautan URL web langsung (http:// atau https://) tidak didukung dan akan ditolak oleh gateway.
{
"model": "banana-pro",
"prompt": "Ganti kostum karakter dari foto acuan menjadi pakaian Cyberpunk dan latar belakang kota Tokyo masa depan malam hari",
"image_references": [
"data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"data:image/jpeg;base64,/9j/4AAQSkZJRg..."
],
"aspect_ratio": "1:1",
"response_format": "url"
}
Catatan: Anda juga dapat menggunakan format single string "image": "data:image/png;base64,..." atau array "image_inputs": [...] hingga maksimal 3 foto acuan (semuanya wajib format Base64 Data URL).
ChatGpt V2 adalah model generator gambar AI generasi terbaru dengan engine visual DALL-E 3 & Estuary. Model ini memiliki keunggulan luar biasa dalam kepatuhan teks (*prompt adherence*), detail tipografi tulisan/logo di dalam gambar, pencahayaan fotorealistik, dan kemampuan Multi-Reference hingga 5 foto acuan untuk menjaga konsistensi karakter.
gpt_imagev2
Tarif: 8 Koin / Gambar
Engine: DALL-E 3 & Estuary
Rasio: 1:1, 9:16, 16:9
Multi-Ref: Hingga 5 Foto
Format: URL / Base64
Parameter Request (JSON)
| Field Parameter | Tipe Data | Wajib? | Deskripsi & Nilai yang Didukung |
|---|---|---|---|
model |
String | Wajib | Identifier model: "gpt_imagev2" (bisa menggunakan alias: "Gpt_imagev2", "gpt-image-v2"). |
prompt |
String | Wajib | Deskripsi visual gambar yang ingin dibuat. Disarankan berbahasa Inggris untuk detail artistik maksimal. |
aspect_ratio |
String | Opsional | Pilihan rasio aspek kanvas: "1:1" (Persegi/Default), "9:16" (Portrait/Shorts/TikTok), atau "16:9" (Landscape/YouTube/Banner). |
size |
String | Opsional | Resolusi kanvas standar: "1024x1024" (1:1), "1024x1792" (9:16), atau "1792x1024" (16:9). |
image_references |
Array of String | Opsional | Daftar 1 hingga 5 foto acuan berformat Base64 Data URL (data:image/jpeg;base64,... atau data:image/png;base64,...) untuk mode Image-to-Image konsistensi visual. |
style |
String | Opsional | Preset gaya gambar visual: "photorealistic", "anime", "3d_render", "cyberpunk", atau "watercolor". |
response_format |
String | Opsional | Format output gambar: "url" (default, tautan unduhan CDN siap pakai) atau "b64_json" (string mentah Base64). |
n |
Integer | Opsional | Jumlah gambar yang di-generate (default: 1, maksimal 4). |
curl -X POST "https://aistudio.id/v1/images/generations" \
-H "Authorization: Bearer aist-af675da7a8355c09d8d11ebdc517de15" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt_imagev2",
"prompt": "Cyberpunk barista robot pouring glowing neon latte in a rainy Tokyo alley coffee shop, cinematic lighting, 8k photography, ultra detailed",
"aspect_ratio": "9:16",
"size": "1024x1792",
"response_format": "url",
"n": 1
}'
curl -X POST "https://aistudio.id/v1/images/generations" \
-H "Authorization: Bearer aist-af675da7a8355c09d8d11ebdc517de15" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt_imagev2",
"prompt": "Pertahankan wajah karakter dari foto referensi 1, padukan dengan pose dari referensi 2 dan warna kostum pada referensi 3. Beri latar belakang istana megah bersalju.",
"aspect_ratio": "16:9",
"image_references": [
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD...",
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD...",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
],
"response_format": "url"
}'
from openai import OpenAI
client = OpenAI(
api_key="aist-af675da7a8355c09d8d11ebdc517de15",
base_url="https://aistudio.id/v1"
)
# Pemanggilan Generate Gambar Gpt_imagev2
response = client.images.generate(
model="gpt_imagev2",
prompt="Kucing putih bermahkota emas duduk di singgasana batu permata, gaya lukisan Renaissance, 8k",
size="1024x1024",
n=1
)
# Ambil URL hasil gambar yang telah tersimpan di server
image_url = response.data[0].url
print("URL Gambar AI:", image_url)
<?php
$apiKey = 'aist-af675da7a8355c09d8d11ebdc517de15';
$endpoint = 'https://aistudio.id/v1/images/generations';
$payload = [
'model' => 'gpt_imagev2',
'prompt' => 'Pemandangan sawah terasering di Bali saat fajar matahari terbit, kabut pagi lembut, ultra-photorealistic',
'aspect_ratio' => '16:9',
'size' => '1792x1024',
'response_format' => 'url'
];
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_TIMEOUT => 180, // Rekomendasi timeout 180s untuk proses render gambar
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$apiKey}",
"Content-Type: application/json"
],
CURLOPT_SSL_VERIFYPEER => false
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if (!empty($result['data'][0]['url'])) {
echo "Gambar Berhasil Dibuat: " . $result['data'][0]['url'] . PHP_EOL;
} else {
echo "Gagal: " . ($result['error']['message'] ?? 'Unknown Error') . PHP_EOL;
}
?>
"async": true agar request awal segera mengembalikan job_id tanpa risiko timeout koneksi (Cloudflare 100s / reverse proxy). Selanjutnya aplikasi Anda cukup melakukan polling ke endpoint /v1/images/status/{job_id} setiap 2.5–3 detik.
curl -X POST "https://aistudio.id/v1/images/generations" \
-H "Authorization: Bearer aist-af675da7a8355c09d8d11ebdc517de15" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt_imagev2",
"prompt": "Futuristic electric supercar on wet asphalt street, cinematic neon reflections, 8k",
"aspect_ratio": "16:9",
"async": true
}'
{
"success": true,
"ok": true,
"job_id": "a1e7bbdaffc94ea6aefbe50be8b3023a",
"status": "queued",
"model": "gpt_imagev2",
"poll_url": "https://aistudio.id/v1/images/status/a1e7bbdaffc94ea6aefbe50be8b3023a",
"message": "Permintaan pembuatan gambar ChatGPT berhasil didaftarkan ke antrean."
}
curl -X GET "https://aistudio.id/v1/images/status/a1e7bbdaffc94ea6aefbe50be8b3023a" \
-H "Authorization: Bearer aist-af675da7a8355c09d8d11ebdc517de15"
{
"success": true,
"status": "done",
"job_id": "a1e7bbdaffc94ea6aefbe50be8b3023a",
"model": "gpt_imagev2",
"duration_s": 58.4,
"data": [
{
"url": "https://aistudio.id/uploads/creations/images/img_gpt_1790532938_a1e7bb.png",
"revised_prompt": "Futuristic electric supercar on wet asphalt street..."
}
],
"image_url": "https://aistudio.id/uploads/creations/images/img_gpt_1790532938_a1e7bb.png"
}
curl -X GET "https://aistudio.id/v1/images/status" \
-H "Authorization: Bearer aist-af675da7a8355c09d8d11ebdc517de15"
Konversi naskah teks menjadi suara narasi manusia alami berkualitas studio 24kHz. Gateway menyediakan 30 karakter suara AI. Masukkan ID karakter suara pilihan Anda pada parameter voice (misal: Paijah, Tukiran, Dimas, Rudi).
ID Suara (voice) |
Gender | Karakter / Gaya Tone | Sampel Suara (Preview) |
|---|---|---|---|
Paijah |
Perempuan | Santai & Anggun |
Kartini_Kore_Perempuan.wav
|
Sarah |
Perempuan | Ceria & Energetik |
Sarah_Aoede_Perempuan.wav
|
Ayu |
Perempuan | Rapi & Formal |
Ayu_Autonoe_Perempuan.wav
|
Sri |
Perempuan | Keibuan & Adem |
Sri_Callirrhoe_Perempuan.wav
|
Sumiati |
Perempuan | Elegan & Jelas |
Sumiati_Despina_Perempuan.wav
|
Nurhayati |
Perempuan | Teratur & Informatif |
Nurhayati_Erinome_Perempuan.wav
|
Sulastri |
Perempuan | Lembut & Empatik |
Sulastri_Gacrux_Perempuan.wav
|
Zainab |
Perempuan | Ramah & Komunikatif |
Zainab_Achernar_Perempuan.wav
|
Dewi |
Perempuan | Imut & Ceria |
Dewi_Laomedeia_Perempuan.wav
|
Fitri |
Perempuan | Semangat & Cerah |
Fitri_Leda_Perempuan.wav
|
Wulan |
Perempuan | Halus & Puitis |
Wulan_Pulcherrima_Perempuan.wav
|
Tukiran |
Perempuan | Clear & Jelas |
Tukiran_Puck_Laki-laki.wav
|
Laras |
Perempuan | Tenang & Nyaman |
Laras_Sulafat_Perempuan.wav
|
Intan |
Perempuan | Lugas & PD |
Intan_Vindemiatrix_Perempuan.wav
|
Siti |
Perempuan | Segar & Asyik |
Siti_Zephyr_Perempuan.wav
|
Rudi |
Laki-laki | Tegas & Wibawa |
Rudi_Achird_Laki-laki.wav
|
Ahmad |
Laki-laki | Santai & Friendly |
Ahmad_Algenib_Laki-laki.wav
|
Paimin |
Laki-laki | Kalem & Santai |
Paimin_Algieba_Laki-laki.wav
|
Slamet |
Laki-laki | Bijak & Dalam |
Slamet_Alnilam_Laki-laki.wav
|
Bambang |
Laki-laki | Pro & Mantap |
Bambang_Charon_Laki-laki.wav
|
Paijo |
Laki-laki | Heboh & Seru |
Paijo_Enceladus_Laki-laki.wav
|
Agus |
Laki-laki | Semangat & Muda |
Agus_Fenrir_Laki-laki.wav
|
Joko |
Laki-laki | Berat & Maskulin |
Joko_Iapetus_Laki-laki.wav
|
Herman |
Laki-laki | Nge-bass & Mantap |
Herman_Orus_Laki-laki.wav
|
Supardi |
Laki-laki | Kebapakan & Adem |
Supardi_Rasalgethi_Laki-laki.wav
|
Mulyadi |
Laki-laki | Lantang & Seru |
Mulyadi_Sadachbia_Laki-laki.wav
|
Dimas |
Laki-laki | Gaul & Modern |
Dimas_Sadaltager_Laki-laki.wav
|
Wahyu |
Laki-laki | Formal & Penyiar |
Wahyu_Schedar_Laki-laki.wav
|
Gilang |
Laki-laki | Ramah & Asyik |
Gilang_Umbriel_Laki-laki.wav
|
Budi |
Laki-laki | Natural & Jelas |
Budi_Zubenelgenubi_Laki-laki.wav
|
Preset Intonasi & Gaya Bicara (Parameter intonation)
Anda dapat mengatur nuansa emosi dan pembawaan suara AI dengan menambahkan parameter intonation. Anda bisa menggunakan 6 preset resmi di bawah atau menuliskan instruksi intonasi kustom Anda sendiri.
| Preset Emosi | Karakter Emosi | Contoh Nilai Parameter intonation |
|---|---|---|
| Ceria & Energetik | Penuh semangat, ceria, antusias | "Ceria, penuh semangat, dan antusias" |
| Formal & Berita | Wibawa, profesional, pembaca berita | "Formal, wibawa, dan profesional seperti pembaca berita" |
| Bisikan & ASMR | Berbisik lembut, misterius, dramatis | "Berbisik lembut, misterius, dan dramatis seperti cerita fantasi/ASMR" |
| Santai & Hangat | Casual, hangat, ramah, bersahabat | "Santai, hangat, ramah, dan bersahabat" |
| Teatrikal & Drama | Ekspresif, dramatis, emosi tinggi | "Ekspresif, dramatis, dengan intonasi emosi tinggi" |
| Tenang & Meditasi | Perlahan, halus, menenangkan | "Tenang, perlahan, halus, dan menenangkan seperti instruktur meditasi" |
| Intonasi Kustom | Bebas deskripsikan suasana apa pun | "Bicara cepat penuh ketegangan", "Lembut mendongeng anak" |
{
"model": "tts-1",
"input": "Halo, selamat datang di platform AI Studio Indonesia.",
"voice": "Paijah",
"intonation": "Ceria, penuh semangat, dan antusias",
"speed": 1.0,
"response_format": "json"
}
Sintesis percakapan audio multi-karakter (podcast, drama, wawancara, dialog edukasi) berkualitas studio 24kHz Mono WAV dalam satu file audio utuh tanpa sambungan manual. Sistem secara otomatis mengenali nama pembicara pada setiap baris naskah dan membawakannya dengan karakter suara yang berbeda secara alami dan ekspresif.
tts-multi
Tarif: 1 Koin / 1.000 Karakter (Proporsional)
Dukungan Multi-Karakter (2+ Pembicara)
Format Output: WAV 24kHz / JSON
Format Naskah Dialog (Script)
Tuliskan naskah dengan mengawali setiap baris menggunakan Nama Pembicara diikuti tanda titik dua (:):
Andi: Halo Siti, selamat datang di studio podcast kita hari ini!
Siti: Halo Andi, terima kasih banyak sudah mengundang saya ke sini.
Andi: Topik obrolan kita kali ini adalah seputar kecerdasan buatan dalam konten digital.
Siti: Sangat menarik! Perkembangannya sekarang sangat pesat dan memudahkan kreator.
Parameter Request Payload (JSON)
| Parameter | Tipe | Wajib? | Keterangan |
|---|---|---|---|
model |
string |
Opsional | Gunakan tts-multi atau tts-1. |
input |
string |
Wajib | Naskah percakapan dialog dengan format Nama: Teks.... |
speakers |
array |
Opsional |
Pemetaan nama pembicara ke karakter suara pilihan:
Contoh:
[{"speaker": "Andi", "voice": "Puck"}, {"speaker": "Siti", "voice": "Kore"}]Jika tidak disertakan, sistem akan otomatis mendeteksi pembicara dan memetakan suara pria/wanita secara cerdas. |
response_format |
string |
Opsional | json (default, mengembalikan URL & Base64) atau wav (stream biner audio langsung). |
Contoh Kode Integrasi API Multi-Speaker
curl -X POST "https://aistudio.id/v1/audio/speech" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-multi",
"input": "Andi: Halo Siti, selamat pagi!\nSiti: Pagi juga Andi! Senang bisa bertemu lagi.",
"speakers": [
{"speaker": "Andi", "voice": "Puck"},
{"speaker": "Siti", "voice": "Kore"}
],
"response_format": "json"
}'
Contoh Respons Berhasil (JSON)
{
"success": true,
"audio_url": "https://aistudio.id/uploads/ai_gallery/audio/voice_1727548800_abc123.wav",
"mime_type": "audio/wav",
"speakers": {
"Andi": "Puck",
"Siti": "Kore"
},
"text": "Andi: Halo Siti, selamat pagi!\nSiti: Pagi juga Andi! Senang bisa bertemu lagi.",
"duration_estimate": 4.5
}
Engine video serbaguna bertenaga Google Omni AI dengan durasi klip 10 Detik Tetap dan render cepat (~50–55 detik). Mendukung 3 mode operasi komprehensif: Text to Video (t2v), Start Frame (sfv), dan Multi-Foto Komposisi (i2v).
google-omni
Tarif: 20 Koin / video
Durasi: 10.00 Detik Tetap
Output: File Video MP4 (H.264)
3 Mode: t2v, sfv, i2v
| Mode | Nama Mode | Input Media | Parameter Wajib | Estimasi Waktu |
|---|---|---|---|---|
t2v |
Text to Video | Tidak ada (naskah teks murni) | prompt, ratio |
~50 detik |
sfv |
Start Frame to Video | 1 Gambar Awal (media[0]) |
prompt, media, ratio |
~55 detik |
i2v |
Ingredients to Video | 1–3 Foto Acuan (media[]) |
prompt, media, ratio |
~55 detik |
curl -X POST https://aistudio.id/v1/video/generations \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-H "Content-Type: application/json" \
-d '{
"model": "google-omni",
"mode": "t2v",
"prompt": "Sebuah kapal layar megah melintasi samudera luas saat kabut fajar terbelah sinar matahari keemasan",
"ratio": 1
}'
curl -X POST https://aistudio.id/v1/video/generations \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-H "Content-Type: application/json" \
-d '{
"model": "google-omni",
"mode": "sfv",
"prompt": "Mulai dari foto ini, kamera zoom dinamis mengikuti langkah karakter ke dalam ruangan bernuansa neon",
"ratio": 1,
"media": [
"data:image/jpeg;base64,/9j/4AAQSkZJRg..."
]
}'
curl -X POST https://aistudio.id/v1/video/generations \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-H "Content-Type: application/json" \
-d '{
"model": "google-omni",
"mode": "i2v",
"prompt": "Animasi dinamis mempertemukan kedua karakter dari foto acuan di jalanan Tokyo masa depan",
"ratio": 1,
"media": [
"data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"data:image/jpeg;base64,/9j/4AAQSkZJRg..."
]
}'
GET https://aistudio.id/v1/video/generations/4a48e371c9d24f5ba1e83b77d2c05e19
Header: Authorization: Bearer API_KEY_MILIKMU
const fs = require('fs');
const API_BASE = 'https://aistudio.id/v1';
const API_KEY = 'API_KEY_MILIKMU';
async function generateOmniVideo() {
// 1. Submit Job Google Omni
const submitRes = await fetch(`${API_BASE}/video/generations`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'google-omni',
mode: 't2v',
prompt: 'Sebuah kapal layar mengarungi lautan lepas saat matahari terbit',
ratio: 1 // 1 = 16:9 Landscape, 2 = 9:16 Portrait
})
});
const submitData = await submitRes.json();
console.log('Tiket Job Omni:', submitData.job_id);
// 2. Polling status setiap 3 detik hingga selesai
let jobData;
while (true) {
const pollRes = await fetch(`${API_BASE}/video/generations/${submitData.job_id}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
jobData = await pollRes.json();
console.log(`Status render: ${jobData.status}...`);
if (jobData.status === 'done' || jobData.status === 'failed') break;
await new Promise(r => setTimeout(r, 3000));
}
// 3. Download hasil video MP4 jika sukses
if (jobData.status === 'done' && jobData.outputs && jobData.outputs.length > 0) {
const downloadUrl = jobData.outputs[0].download_url;
console.log('Mengunduh video dari:', downloadUrl);
const vidRes = await fetch(downloadUrl, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const buffer = Buffer.from(await vidRes.arrayBuffer());
fs.writeFileSync('output_omni.mp4', buffer);
console.log('✅ Video berhasil disimpan ke file output_omni.mp4');
} else {
console.error('❌ Render video gagal:', jobData.error || 'Unknown error');
}
}
generateOmniVideo();
Tingkatkan resolusi foto buram, artwork AI beresolusi rendah, atau gambar katalog e-commerce Anda hingga ketajaman Ultra HD 4K tanpa merusak tekstur visual alami. Ditenagai AI Neural Upscaling berkecepatan tinggi. File hasil tersimpan aman selama 7 Hari.
image-upscale
Tarif: 1.00 Koin / gambar
Maks Ukuran: 5 MB
Target Skala: 1k, 2k, 4k
Format Output: PNG, JPG, WebP
Masa Simpan: 7 Hari
| Parameter (Form-Data) | Tipe | Keterangan |
|---|---|---|
file |
file binary (wajib) | File gambar sumber yang ingin diperbesar (Format: JPG, JPEG, PNG, WebP. Maksimal 5 MB). |
target |
string (opsional) | Pilihan target resolusi: "1k", "2k" (default), atau "4k" (Ultra HD). |
format |
string (opsional) | Format file keluaran: "png" (default, lossless), "jpg", atau "webp". |
quality |
integer (opsional) | Kualitas kompresi visual (1 - 100, default: 95). |
curl -X POST "https://aistudio.id/v1/media/upscale/image" \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-F "file=@/path/ke/foto_input.jpg" \
-F "target=4k" \
-F "format=png" \
-F "quality=95"
{
"success": true,
"action": "v1_media_upscale_image",
"model": "image-upscale",
"media_type": "image",
"media_url": "https://aistudio.id/uploads/creations/images/2026-10/media_1724567920_ab12cd.png",
"download_url": "https://aistudio.id/uploads/creations/images/2026-10/media_1724567920_ab12cd.png",
"coins_deducted": 1.00,
"coins_remaining": 98,
"execution_time_ms": 2340,
"meta": {
"target": "4k",
"format": "png",
"quality": 95
}
}
Ubah video resolusi rendah (360p / 720p) menjadi tajam berkualitas jernih (1080p Full HD hingga 4K UHD) dengan filter visual unsharp sharpening dan framerate preserving. Kecepatan render otomatis dikunci ke mode fast untuk performa optimal. File hasil tersimpan aman selama 7 Hari.
video-upscale
Tarif: 5.00 Koin / video
Maks Durasi: 15 Detik
Maks Ukuran: 20 MB
Output: File Video MP4 (H.264)
Masa Simpan: 7 Hari
| Parameter (Form-Data) | Tipe | Keterangan |
|---|---|---|
file |
file binary (wajib) | File video yang akan di-upscale (Format: MP4, MOV, WebM. Maksimal 20 MB dan durasi maks. 15 detik). |
target |
string (opsional) | Target resolusi video: "1k" (720p/1080p), "2k" (default, 1440p), atau "4k" (2160p Ultra HD). |
speed |
string (opsional) | Kecepatan render: "fast" (default & dioptimalkan untuk kecepatan pemrosesan cepat). |
sharpen |
string (opsional) | Intensitas penajaman visual: "none", "low", "medium" (default), atau "high". |
curl -X POST "https://aistudio.id/v1/media/upscale/video" \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-F "file=@/path/ke/video_720p.mp4" \
-F "target=2k" \
-F "speed=fast" \
-F "sharpen=medium"
{
"success": true,
"action": "v1_media_upscale_video",
"model": "video-upscale",
"media_type": "video",
"media_url": "https://aistudio.id/uploads/creations/videos/2026-10/media_1724567950_8f90ea.mp4",
"download_url": "https://aistudio.id/uploads/creations/videos/2026-10/media_1724567950_8f90ea.mp4",
"coins_deducted": 5.00,
"coins_remaining": 93,
"execution_time_ms": 14500,
"meta": {
"target": "2k",
"speed": "fast",
"sharpen": "medium"
}
}
Gabungkan 2 atau lebih potongan klip video berurutan secara instan tanpa re-encoding lambat melalui teknologi stream concat engine (~0.5 detik). File hasil otomatis di-index ulang (faststart) sehingga dapat langsung di-preview atau diputar di browser. File hasil tersimpan aman selama 7 Hari.
video-merge
Tarif: 5.00 Koin / video
Kecepatan: ~0.5 Detik (Instan)
Maks Klip: 10 Klip
Maks Durasi: 5 Menit
Maks Ukuran: 200 MB
Output: File Video MP4 (H.264)
Masa Simpan: 7 Hari
| Parameter (Form-Data) | Tipe | Keterangan |
|---|---|---|
videos[] |
array file binary (wajib) | Daftar 2 hingga 10 file video (MP4, MOV. Total durasi maksimal 5 menit, total ukuran berkas maksimal 200 MB) yang akan digabungkan secara berurutan. |
curl -X POST "https://aistudio.id/v1/media/merge" \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-F "videos[]=@klip_bagian_1.mp4" \
-F "videos[]=@klip_bagian_2.mp4" \
-F "videos[]=@klip_bagian_3.mp4"
{
"success": true,
"action": "v1_media_merge_video",
"model": "video-merge",
"media_type": "video",
"media_url": "https://aistudio.id/uploads/creations/videos/2026-10/media_1724567990_merged.mp4",
"download_url": "https://aistudio.id/uploads/creations/videos/2026-10/media_1724567990_merged.mp4",
"coins_deducted": 5.00,
"coins_remaining": 92,
"execution_time_ms": 680,
"meta": {
"videos_count": 3,
"merge_mode": "concat_instant"
}
}
Bersihkan video dari deteksi kesamaan algoritma platform (Shadowban / Duplicate Content Penalty) di TikTok, Instagram Reels, dan YouTube Shorts. Memodifikasi hash perseptual visual (pHash), menyisipkan noise mikro tak kasat mata, pergeseran frekuensi audio akustik, serta menghapus seluruh jejak metadata asli. File hasil tersimpan aman selama 7 Hari.
video-antidup
Tarif: 5.00 Koin / video
Mode Rekomendasi: Medium
Output: File Video MP4 (H.264)
Masa Simpan: 7 Hari
| Parameter (Form-Data) | Tipe | Keterangan |
|---|---|---|
file |
file binary (wajib) | File video sumber (Format: MP4, MOV. Maksimal 50 MB). |
mode |
string (opsional) | Tingkat intensitas bypass: "light", "medium" (default & sangat disarankan), "heavy", atau "extreme". |
strip_metadata |
integer (opsional) | Hapus seluruh metadata EXIF / QuickTime jejak perangkat: 1 (default, aktif) atau 0. |
noise |
integer (opsional) | Sisipkan mikro-noise visual tak kasat mata untuk memecah signature pHash: 1 (default) atau 0. |
mirror |
integer (opsional) | Cerminkan video secara horizontal (flip): 1 atau 0 (default). |
cut_head |
integer (opsional) | Pangkas mikro 0.1 detik di awal klip untuk mengubah timestamp: 1 atau 0 (default). |
curl -X POST "https://aistudio.id/v1/media/anti-duplicate" \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-F "file=@/path/ke/video_sumber.mp4" \
-F "mode=medium" \
-F "strip_metadata=1" \
-F "noise=1" \
-F "mirror=0" \
-F "cut_head=0"
{
"success": true,
"action": "v1_media_antidup_video",
"model": "video-antidup",
"media_type": "video",
"media_url": "https://aistudio.id/uploads/creations/videos/2026-10/media_1724568010_antidup.mp4",
"download_url": "https://aistudio.id/uploads/creations/videos/2026-10/media_1724568010_antidup.mp4",
"coins_deducted": 5.00,
"coins_remaining": 89,
"execution_time_ms": 4210,
"meta": {
"mode": "medium",
"strip_metadata": 1,
"noise": 1,
"mirror": 0,
"cut_head": 0
}
}
Gunakan endpoint ini untuk mengunggah gambar, dokumen PDF, file audio, atau video dari aplikasi frontend/klien. Server akan menyimpan file secara aman dan mengembalikan URL Publik yang aktif selama 24 jam sehingga dapat langsung dimasukkan ke dalam payload image_url atau image di API AI lainnya.
- Tanpa Server Sendiri: Anda tidak perlu menyiapkan hosting / AWS S3 terpisah untuk menyimpan foto pengguna.
- Pembersihan Otomatis: File otomatis dihapus setelah 24 jam sehingga hemat ruang penyimpanan.
- Dukungan CORS Penuh: Dapat dipanggil langsung dari browser HTML menggunakan
FormData.
// 1. Upload File Gambar dari input file HTML
const fileInput = document.querySelector('input[type="file"]');
const formData = new FormData();
formData.append('file', fileInput.files[0]);
const uploadRes = await fetch('https://aistudio.id/v1/media/upload', {
method: 'POST',
headers: {
'Authorization': 'Bearer API_KEY_MILIKMU'
},
body: formData
});
const fileData = await uploadRes.json();
console.log('URL Publik Gambar:', fileData.url);
// 2. Kirim URL Publik tersebut langsung ke endpoint Vision / Chat
const chatRes = await fetch('https://aistudio.id/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer API_KEY_MILIKMU'
},
body: JSON.stringify({
model: 'gemini-3-1-flash',
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'Tolong analisa foto yang baru saya upload ini:' },
{ type: 'image_url', image_url: { url: fileData.url } }
]
}
]
})
});
const chatData = await chatRes.json();
console.log(chatData.choices[0].message.content);
curl -X POST https://aistudio.id/v1/media/upload \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-F "file=@/path/to/foto_produk.jpg"
{
"success": true,
"url": "https://aistudio.id/uploads/temp_media/media_1724567890_9a8b7c6d5e4f3a2b.jpg",
"public_url": "https://aistudio.id/uploads/temp_media/media_1724567890_9a8b7c6d5e4f3a2b.jpg",
"filename": "media_1724567890_9a8b7c6d5e4f3a2b.jpg",
"original_name": "foto_produk.jpg",
"mime_type": "image/jpeg",
"size_bytes": 1048576,
"created_at": "2026-08-26T11:20:00+07:00",
"expires_at": "2026-08-27T11:20:00+07:00",
"expires_in_seconds": 86400,
"note": "Media publik tersimpan selama 24 jam dan siap digunakan langsung sebagai URL pada endpoint AI."
}
Contoh implementasi lengkap pemanggilan API Gateway menggunakan berbagai bahasa pemrograman populer:
# Gunakan flag -N / --no-buffer agar cURL langsung menampilkan stream kata demi kata
curl -N https://aistudio.id/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-H "Authorization: Bearer API_KEY_MILIKMU" \
-d '{
"model": "gemini-3-1-flash",
"messages": [
{"role": "user", "content": "Halo, buatkan puisi pendek tentang teknologi AI!"}
],
"stream": true
}'
from openai import OpenAI
client = OpenAI(
base_url="https://aistudio.id/v1",
api_key="API_KEY_MILIKMU" # Ganti dengan API Key Anda
)
# 1. Contoh Mode Streaming (stream=True)
stream = client.chat.completions.create(
model="gemini-3-1-flash",
messages=[
{"role": "system", "content": "Anda adalah asisten AI yang cerdas."},
{"role": "user", "content": "Jelaskan cara kerja neural network secara singkat!"}
],
stream=True # <-- Cukup set stream=True
)
for chunk in stream:
token = chunk.choices[0].delta.content or ""
print(token, end="", flush=True)
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'https://aistudio.id/v1',
apiKey: process.env.AISTUDIO_API_KEY || 'API_KEY_MILIKMU',
});
async function run() {
const stream = await openai.chat.completions.create({
model: 'gemini-3-1-flash',
messages: [{ role: 'user', content: 'Halo AI Studio!' }],
stream: true, // <-- Streaming aktif
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
}
run();
// Konsumsi streaming respons token-demi-token langsung di browser
async function streamChat(promptText) {
const apiKey = "API_KEY_MILIKMU"; // Ganti dengan API Key Anda
const response = await fetch("https://aistudio.id/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Accept": "text/event-stream",
"Authorization": `Bearer ${apiKey}`
},
body: JSON.stringify({
model: "gemini-3-1-flash",
messages: [{ role: "user", content: promptText }],
stream: true // <-- Set true untuk SSE
})
});
const reader = response.body.getReader();
const decoder = new TextDecoder("utf-8");
let buffer = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const lines = buffer.split("\n");
buffer = lines.pop(); // simpan baris belum selesai
for (const rawLine of lines) {
const line = rawLine.trim();
if (!line || line.startsWith(":") || line === "data: [DONE]") continue;
if (line.startsWith("data: ")) {
try {
const json = JSON.parse(line.slice(6));
const delta = json.choices?.[0]?.delta?.content || "";
if (delta) {
document.getElementById("outputChatBox").innerText += delta;
}
} catch (e) {}
}
}
}
}
<?php
$apiKey = "API_KEY_MILIKMU";
$ch = curl_init("https://aistudio.id/v1/chat/completions");
$payload = [
"model" => "gemini-3-1-flash",
"messages" => [
["role" => "user", "content" => "Halo dari PHP! Tuliskan tips coding rapi."]
],
"stream" => true // <-- Mengaktifkan SSE
];
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Accept: text/event-stream",
"Authorization: Bearer " . $apiKey
],
// Tampilkan chunk teks seketika saat tiba dari server
CURLOPT_WRITEFUNCTION => function($ch, $chunk) {
echo $chunk;
flush();
return strlen($chunk);
}
]);
curl_exec($ch);
curl_close($ch);
?>
API Gateway mengembalikan status code HTTP standar beserta rincian objek error dalam format JSON:
| Status Code | Tipe Error | Penyebab & Solusi |
|---|---|---|
| 400 Bad Request | invalid_request_error |
Parameter tidak lengkap atau model sedang dinonaktifkan oleh admin. |
| 401 Unauthorized | invalid_api_key |
API Key salah, belum diisi, atau telah dicabut. |
| 402 Payment Required | insufficient_quota |
Saldo koin tidak mencukupi atau kuota request harian telah habis. Silakan top up di menu Top Up Koin. |
| 404 Not Found | model_not_found |
Identifier model tidak ditemukan pada sistem. |
| 500 Server Error | server_error |
Terjadi gangguan internal pada server provider AI. Coba kembali beberapa saat lagi. |