Untuk pengembang

Hosting yang dapat Anda kendalikan dari kode

Zinn Digital® adalah platform yang mengutamakan API. API mesin yang sama yang mendukung dasbor kami adalah API yang Anda dapatkan — memiliki versi, mengutamakan spesifikasi, dan didokumentasikan 100% pada waktu pembuatan, lengkap dengan SDK yang dihasilkan, CLI, penyedia Terraform, webhook bertanda tangan, dan server MCP di atasnya. Apa pun yang Anda gunakan untuk bekerja — terminal, pipeline, file status, atau agen AI — platform ini akan meresponsnya.

  • 650.000+situs dihosting di seluruh dunia
  • 1Spesifikasi OpenAPI tempat setiap alat dihasilkan
  • 4SDK klien — TypeScript, Python, PHP, Go
  • OAuth 2.1akses agen AI yang dicakup dan dapat dicabut

Satu API. Semua antarmuka menggunakannya.

Kebanyakan penyedia hosting menambahkan API ke panel kontrol sebagai renungan belaka, dan itu terlihat — separuh fitur panel tidak pernah berfungsi secara optimal. Kami membangunnya dengan cara sebaliknya. Dasbor, konsol admin, CLI, penyedia Terraform, server MCP, dan integrasi Anda sendiri semuanya menggunakan engine API yang sama. Jika Anda dapat melakukannya di panel, Anda dapat melakukannya dalam kode.

Utamakan spesifikasi, bukan dokumentasi nanti

Spesifikasi OpenAPI adalah sumber kebenaran, dan tidak ada endpoint yang dirilis kecuali spesifikasi tersebut memuatnya. Satu aturan tunggal itulah yang membuat API publik terdokumentasi sepenuhnya pada saat pembuatan alih-alih pada akhirnya — tidak ada sudut yang tidak terdokumentasi, karena endpoint yang tidak terdokumentasi tidak dapat eksis.

Dibuat, tidak pernah dikelola secara manual

Dokumentasi referensi interaktif, keempat SDK klien, sebagian besar CLI, dan kerangka penyedia Terraform semuanya dihasilkan dari satu spesifikasi tersebut. Satu sumber, banyak artifak, selalu selaras — Anda tidak akan pernah mengejar dokumentasi yang tidak sinkron dengan implementasinya.

Diberi versi dengan kebijakan penghentian

Titik akhir berada di bawah /v1 dengan kebijakan penghentian yang dipublikasikan dan catatan perubahan. Anda akan diberi tahu sebelum ada perubahan secara tertulis, alih-alih mengetahuinya dari build yang gagal.

Teruji-kontrak di CI

Uji kontrak antara implementasi dan spesifikasi serta *linting* OpenAPI dijalankan pada setiap perubahan. Perbedaan antara kode dan kontrak akan menggagalkan *build* — sehingga spesifikasi yang Anda gunakan untuk membuat klien Anda adalah spesifikasi yang benar-benar dipatuhi oleh server.

Otentikasi, pelingkupan, dan hal-hal yang menjadi kendala dalam skala besar

Dua cara untuk masuk, satu prinsip seragam di balik keduanya. Mana pun yang Anda gunakan, pemeriksaan izin dan isolasi tingkat basis data yang sama akan tetap berlaku.

Kunci API, per organisasi

Kunci terlihat seperti zdk_<mode>_<prefix>_<secret>. Hanya hash SHA-256 dari secret yang disimpan — kami tidak dapat menampilkan kunci kepada Anda lagi setelah diterbitkan, begitu pula siapa pun yang mengakses database kami. Kunci memiliki cakupan, dapat dicabut, dan diterbitkan per organisasi, bukan per orang.

Mode langsung dan uji, dipisahkan

Kunci sandbox terpisah dari kunci produksi dan berjalan pada mode sandbox: tidak ada penagihan nyata, tidak ada provisioning nyata. Pengujian integrasi Anda dapat menghujani API tanpa mengeluarkan uang atau membangun server.

OIDC untuk manusia

Sesi pengguna diautentikasi dengan JWT yang diterbitkan oleh Keycloak, diverifikasi terhadap kunci publik realm, dan di-resolve ke objek Principal yang sama seperti yang dilakukan oleh kunci API. Endpoint dibatasi pada kunci izin granular seperti sites.create atau apikeys.manage, yang diperiksa per organisasi — izin di satu organisasi tidak memberikan akses di organisasi lain yang terpisah dan tidak terkait, meskipun izin tersebut berlaku untuk organisasi-organisasi yang bertingkat di bawahnya.

Keamanan tingkat baris di bawahnya

