Untuk pengembang

Hosting yang dapat Anda kelola dari kode

Zinn Digital® adalah platform API-first. Engine API yang sama yang mendukung dasbor kami adalah yang Anda dapatkan — berversi, berorientasi spesifikasi, dan 100% terdokumentasi saat build, lengkap dengan SDK yang dibuat secara otomatis, 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 meresponsnya.

Titik akhir API yang mengirimkan peristiwa bertanda tangan ke beberapa pendengar yang berlangganan.
  • 700.000+situs yang di-hosting di seluruh dunia
  • 1Spesifikasi OpenAPI tempat setiap alat dibuat
  • 4SDK klien — TypeScript, Python, PHP, Go
  • OAuth 2.1akses agen AI berlingkup dan dapat dicabut

Satu API. Setiap antarmuka berjalan di atasnya.

Sebagian besar penyedia hosting menambahkan API ke panel kontrol sebagai hal belakangan, dan itu terlihat jelas — separuh fitur panel tidak pernah sampai ke sana. Kami membangunnya dengan cara sebaliknya. Dasbor, konsol admin, CLI, penyedia Terraform, server MCP, dan integrasi Anda sendiri semuanya menggunakan API mesin yang sama. Jika Anda dapat melakukannya di panel, Anda dapat melakukannya dalam kode.

Spesifikasi terlebih dahulu, bukan didokumentasikan belakangan

Spesifikasi OpenAPI adalah sumber kebenaran utama, dan tidak ada endpoint yang dirilis kecuali tercantum dalam spesifikasi tersebut. Aturan tunggal inilah yang membuat API publik terdokumentasi sepenuhnya pada saat build alih-alih di kemudian hari — tidak ada bagian yang terlewat tanpa dokumentasi, karena endpoint yang tidak terdokumentasi tidak mungkin ada.

Dibuat otomatis, tidak pernah dipelihara secara manual

Dokumentasi referensi interaktif, empat SDK klien, sebagian besar CLI, dan perancah penyedia Terraform semuanya dibuat dari satu spesifikasi tersebut. Satu sumber, banyak artefak, selalu tersinkronisasi — Anda tidak perlu lagi mengejar dokumen yang menyimpang dari implementasinya.

Diberi versi dengan kebijakan penghentian dukungan

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

Diuji berdasarkan kontrak di CI

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

Autentikasi, penentuan cakupan, dan kendala saat berskala besar

Dua cara masuk, satu prinsip seragam di baliknya. Yang mana pun yang Anda gunakan, pemeriksaan izin yang sama dan isolasi tingkat database yang sama tetap berlaku.

Kunci API, per organisasi

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

Mode live dan uji, dipisahkan

Kunci sandbox terpisah dari kunci produksi dan berjalan dalam mode sandbox: tidak ada penagihan nyata, tidak ada penyediaan nyata. Uji integrasi Anda dapat membebani 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 mengarah ke objek Principal yang sama seperti kunci API. Titik akhir (endpoints) dibatasi oleh kunci izin mendetail seperti sites.create atau apikeys.manage, yang diperiksa per organisasi — izin dalam satu organisasi tidak memberikan akses di organisasi lain yang terpisah dan tidak terkait, meskipun izin tersebut berlaku untuk organisasi yang bertingkat di bawahnya.

Keamanan tingkat baris di bawahnya

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

Dibuat untuk mesin, bukan hanya untuk demo

Membuat API terlihat bagus di README itu mudah, tetapi membuatnya bekerja dengan baik di bawah lalu lintas nyata itu sulit. Bagian-bagian inilah yang paling kami perhatikan dan upayakan, karena bagian-bagian inilah yang merusak integrasi pada jam tiga pagi.

