# Artificial Intelligence — Zapi reference > Every Artificial Intelligence endpoint on Zapi, with parameters, request shape and an example response. **Base URL:** `https://api-preview.zapi.ink` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a key at https://preview.zapi.ink/dashboard/keys (free tier — 600 req/mo, no credit card). **Response envelope:** `{ status: "success" | "error", message: string, content: }` **Rate limit:** 60 req/min (free tier). Per-endpoint cache TTL is documented below. **Errors:** standard HTTP codes (`401` invalid key, `429` rate limited, `5xx` upstream). Body always has `{ status: "error", message, errors? }`. ```bash curl "https://api-preview.zapi.ink/v1/CATEGORY:SCRAPER/ENDPOINT?param=value" \ -H "x-api-key: $ZAPI_KEY" ``` **Category page:** https://preview.zapi.ink/category/ai **Full catalog:** https://preview.zapi.ink/apis · **Index:** https://preview.zapi.ink/llms-full.txt --- ## Bypass AI (writecream.com) **Category:** ai · **Slug:** `bypass-ai` **Detail page:** https://preview.zapi.ink/api/ai/bypass-ai Humanize AI-generated text — natural rewriting via writecream.com. **Tags:** ai, humanizer, writing ### Humanize Text - **Method:** `POST` - **Endpoint:** `https://api-preview.zapi.ink/v1/ai:bypass-ai/humanize` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `text` | string | body | yes | AI-generated text yang mau di-humanize. Min 1 char, max 10000 char. | **cURL:** ```bash curl -X POST "https://api-preview.zapi.ink/v1/ai:bypass-ai/humanize" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Zapi adalah platform Public REST API yang menyediakan akses ke berbagai layanan scraping dan AI tools secara terpadu." }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api-preview.zapi.ink/v1/ai:bypass-ai/humanize", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "text": "Zapi adalah platform Public REST API yang menyediakan akses ke berbagai layanan scraping dan AI tools secara terpadu." }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api-preview.zapi.ink/v1/ai:bypass-ai/humanize", headers={"x-api-key": "YOUR_API_KEY"}, json={ "text": "Zapi adalah platform Public REST API yang menyediakan akses ke berbagai layanan scraping dan AI tools secara terpadu." }) data = r.json() ``` **Example response:** ```json { "input": "Zapi adalah platform Public REST API yang menyediakan akses ke berbagai layanan scraping dan AI tools secara terpadu, dengan dukungan key-based authentication, rate limiting, dan analytics.", "output": "Zapi adalah platform REST API publik yang menghubungkan layanan scraping dan AI lewat satu akses. Platform ini memakai autentikasi berbasis key, membatasi laju permintaan, dan menyediakan analytics.", "inputLength": 189, "outputLength": 198 } ``` --- ## ChatGPT **Category:** ai · **Slug:** `chatgpt` **Detail page:** https://preview.zapi.ink/api/ai/chatgpt _No endpoints exposed yet._ ## Copilot AI **Category:** ai · **Slug:** `copilot` **Detail page:** https://preview.zapi.ink/api/ai/copilot Microsoft Copilot — chat completion OpenAI-compatible, support streaming SSE **Tags:** ai, copilot, microsoft ### Chat Completion - **Method:** `POST` - **Endpoint:** `https://api-preview.zapi.ink/v1/ai:copilot/chat` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `messages` | array | body | yes | OpenAI-format messages array | | `stream` | boolean | body | no | Stream via SSE (OpenAI delta format). Default false | **cURL:** ```bash curl -X POST "https://api-preview.zapi.ink/v1/ai:copilot/chat" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "system", "content": "Kamu adalah Zapi AI, spesialis platform Zapi - Public Rest API" }, { "role": "user", "content": "Halo, perkenalkan dirimu dalam 1 kalimat." } ], "stream": true }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api-preview.zapi.ink/v1/ai:copilot/chat", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "messages": [ { "role": "system", "content": "Kamu adalah Zapi AI, spesialis platform Zapi - Public Rest API" }, { "role": "user", "content": "Halo, perkenalkan dirimu dalam 1 kalimat." } ], "stream": true }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api-preview.zapi.ink/v1/ai:copilot/chat", headers={"x-api-key": "YOUR_API_KEY"}, json={ "messages": [ { "role": "system", "content": "Kamu adalah Zapi AI, spesialis platform Zapi - Public Rest API" }, { "role": "user", "content": "Halo, perkenalkan dirimu dalam 1 kalimat." } ], "stream": true }) data = r.json() ``` **Example response:** ```json { "id": "chatcmpl-Zb3136hUQuzzchqzccqsC", "model": "copilot", "usage": { "total_tokens": 62, "prompt_tokens": 36, "completion_tokens": 26 }, "object": "chat.completion", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Halo, aku Zapi AI, spesialis platform Zapi yang fokus pada integrasi dan pemanfaatan Public Rest API." }, "finish_reason": "stop" } ], "created": 1779425383 } ``` --- ## Dolphin AI **Category:** ai · **Slug:** `dolphin` **Detail page:** https://preview.zapi.ink/api/ai/dolphin Dolphin 24B uncensored chat — chat completion OpenAI-compatible, support streaming SSE **Tags:** ai, dphn, uncensored ### Chat Completion - **Method:** `POST` - **Endpoint:** `https://api-preview.zapi.ink/v1/ai:dolphin/chat` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `messages` | array | body | yes | OpenAI-format messages array. Min 1 message, harus ada user role. | | `stream` | boolean | body | no | Stream via SSE (OpenAI delta format). Default false | | `template` | enum(logical|creative|summarize|code-beginner|code-advanced) | body | no | Style template (subtle effect, upstream may ignore). Default `logical` | **cURL:** ```bash curl -X POST "https://api-preview.zapi.ink/v1/ai:dolphin/chat" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "system", "content": "Kamu adalah Zapi AI, spesialis platform Zapi - Public Rest API" }, { "role": "user", "content": "Halo, perkenalkan dirimu dalam 1 kalimat." } ], "stream": true, "template": "logical" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api-preview.zapi.ink/v1/ai:dolphin/chat", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "messages": [ { "role": "system", "content": "Kamu adalah Zapi AI, spesialis platform Zapi - Public Rest API" }, { "role": "user", "content": "Halo, perkenalkan dirimu dalam 1 kalimat." } ], "stream": true, "template": "logical" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api-preview.zapi.ink/v1/ai:dolphin/chat", headers={"x-api-key": "YOUR_API_KEY"}, json={ "messages": [ { "role": "system", "content": "Kamu adalah Zapi AI, spesialis platform Zapi - Public Rest API" }, { "role": "user", "content": "Halo, perkenalkan dirimu dalam 1 kalimat." } ], "stream": true, "template": "logical" }) data = r.json() ``` **Example response:** ```json { "id": "chatcmpl-s4mi5m98ki", "model": "dolphinserver:24B", "usage": { "total_tokens": 42, "prompt_tokens": 26, "completion_tokens": 16 }, "object": "chat.completion", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Halo, saya Zapi AI, spesialis platform Zapi - Public Rest API." }, "finish_reason": "stop" } ], "created": 1779434368 } ``` --- ## NSFW Checker (Nyckel) **Category:** ai · **Slug:** `nsfw-checker` **Detail page:** https://preview.zapi.ink/api/ai/nsfw-checker Image safety classifier — detect NSFW/adult content via Nyckel ML model. **Tags:** ai, moderation, nsfw ### Check Image - **Method:** `POST` - **Endpoint:** `https://api-preview.zapi.ink/v1/ai:nsfw-checker/check` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `image` | file | form | yes | Upload gambar (jpg, png, webp, gif, bmp). Max 10MB. | **cURL:** ```bash curl -X POST "https://api-preview.zapi.ink/v1/ai:nsfw-checker/check" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "image": "photo.jpg" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api-preview.zapi.ink/v1/ai:nsfw-checker/check", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "image": "photo.jpg" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api-preview.zapi.ink/v1/ai:nsfw-checker/check", headers={"x-api-key": "YOUR_API_KEY"}, json={ "image": "photo.jpg" }) data = r.json() ``` **Example response:** ```json { "raw": { "labelId": "label_n2ian8w116lhxuyk", "labelName": "Not Porn", "confidence": 0.9992963344772202 }, "isNsfw": false, "fileName": "96fc0fc145454ad9457b51e17ae68a55.jpg", "fileSize": 67105, "mimeType": "image/jpeg", "labelName": "Not Porn", "confidence": 0.9992963344772202 } ``` --- ## Perplexity AI **Category:** ai · **Slug:** `perplexity` **Detail page:** https://preview.zapi.ink/api/ai/perplexity AI-powered web search with citations — answer + source results dari web, scholar, social, finance. **Tags:** ai, search, perplexity ### Chat Completion - **Method:** `POST` - **Endpoint:** `https://api-preview.zapi.ink/v1/ai:perplexity/chat` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | body | yes | Pertanyaan / search query buat Perplexity. Min 1 char, max 2000 char. | | `mode` | enum(concise|copilot) | body | no | Mode jawaban. `concise` = ringkas. `copilot` = lebih detail | | `source_web` | boolean | body | no | Search di web umum. Default true | | `source_academic` | boolean | body | no | Search di sumber akademik (Google Scholar). Default false | | `source_social` | boolean | body | no | Search di social media (Reddit, dsb). Default false | | `source_finance` | boolean | body | no | Search di sumber finansial (SEC EDGAR). Default false | | `stream` | boolean | body | no | Stream answer via SSE (OpenAI delta format). Default false. Note: pseudo-stream — upstream di-buffer dulu via FlareSolverr lalu di-chunk emit. | **cURL:** ```bash curl -X POST "https://api-preview.zapi.ink/v1/ai:perplexity/chat" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "carikan berita terbaru yang ada di indonesia!", "mode": "concise", "source_web": true, "source_academic": false, "source_social": false, "source_finance": false, "stream": true }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api-preview.zapi.ink/v1/ai:perplexity/chat", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "query": "carikan berita terbaru yang ada di indonesia!", "mode": "concise", "source_web": true, "source_academic": false, "source_social": false, "source_finance": false, "stream": true }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api-preview.zapi.ink/v1/ai:perplexity/chat", headers={"x-api-key": "YOUR_API_KEY"}, json={ "query": "carikan berita terbaru yang ada di indonesia!", "mode": "concise", "source_web": true, "source_academic": false, "source_social": false, "source_finance": false, "stream": true }) data = r.json() ``` **Example response:** ```json "{\"id\": \"pplxsrch-22852bb2\", \"mode\": \"concise\", \"query\": \"carikan berita terbaru yang ada di indonesia!\", \"answer\": \"Berita terbaru di Indonesia saat ini bisa dilihat dari beberapa sumber terkemuka berikut. Saya rangkum inti-inti yang sedang ramai diberitakan:\\\n\\\n- Politik dan hukum:\\\n - Berbagai pemberitaan terkait dinamika kebijakan nasional, potensi perubahan regulasi, dan perkembangan kasus hukum besar sering muncul setiap hari melalui situs berita nasional seperti Kompas, CNN Indonesia, Merdeka, dan Detik. Pastikan cek rilis resmi dan pernyataan pemerintah untuk konteks yang akurat.[11][14][17]\\\n- Ekonomi dan bisnis:\\\n - Update seputar kondisi ekonomi Indonesia, investasi, serta laporan perusahaan publik biasanya terlihat di Merdeka, Liputan6, dan Detik News. Untuk analisis data resmi, lihat sumber pemerintah dan laporan keuangan perusahaan publik.[10][13][14]\\\n- Peristiwa terkini:\\\n - Berita peristiwa, kecelakaan, dan kejadian kriminal sering dipublikasikan harian di DetikNews, Liputan6, dan CNN Indonesia. Jika Anda ingin berita spesifik (misalnya soal suatu daerah atau topik tertentu), beritahu saya agar bisa difokuskan.[14][15][11]\\\n\\\nCara mendapatkan berita terbaru yang relevan dengan kebutuhan Anda:\\\n- Tentukan topik utama: politik, ekonomi, teknologi, olahraga, atau hiburan.\\\n- Tentukan wilayah fokus jika Anda perlu berita Indonesia secara lokal (mis. Jawa, Sumatera, atau nasional).\\\n- Beri tahu rentang waktu yang diinginkan (hari ini, 24 jam terakhir, atau minggu ini).\\\n\\\nJika Anda ingin, saya bisa:\\\n- Mengumpulkan 5-10 berita terpopuler hari ini dari sumber-sumber terpercaya yang Anda pilih.\\\n- Menyajikan ringkasan 1-2 kalimat untuk setiap artikel, beserta tautan asli.\\\n- Membuat pilihan artikel terfavorit berdasarkan topik yang Anda minati (misalnya kebijakan baru, dampak ekonomi, atau peristiwa regional).\\\n\\\nBeritahu saya preferensi Anda (topik, wilayah, rentang waktu), nanti saya akan siapkan rangkuman yang langsung bisa Anda baca.\", \"sources\": [\"web\", \"scholar\", \"social\", \"edgar\"], \"stepTypes\": [\"INITIAL_QUERY\", \"SEARCH_WEB\", \"SEARCH_RESULTS\", \"FINAL\"], \"searchResults\": [{\"url\": \"https://journal.poltekim.ac.id/jlbp/article/view/694\", \"name\": \"URGENSI PENEGAKAN HUKUM KEIMIGRASIAN MELALUI PEMBAHARUAN DESAIN PASPOR NEGARA REPUBLIK INDONESIA DAN FITUR KEAMANAN TERBARU\", \"snippet\": \"Paspor sebagai dokumen perjalanan resmi merupakan salah satu instrumen penting dalam sistem keimigrasian suatu negara. Pembaharuan desain paspor Indonesia yang diluncurkan pada 17 Agustus 2024 mencerminkan upaya pemerintah dalam meningkatkan keamanan dan integritas dokumen perjalanan. Dengan penerapan tema wastra yang mencerminkan kekayaan budaya Indonesia, serta penerapan fitur keamanan terbaru, paspor ini diharapkan dapat meminimalisir pemalsuan dan penyalahgunaan. Penelitian ini bertujuan untuk menganalisis perubahan desain paspor Indonesia dari perspektif penegakan hukum keimigrasian dan untuk mengevaluasi efektivitas fitur keamanan baru dalam melindungi identitas Warga Negara Indonesia (WNI). Metode yang digunakan dalam penelitian ini adalah analisis kualitatif dengan mengumpulkan data dari berbagai sumber, termasuk literatur hukum, berita, dan wawancara dengan ahli keimigrasian. Hasil penelitian menunjukkan bahwa perubahan ini tidak hanya merupakan langkah simbolis, tetapi juga membawa implikasi nyata terhadap sistem keimigrasian dan perlindungan identitas.\"}, {\"url\": \"https://jtiik.ub.ac.id/index.php/jtiik/article/view/8719\", \"name\": \"BIJAKAWEB: Platform Berbasis Web Untuk Deteksi Hate Speech Pada Komentar Berita Bahasa Indonesia\", \"snippet\": \"Jumlah pengguna internet di Indonesia telah mencapai lebih dari 221 juta jiwa, mayoritas penduduk Indonesia menggunakan internet dengan tujuan agar tetap update dengan berita terbaru. Detik, Kompas, dan CNNIndonesia merupakan portal berita daring favorit sebagian besar penduduk Indonesia. Fitur komentar pada portal berita yang ada saat ini memungkinkan pembaca berita dapat memberikan umpan-balik terhadap berita, namun sering kali tidak terkontrol, memicu munculnya ujaran kebencian. Meskipun tersedia fitur moderasi seperti \\\"Laporkan\\\", pendekatan manual ini sering kali lambat dan kurang efektif. Penelitian ini bertujuan untuk mengembangkan sistem deteksi otomatis terhadap ujaran kebencian pada komentar berita daring. Proses penelitian dimulai dengan scraping lebih dari 15 ribu data komentar dari portal berita menggunakan library Python, dilanjutkan dengan pelabelan manual ke dalam dua kategori: “Hate” dan “Non-Hate,” dengan jumlah data yang berhasil dilabeli sebanyak 11.478, yang dibagi ke dalam dua kelas seimbang. Dataset yang telah berlabel kemudian digunakan untuk fine-tuning model IndoBERT selama 14 epoch, dengan akurasi terbaik sebesar 95,91% yang dicapai pada epoch ke-14. Model dengan akurasi terbaik diimplementasikan pada platform web yang diberi nama BijakaWeb (Web Bijak Dalam Berkomentar) dengan menggunakan framework Django. Penelitian ini menghasilkan beberapa kontribusi penting, termasuk tersedianya dataset baru untuk penelitian relevan, model fine-tuned IndoBERT ...\"}, {\"url\": \"https://www.semanticscholar.org/paper/6c5f469f9266ee47a6fae767cd9e114b6edaa9d0\", \"name\": \"Demo AHOK, 4 November Jakarta di serbu Ormas Islam Indonesia | Berita Harian, Informasi Terbaru, Terkini Terpercaya\", \"snippet\": \"\"}, {\"url\": \"https://www.semanticscholar.org/paper/fe6f589beef967cbe8de1a5c707b325bfef09d0d\", \"name\": \"Renungkan, Hal ini Kadang Membuat Kita Ingin Keluar dari Indonesia | Berita Harian, Informasi Terbaru, Terkini Terpercaya\", \"snippet\": \"\"}, {\"url\": \"https://www.semanticscholar.org/paper/f5a98eb883216ea7690d1158afec45ce6d19cd29\", \"name\": \"Video: Pemuda Pancasila bubarkan aksi Makar warga Papua di Surabaya | Liputan Indonesia berita harian, Kabar hari ini, terbaru terkini, hingga dunia\", \"snippet\": \"\"}, {\"url\": \"https://www.semanticscholar.org/paper/da84748b905883046761b34abb5146bb8a586210\", \"name\": \"Pakde Karwo Usulkan Penyederhanaan Proses Pengajuan DAK | Liputan Indonesia berita harian, Kabar hari ini, terbaru terkini, hingga dunia\", \"snippet\": \"\"}, {\"url\": \"https://www.semanticscholar.org/paper/8f8784ba6f174e9e4975dddd6ae2e7fcec03caf2\", \"name\": \"PAMMI Adakan Bakti Sosial dengan 500 Anak Yatim Piatu Di Surabaya | Berita Harian, Informasi Terbaru, Terkini Terpercaya\", \"snippet\": \"\"}, {\"url\": \"https://www.semanticscholar.org/paper/3a5062e2371c1079e50db6f91993f8f206e4acc4\", \"name\": \"TUMBAL - The Dark Offering Game Horor Hadir Di Play Store | Berita Harian, Informasi Terbaru, Terkini Terpercaya\", \"snippet\": \"\"}, {\"url\": \"https://indonesia.travel/id/id/news-update\", \"name\": \"Berita Terbaru\", \"snippet\": \"\"}, {\"url\": \"https://www.merdeka.com\", \"name\": \"Berita Terkini, Kabar Terbaru Hari Ini Indonesia dan Internasional - merdeka.com\", \"snippet\": \"merdeka, com, Berita, Politik, Ekonomi, Hukum, Kriminal, Olahraga, Sepak, Bola, Teknologi, Otomotif, Artis, di, Indonesia, dan, Dunia\"}, {\"url\": \"https://www.cnnindonesia.com/nasional\", \"name\": \"Berita Terkini Nasional - CNN Indonesia\", \"snippet\": \"CNNIndonesia.com menyajikan berita terbaru, terkini Indonesia, dunia, seputar politik, hukum kriminal, peristiwa\"}, {\"url\": \"https://liveberita.com\", \"name\": \"berita terbaru Indonesia, analisis | Latest breaking Indonesian news ...\", \"snippet\": \"\"}, {\"url\": \"https://www.liputan6.com\", \"name\": \"Berita Terkini, Kabar Terbaru Hari Ini Indonesia dan Dunia - Liputan6.com\", \"snippet\": \"Berita hari ini Indonesia dan Dunia, kabar terbaru terkini. Situs berita terpercaya dari politik, peristiwa, bisnis, bola, tekno hingga gosip artis\"}, {\"url\": \"https://news.detik.com/berita/\", \"name\": \"Berita peristiwa dan politik terbaru di Indonesia dan luar negeri\", \"snippet\": \"Ulasan berita hari ini dari peristiwa, kecelakaan, kriminal, hukum, berita unik, Politik, dan liputan khusus di Indonesia dan Internasional\"}, {\"url\": \"https://news.detik.com\", \"name\": \"detikNews - Berita hari ini di Indonesia dan Internasional\", \"snippet\": \"Info berita terbaru hari ini baik peristiwa, kecelakaan, kriminal, hukum, berita unik, Politik, dan liputan khusus di Indonesia dan Internasional\"}, {\"url\": \"https://diberita.com\", \"name\": \"diberita.com - Bacaan Masyarakat Indonesia\", \"snippet\": \"Bacaan Masyarakat Indonesia\"}, {\"url\": \"https://www.kompas.com\", \"name\": \"Berita Terkini Hari Ini, Kabar Akurat Terpercaya - Kompas.com\", \"snippet\": \"Kompas.com - Berita Indonesia dan Dunia Terkini Hari Ini, Kabar Harian Terbaru Terpercaya Terlengkap Seputar Politik, Ekonomi, Travel, Teknologi, Otomotif, Bola\"}, {\"url\": \"https://www.antaranews.com/news\", \"name\": \"Berita terkini dan terpercaya Indonesia - ANTARA News\", \"snippet\": \"Berita terkini dan terpercaya dari Indonesia dan dunia seputar politik, ekonomi, bisnis, humaniora, gaya hidup, hiburan, sepak bola, otomotif\"}]}" ``` --- ## Qwen TTS **Category:** ai · **Slug:** `qwen-tts` **Detail page:** https://preview.zapi.ink/api/ai/qwen-tts Text-to-speech via Qwen TTS — 7 voice characters, instant audio URL. **Tags:** ai, tts, qwen ### Synthesize - **Method:** `POST` - **Endpoint:** `https://api-preview.zapi.ink/v1/ai:qwen-tts/synthesize` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `text` | string | body | yes | Teks yang mau di-convert ke audio. Min 1 char, max 1000 char. | | `voice` | enum(Dylan|Sunny|Jada|Cherry|Ethan|Serena|Chelsie) | body | no | Voice character. Pilihan: Dylan, Sunny, Jada, Cherry, Ethan, Serena, Chelsie | **cURL:** ```bash curl -X POST "https://api-preview.zapi.ink/v1/ai:qwen-tts/synthesize" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Halo, selamat datang di Zapi.", "voice": "Sunny" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api-preview.zapi.ink/v1/ai:qwen-tts/synthesize", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "text": "Halo, selamat datang di Zapi.", "voice": "Sunny" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api-preview.zapi.ink/v1/ai:qwen-tts/synthesize", headers={"x-api-key": "YOUR_API_KEY"}, json={ "text": "Halo, selamat datang di Zapi.", "voice": "Sunny" }) data = r.json() ``` **Example response:** ```json { "text": "Halo, selamat datang di Zapi. Public REST API untuk segala kebutuhan.", "voice": "Sunny", "format": "wav", "audioUrl": "https://qwen-qwen-tts-demo.hf.space/gradio_api/file=/tmp/gradio/bbb32daa320fd92b69511a4ef35b370f56ec1024866ff66be9d8d46da7577508/tmp90mx5ccq.wav", "sessionHash": "p15ci5igu1" } ``` ---