Setiap permintaan tenant berjalan dalam sebuah transaksi dengan cakupan organisasi Postgres yang diatur dari prinsipal, sehingga isolasi ditegakkan oleh basis data, bukan oleh filter ORM yang mungkin terlupakan oleh seseorang. Filter queryset tetap ada sebagai pertahanan berlapis.

Dibangun untuk mesin, bukan sekadar untuk demo

Sebuah API mudah dibuat tampak menarik di dalam README dan sulit membuatnya tetap stabil di bawah lalu lintas nyata. Bagian-bagian inilah yang kami perhatikan dengan seksama, karena bagian-bagian itulah yang sering merusak integrasi pada pukul tiga pagi.

Satu detail yang perlu diperhatikan, karena hal ini memengaruhi perilaku kerja massal: respons 409 untuk domain duplikat menjawab pertanyaan "apakah nama host ini di-host di sini?" untuk penyewa mana pun, yang merupakan oracle enumerasi dan risiko de-anonimisasi nyata terhadap Footprint-Free. Melakukan pelambatan (throttling) pada pembuatan situs merupakan perbaikan yang malas dan akan merusak produk penyediaan massal secara total. Sebagai gantinya, hanya upaya domain duplikat yang ditolak yang dibatasi anggarannya, per prinsipal. Pembuatan yang berhasil sama sekali tidak akan dikenakan biaya—sehingga Anda dapat melakukan penyediaan secara massal sepanjang hari, dan penyelidikan akan segera dihentikan.

  • Amplop kesalahan yang konsisten pada setiap kegagalan: kode, pesan untuk manusia, detail tingkat bidang opsional, dan request_id yang dapat Anda sebutkan kepada dukungan. Kesalahan validasi mengembalikan 422 dengan nama bidang yang bermasalah.
  • Kunci idempotensi pada POST, dengan catatan *replay* yang ditulis saat *commit* alih-alih secara *inline* — sehingga percobaan ulang tidak akan pernah memutar ulang respons 201 tersimpan yang merujuk ke baris yang tidak pernah di-*commit*. Permintaan yang gagal langsung melepaskan kuncinya yang sedang berjalan, sehingga status 422 tidak akan mengunci percobaan ulang Anda yang telah diperbaiki.
  • Penagihan kursor sebagai *keyset* di atas UUIDv7 — stabil di bawah penulisan konkuren, tanpa pergeseran halaman saat baris disisipkan di tengah pemindaian.
  • RateLimit-Remaining pada respons, sehingga klien yang dihasilkan dapat melakukan back off secara cerdas alih-alih menebak-nebak.
  • Sumber daya yang berada di luar cakupan mengembalikan status 404, bukan 403 — status 403 akan mengonfirmasi bahwa sumber daya tersebut ada. Memfilter berdasarkan organisasi di luar cakupan Anda akan mengembalikan halaman kosong dengan alasan yang sama.
  • Pembuatan situs adalah pendaftaran, bukan provisi: POST /v1/sites mengembalikan 201 dengan status pending dan tidak pernah memblokir proses build. Peristiwa tersebut ditulis ke outbox transaksional dalam transaksi yang sama dengan barisnya, sehingga suatu situs ada jika dan hanya jika provisinya dijamin untuk diminta.

SDK, CLI, dan penyedia Terraform

Tiga konsumen dengan spesifikasi yang sama, untuk tiga cara kerja yang berbeda.

SDK Klien

Dibuat untuk TypeScript, Python, PHP, dan Go, mengikuti spesifikasi sehingga endpoint baru langsung tersedia di bahasa Anda tanpa harus menunggu wrapper buatan tangan.

Zinnector®, CLI

Buat kerangka situs WordPress, jalankan secara lokal tanpa ada yang terinstal kecuali Node, lalu sebarkan. Zinnector® melakukan pemeriksaan awal pada proyek Anda terhadap slot tempat Anda akan melakukan penyebaran — versi PHP, diska, jumlah file — dan memberikan peringatan sebelum Anda mendorong daripada sesudahnya. Alat ini juga masuk, mencantumkan situs, menyebarkan, mengelola domain dan DNS, membaca layanan email, membuat cadangan, menjalankan WP-CLI yang masuk daftar izin, memantau log, dan memicu operasi massal. Gratis, berlisensi MIT, dan dibangun di atas API publik yang sama ini.

Penyedia Terraform

Kelola situs, domain, catatan DNS, kotak surat, dan paket sebagai infrastruktur sebagai kode. terraform apply menyediakan hosting, dan lingkungan Anda menjadi dapat direproduksi dan ditinjau alih-alih serangkaian klik yang tidak dicatat oleh siapa pun.