Satu perincian yang patut diperhatikan, karena menentukan cara kerja operasi massal: respons 409 pada domain duplikat menjawab pertanyaan "apakah nama host ini di-host di sini?" bagi penyewa mana pun, yang merupakan enumeration oracle dan risiko deanonimisasi nyata terhadap Footprint-Free. Membatasi laju pembuatan situs akan menjadi solusi instan yang buruk dan akan langsung merusak produk provisi massal. Sebagai gantinya, hanya upaya domain duplikat yang ditolak yang diperhitungkan dalam kuota, per prinsipal. Pembuatan yang berhasil tidak akan pernah diperhitungkan dalam kuota tersebut — sehingga Anda dapat memprovisi secara massal sepanjang hari, dan upaya penyelidikan akan terhenti hampir seketika.

  • Amplop kesalahan yang konsisten pada setiap kegagalan: kode, pesan yang dapat dibaca manusia, detail opsional tingkat bidang, dan request_id yang dapat Anda berikan ke dukungan. Kesalahan validasi mengembalikan 422 dengan bidang yang bermasalah disebutkan namanya.
  • Kunci idempotensi pada POST, dengan rekaman pemutaran ulang yang ditulis saat commit alih-alih inline — sehingga percobaan ulang tidak akan pernah dapat memutar ulang 201 dalam singgahan yang menyebutkan baris yang tidak pernah di-commit. Permintaan yang gagal segera melepaskan kunci in-flight-nya, sehingga 422 tidak mengunci percobaan ulang Anda yang telah diperbaiki.
  • Paginasi kursor sebagai keyset melalui UUIDv7 — stabil di bawah penulisan bersamaan, tanpa pergeseran halaman saat baris disisipkan di tengah pemindaian.
  • RateLimit-Remaining pada respons, sehingga klien yang dihasilkan dapat mundur secara cerdas alih-alih menebak.
  • Sumber daya di luar cakupan mengembalikan 404 daripada 403 — 403 akan mengonfirmasi bahwa sumber daya tersebut ada. Memfilter berdasarkan organisasi di luar cakupan Anda akan mengembalikan halaman kosong karena alasan yang sama.
  • Pembuatan situs adalah pendaftaran, bukan provisi: POST /v1/sites mengembalikan 201 dengan status pending dan tidak pernah memblokir proses build. Event ditulis ke transactional outbox dalam transaksi yang sama dengan baris tersebut, sehingga situs ada jika dan hanya jika provisinya dijamin akan diminta.

SDK, CLI, dan penyedia Terraform

Tiga pengguna dari spesifikasi yang sama, untuk tiga cara kerja yang berbeda.

SDK Klien

Dibuat untuk TypeScript, Python, PHP, dan Go, melacak spesifikasi sehingga titik akhir baru hadir dalam bahasa Anda tanpa menunggu wrapper yang ditulis secara manual.

Zinnector®, CLI

Buat kerangka situs WordPress, jalankan secara lokal tanpa perlu menginstal apa pun selain Node, lalu terapkan. Zinnector® melakukan pra-pemeriksaan proyek Anda terhadap slot tujuan penerapan — versi PHP, ruang disk, jumlah file — dan memberikan peringatan sebelum Anda melakukan push, bukan sesudahnya. Alat ini juga masuk ke akun, membuat daftar situs, menerapkan, mengelola domain dan DNS, membaca layanan email, membuat cadangan, menjalankan WP-CLI yang diizinkan, memantau log secara langsung, dan memicu operasi massal. Gratis, berlisensi MIT, dan dibangun di atas API publik yang sama ini.

Penyedia Terraform

Kelola situs, domain, rekaman DNS, kotak surat, dan paket sebagai infrastruktur sebagai kode. terraform apply memprovisikan hosting, dan lingkungan Anda menjadi dapat direproduksi serta ditinjau, alih-alih berupa rangkaian klik yang tidak dicatat oleh siapa pun.

Referensi interaktif

Dokumentasi yang dihasilkan dapat Anda baca dan panggil dari peramban, yang menjelaskan secara tepat titik akhir yang diterapkan server — karena keduanya berasal dari spesifikasi yang sama.

Webhook yang tetap bertahan saat endpoint Anda mengalami gangguan

Di balik platform ini terdapat tulang punggung peristiwa yang andal: setiap perubahan status menulis peristiwa ke outbox transaksional di Postgres, secara atomik dengan perubahan basis data, dan sebuah relai memublikasikannya ke NATS JetStream. Peristiwa memiliki tipe dan versi — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending, dan selebihnya.

Berlangganan apa yang penting bagi Anda

Daftarkan endpoint sebagai WebhookSubscription dan pilih jenis peristiwa yang akan diterimanya. Satu aliran mengalirkan notifikasi, analitik, otomatisasi, dan integrasi Anda secara setara — Anda menggunakan peristiwa yang sama seperti yang kami gunakan.

Ditandatangani dengan HMAC

Setiap pengiriman ditandatangani dengan HMAC sehingga Anda dapat memverifikasi bahwa pengiriman tersebut berasal dari kami sebelum menindaklanjutinya.

Dicoba kembali dengan backoff, dan dicatat

Pengiriman yang gagal akan dicoba kembali dengan jeda bertahap dan setiap upaya dicatat sebagai WebhookDelivery. Anda dapat memeriksa dan memutar ulang pengiriman dari dasbor alih-alih mengirim email ke tim dukungan untuk menanyakan apa yang kami kirimkan.

Setidaknya sekali, jadi lakukan deduplikasi pada id

Pipeline ini sengaja dirancang untuk setidaknya satu kali alih-alih berpura-pura menjadi tepat satu kali. Relai yang terhenti di tengah penerbitan akan mengalami masa sewa klaim kedaluwarsa dan peristiwanya akan diterbitkan ulang. Lakukan deduplikasi pada ID amplop dan konsumen Anda akan terbukti tepat secara konstruksi.

Memasukkan kode ke situs

Sebuah API hanyalah separuh dari kisah pengembang. Separuh lainnya adalah peluncuran.

  • Hubungkan GitHub, GitLab, atau Bitbucket melalui OAuth, dengan kunci penerapan disimpan di penyimpanan kredensial — bukan di file konfigurasi.
  • Push memicu alur kerja build-and-deploy, dengan pemetaan cabang ke lingkungan (main ke production, staging ke staging) dan langkah-langkah build per-stack untuk composer dan npm.
  • Kembalikan ke rilis sebelumnya saat proses penerapan mengalami masalah.
  • Kloning staging dan push-to-live, sehingga perubahan terbukti di lingkungan nyata sebelum sampai ke pengunjung.
  • SFTP per situs di bawah isolasi CageFS, sehingga setiap penyewa hanya melihat berkas mereka sendiri, ditambah shell SSH terisolasi (jailed) pada platform bersama.
  • wp-cli dari terminal panel dan melalui SSH.
  • VS Code di browser melalui code-server — editor lengkap dengan git, menyunting berkas situs secara langsung.
  • Versi PHP per situs, pengaturan PHP yang dapat diedit, ekstensi per situs, variabel lingkungan, dan cron nyata bersama WP-cron.

Empat cara untuk mengerjakan situs

API adalah satu pintu. Ini adalah empat pintu lainnya, dan masing-masing disertakan dalam paket alih-alih dijual sebagai tingkatan pengembang.

Editor web

VS Code di browser, dibuka dari halaman situs di dasbor, mengedit file asli situs tersebut dengan git bawaan dan seluruh editor berada di dalam sangkar CageFS yang sama dengan akses SFTP Anda. Ini mengedit situs LANGSUNG — tidak ada salinan staging di antaranya, jadi file yang Anda simpan langsung dapat diakses publik begitu ditulis, meskipun file statis mungkin tetap disajikan dari cache CDN hingga empat jam.

Zinnector®, CLI

Gratis, berlisensi MIT, dan dibangun di atas API publik yang sama ini. Buat perancah situs WordPress, jalankan di mesin Anda sendiri, lakukan pra-pemeriksaan terhadap slot tujuan penerapan Anda — versi PHP, disk, jumlah file — dan terapkan. Memerlukan Node 24 atau yang lebih baru.

Server MCP

Satu katalog alat, sehingga klien AI yang sudah Anda gunakan dapat bekerja di situs Anda melalui API dan izin yang sama seperti yang digunakan oleh dasbor. Server yang sama tempat klien Anda terhubung adalah server yang terhubung ke editor web. Hanya dapat dibaca kecuali Anda menentukan sebaliknya.

Akses pengembang per situs

Pekerjaan klien tidak memerlukan kata sandi Anda. Undang seseorang melalui alamat email dan mereka mendapatkan tepat satu situs: mereka masuk sebagai diri mereka sendiri, dengan peran pelihat, editor, atau pengelola, dan setiap situs lainnya merespons 404 sebelum penangan mana pun berjalan — kebijakan keamanan tingkat baris Postgres dan pembatas tingkat permintaan, bukan sekadar satu pemeriksaan. Pemilik akun memberikan dan mencabutnya dalam satu klik, berlaku efektif pada permintaan mereka berikutnya.

Dan API yang sama yang dapat digunakan oleh agen AI Anda

Kami menghadirkan platform ini sebagai server MCP terhosting: sebuah adaptor protokol tipis di atas API mesin yang menggunakan kembali katalog tindakan, RBAC, dan jejak audit yang identik. Hubungkan Claude Code, Cursor, ChatGPT, Claude Desktop, atau klien apa pun yang berkemampuan MCP sekali saja, dan setiap kemampuan yang kami tambahkan ke API akan tersedia secara otomatis untuknya.

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