Referensi interaktif

Dokumentasi yang dihasilkan dapat Anda baca dan panggil langsung dari peramban, yang menjelaskan secara persis endpoint yang diimplementasikan oleh server — karena keduanya berasal dari spesifikasi yang sama.

Webhook yang tetap andal meskipun endpoint Anda sedang offline

Di balik platform ini terdapat event spine yang andal: setiap perubahan status menuliskan event ke transactional outbox di Postgres, secara atomik bersama perubahan database, dan sebuah relay mempublikasikannya ke NATS JetStream. Event memiliki tipe dan versi — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending, dan seterusnya.

Berlangganan hal yang Anda peduli

Daftarkan endpoint sebagai WebhookSubscription dan pilih jenis event yang diterimanya. Satu aliran memproses notifikasi, analitik, otomatisasi, dan integrasi Anda secara bersamaan — Anda menggunakan event yang sama dengan yang kami gunakan.

Ditandatangani dengan HMAC

Setiap pengiriman ditandatangani dengan HMAC sehingga Anda dapat memverifikasinya berasal dari kami sebelum Anda menindaklanjutinya.

Dicoba kembali dengan backoff, dan dicatat

Kegagalan pengiriman akan dicoba ulang dengan jeda waktu bertahap dan setiap percobaan dicatat sebagai WebhookDelivery. Anda dapat memeriksa dan mengirim ulang pengiriman dari dasbor alih-alih mengirim email ke dukungan untuk menanyakan apa yang telah kami kirim.

Setidaknya sekali, jadi lakukan deduplikasi berdasarkan id

Pipeline ini secara sengaja menggunakan at-least-once dan bukan berpura-pura menjadi exactly-once. Relay yang mati di tengah proses publikasi akan mengalami kedaluwarsa masa sewa klaimnya dan event-nya dipublikasikan ulang. Lakukan dedupe pada ID amplop dan consumer Anda akan benar secara konstruksi.

Memasukkan kode ke situs

API hanyalah setengah dari kisah pengembang. Setengah sisanya adalah peluncuran.

  • Hubungkan GitHub, GitLab, atau Bitbucket melalui OAuth, dengan kunci deployment yang disimpan di tempat penyimpanan kredensial — bukan di dalam file konfigurasi.
  • Push memicu pipeline build-and-deploy, dengan pemetaan branch-ke-lingkungan (main ke production, staging ke staging) dan langkah-langkah build per-stack untuk composer dan npm.
  • Kembali ke rilis sebelumnya saat penerapan gagal.
  • Kloning staging dan push-to-live, sehingga perubahan teruji di tempat nyata sebelum mencapai pengunjung.
  • SSH, SFTP, dan FTP yang di-jail per situs di bawah isolasi CageFS, sehingga setiap penyewa hanya melihat file mereka sendiri.
  • wp-cli dari terminal panel dan melalui SSH.
  • VS Code di peramban melalui code-server — editor lengkap dengan ekstensi, terminal terintegrasi, dan git, yang mengedit file situs secara langsung.
  • Versi PHP per situs, pengaturan PHP yang dapat diedit, ekstensi per situs, variabel lingkungan, dan cron nyata di samping WP-cron.

Dan API yang sama yang dapat digunakan oleh agen AI Anda

Kami menghadirkan platform ini sebagai server MCP terkelola: adaptor protokol tipis di atas API mesin yang menggunakan kembali katalog tindakan, RBAC, dan jejak audit yang persis sama. Hubungkan Claude Code, Cursor, ChatGPT, Claude Desktop, atau klien apa pun yang mendukung MCP satu kali saja, dan setiap kemampuan yang kami tambahkan ke API akan langsung tersedia secara otomatis.

Agen tersebut mendapatkan tiga hal: Alat (titik akhir API yang sama, tidak ada logika paralel yang menyimpang), Sumber Daya (kesehatan situs baca-saja, konfigurasi, log terbaru, metrik, waktu aktif, dan artikel KB, sehingga ia mendiagnosis dengan data nyata sebelum bertindak), dan Perintah (templat alur kerja yang dipublikasikan seperti "diagnosis situs ini" atau "siapkan migrasi").

Keamanan adalah cerita yang sama dengan autentikasi: OAuth 2.1, token yang terikat pada organisasi Anda dan izin RBAC dengan keamanan tingkat baris yang diberlakukan, dicakup dan dapat dicabut per alat, sandbox yang dipisahkan dari produksi. Tindakan destruktif — hapus, tangguhkan, penagihan, pengeluaran besar — memerlukan konfirmasi eksplisit atau kebijakan persetujuan manusia. Batas tarif dan batas pengeluaran mengikat tindakan berbayar yang dipicu AI, dan setiap panggilan MCP dicatat dalam audit dengan identitas, alat, argumen, dan hasil.