Keamanan memiliki pendekatan yang sama dengan autentikasi: OAuth 2.1, token yang terikat pada organisasi Anda dan izin RBAC dengan keamanan tingkat baris yang diterapkan, dicakupkan serta dapat dicabut per alat, lingkungan sandbox yang terpisah dari produksi. Tindakan destruktif — hapus, tangguhkan, penagihan, pengeluaran besar — memerlukan konfirmasi eksplisit atau kebijakan persetujuan manusia. Batas laju dan batas pengeluaran membatasi tindakan berbayar yang dipicu AI, dan setiap panggilan MCP dicatat dalam log audit beserta identitas, alat, argumen, dan hasilnya.

Kami mendukung protokol tersebut daripada mengintegrasikan setiap aplikasi satu per satu, yang berarti pilihan alat AI Anda dapat berubah tanpa perlu mengubah integrasi hosting Anda.

Pertanyaan yang Sering Diajukan

Apakah API publik sama dengan yang digunakan oleh dasbor?

Ya — ini adalah API mesin yang sama, dipublikasikan dan diperkuat. Dasbor, konsol admin, CLI, penyedia Terraform, server MCP, dan webhook semuanya adalah konsumen dari satu permukaan yang sama, itulah sebabnya API tidak tertinggal dari panel.

Dapatkah saya menguji integrasi tanpa mengeluarkan uang atau membangun server sungguhan?

Ya. Kunci Sandbox diterbitkan secara terpisah dari kunci produksi dan berjalan dalam mode pengujian: tidak ada penagihan nyata dan tidak ada penyediaan nyata. Arahkan CI Anda ke kredensial sandbox dan jalankan siklus permintaan dan respons secara menyeluruh dengan aman.

Bagaimana cara mencegah percobaan ulang membuat dua item yang sama?

Kirim Idempotency-Key pada POST Anda. Catatan replay ditulis saat commit dan bukan secara inline, sehingga upaya coba lagi tidak akan pernah memutar ulang keberhasilan yang di-cache untuk baris yang sebenarnya tidak di-commit, dan permintaan yang gagal akan segera melepaskan kuncinya agar upaya coba lagi yang telah diperbaiki tidak tertahan. Pengiriman Webhook dirancang setidaknya sekali (at-least-once) — lakukan deduplikasi berdasarkan envelope id di pihak Anda.

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

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

Apa yang sebenarnya diizinkan oleh peran Pengembang bawaan?

Peran dev mencakup pembacaan organisasi, pengelolaan kunci API, melihat dan membuat situs, memulai ulang situs, membersihkan cache-nya, serta melihat dan membalas tiket. Peran ini sengaja mengecualikan kontrol penagihan. Harap diperhatikan bahwa izin deploy dan push-to-live bukan bagian darinya — jika anggota tim membutuhkannya, tetapkan peran yang menyertakan izin tersebut daripada mengasumsikan bahwa Developer adalah peran teknis yang paling luas.

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

Pengiriman dicoba kembali dengan backoff dan setiap upaya dicatat sebagai WebhookDelivery yang dapat Anda periksa. Di upstream, peristiwa ditulis ke transactional outbox dalam transaksi basis data yang sama dengan perubahan itu sendiri, sehingga tidak ada yang hilang saat konsumen tidak tersedia — konsumen yang tidak aktif mengalami keterlambatan, tidak pernah merusak produsen, dan Anda dapat memutar ulang pengiriman dari dasbor setelah Anda kembali.

Berapa biaya untuk mulai mengembangkan menggunakannya?

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 kembangkan berdasarkan spesifikasi tersebut

API berbasis spesifikasi, SDK yang dihasilkan, CLI, penyedia Terraform, webhook yang ditandatangani, dan server MCP — pada hosting yang kami bangun untuk lebih dari 700.000 situs di seluruh dunia. Mulailah dengan uji coba 14 hari tanpa kartu, tanpa rincian pembayaran.

Mulai gratis

Plugin WordPress yang dapat digunakan oleh agen AI Anda

Setiap plugin ini mengubah situs WordPress Anda menjadi server MCP, sehingga Claude, Cursor, VS Code, dan asisten AI lainnya dapat melakukan pekerjaan nyata di atasnya, masuk sebagai Anda dan terbatas pada apa yang diizinkan untuk Anda lakukan.

Semua dokumentasi MCP dan API untuk pengembang →