Kami mendukung protokol ini alih-alih mengintegrasikan setiap aplikasi satu per satu, yang berarti perangkat AI pilihan Anda dapat berubah tanpa mengubah integrasi hosting Anda.

FAQ

Apakah API publik sama dengan yang digunakan oleh dasbor?

Ya — itu adalah API mesin yang sama, yang telah dirilis dan distabilkan. Dasbor, konsol admin, CLI, penyedia Terraform, server MCP, dan webhook semuanya merupakan konsumen dari satu antarmuka, itulah sebabnya API tidak pernah tertinggal dari panel.

Bisakah saya menguji integrasi tanpa mengeluarkan uang atau membuat server sungguhan?

Ya. Kunci sandbox diterbitkan secara terpisah dari kunci produksi dan berjalan dalam mode uji: tidak ada penagihan nyata dan tidak ada provisioning nyata. Arahkan CI Anda ke kredensial sandbox dan jalankan siklus permintaan serta tanggapan secara penuh dengan aman.

Bagaimana cara mencegah percobaan ulang (retry) agar tidak membuat data ganda?

Kirimkan Idempotency-Key pada POST Anda. Catatan ulang (replay record) ditulis saat komit dan bukan secara inline, sehingga percobaan ulang (retry) tidak akan pernah memutar ulang keberhasilan yang di-cache untuk baris yang sebenarnya tidak terkomit, dan permintaan yang gagal akan langsung melepaskan lock-nya sehingga retry Anda yang sudah dikoreksi tidak tertahan. Pengiriman webhook dirancang dengan skema at-least-once — lakukan deduplikasi pada id amplop (envelope id) di sisi Anda.

Bisakah saya memberikan akses satu kunci API ke semua organisasi klien saya?

Bukan hari ini. Kunci API diterbitkan per organisasi, sehingga integrasi yang mencakup beberapa organisasi klien memiliki satu kunci untuk masing-masing. Izin juga diperiksa per organisasi untuk prinsipal pengguna: kepemilikan sites.create di satu organisasi tidak memberikan akses di organisasi lain yang terpisah dan tidak terkait, meskipun izin tersebut berlaku untuk organisasi di bawahnya. Hal itu disengaja — tindakan ini membatasi kunci yang disusupi hanya pada organizasinya sendiri dan sub-organisasi di bawahnya, bukan seluruh platform.

Apa sebenarnya yang diizinkan oleh peran Pengembang bawaan?

Peran pengembang mencakup pembacaan organisasi, pengelolaan kunci API, melihat dan membuat situs, memulai ulang situs, membersihkan temboloknya, serta melihat dan membalas tiket. Peran ini dengan sengaja mengecualikan kontrol penagihan. Perhatikan bahwa izin penerapan dan dorong ke langsung bukan bagian darinya — jika anggota tim membutuhkan izin tersebut, tetapkan peran yang memilikinya alih-alih berasumsi bahwa Pengembang adalah peran teknis yang paling luas.

Apa yang terjadi pada webhook saya jika endpoint saya down selama satu jam?

Pengiriman dicoba ulang secara berkala (backoff) dan setiap percobaan dicatat sebagai WebhookDelivery yang dapat Anda periksa. Di sisi hulu, event ditulis ke outbox transaksional dalam transaksi database yang sama dengan perubahan itu sendiri, sehingga tidak ada yang hilang saat konsumen tidak aktif — konsumen yang mati akan mengalami jeda, namun tidak pernah merusak produsen, dan Anda dapat memutar ulang pengiriman dari dasbor setelah Anda aktif kembali.

Berapa biaya untuk mulai mengembangkannya?

Mulai uji coba 14 hari tanpa kartu untuk Footprint-Free Hosting — tanpa detail pembayaran, hingga 5 situs. Paket berbayar Footprint-Free dimulai dari $6/bln untuk PBN 5. Setiap paket dilengkapi jaminan uang kembali 30 hari, migrasi gratis, dan tanpa penguncian vendor.

Baca spesifikasinya, lalu bangun berdasarkan spesifikasi tersebut

API berbasis spesifikasi, SDK yang dihasilkan, CLI, penyedia Terraform, webhook bertanda tangan, dan server MCP — di hosting yang kami bangun untuk 650.000+ situs di seluruh dunia. Mulai uji coba 14 hari bebas kartu, tanpa detail pembayaran.

Mulai gratis