Para sa mga developer

Hosting na maaari ninyong pamahalaan mula sa code

Ang Zinn Digital® ay isang API-first na platform. Ang parehong engine API na nagpapagana sa aming dashboard ay ang mismong makukuha ninyo — may bersyon, spec-first, at 100% na nakadokumento sa oras ng pag-build, na may mga nabuong SDK, isang CLI, isang Terraform provider, mga nilagdaang webhook, at isang MCP server sa ibabaw nito. Anuman ang gamitin ninyo para magtrabaho — isang terminal, isang pipeline, isang state file, o isang AI agent — tumutugon ang platform dito.

Isang API endpoint na naghahatid ng mga nilagdaang kaganapan sa ilang naka-subscribe na listener.
  • 700,000+mga site na naka-host sa buong mundo
  • 1OpenAPI spec kung saan nabubuo ang bawat tool
  • 4mga client SDK — TypeScript, Python, PHP, Go
  • OAuth 2.1may limitasyong saklaw, mapapawalang-bisang access ng AI agent

Isang API. Bawat surface ay umaasa rito.

Karamihan sa mga host ay nagkakabit lamang ng API sa isang control panel pagkatapos itong gawin, at kitang-kita ito — ang kalahati ng mga feature ng panel ay hindi kailanman nakakarating dito. Binuo namin ito sa kabilang paraan. Ang dashboard, ang admin console, ang CLI, ang provider ng Terraform, ang server ng MCP, at ang sarili ninyong mga integrasyon ay pawang gumagamit ng parehong engine API. Kung magagawa ninyo ito sa panel, magagawa ninyo ito sa code.

Una ang detalye, hindi idinokumento sa ibang pagkakataon

Ang detalye ng OpenAPI ang pinagmumulan ng katotohanan, at walang endpoint na ipinapadala maliban kung ito ay nasa detalye. Ang nag-iisang panuntunang iyon ang dahilan kung bakit ganap na nadodokumento ang pampublikong API sa oras ng pag-build sa halip na sa kalaunan — walang sulok na hindi dokumentado, dahil hindi maaaring umiral ang isang hindi dokumentadong endpoint.

Nagawa nang awtomatiko, hindi kailanman manu-manong pinapanatili

Ang mga interactive reference doc, ang apat na client SDK, karamihan sa CLI, at ang Terraform provider scaffolding ay pawang nabubuo mula sa iisang spec na iyon. Isang pinagmulan, maraming artifact, laging naka-sync — hindi mo kailanman hahabulin ang isang doc na lumihis mula sa pagpapatupad.

May mga bersyon na may patakaran sa paghinto ng paggamit

Ang mga endpoint ay nasa ilalim ng /v1 na may nai-publish na patakaran sa pag-deprecate at isang talaan ng mga pagbabago. Malalaman ninyo bago may magbago, sa pamamagitan ng sulat, sa halip na matuklasan ito mula sa isang nabigong build.

Sinubukan batay sa kontrata sa CI

Tumatakbo sa bawat pagbabago ang mga contract test sa pagitan ng pagpapatupad at detalye, pati ang OpenAPI linting. Nagdudulot ng pagkabigo sa build ang anumang pagkakaiba ng code at kontrata — kaya ang detalyeng pinagbabatayan ng pagbuo ninyo sa inyong client ay ang detalyeng aktwal na sinusunod ng server.

Pagpapatotoo, pagtatakda ng saklaw, at ang mga hamong lumilitaw sa malaking saklaw

Dalawang paraan papasok, isang pare-parehong prinsipyo sa likod ng mga ito. Alinman ang gamitin ninyo, parehong pagsusuri ng pahintulot at parehong paghihiwalay sa antas ng database ang nalalapat.

Mga API key, bawat organisasyon

Ang mga key ay may anyong tulad ng zdk_<mode>_<prefix>_<secret>. Tanging SHA-256 hash lamang ng secret ang nakaimbak — hindi na namin maipapakita muli sa inyo ang isang key pagkatapos itong maibigay, at wala ring sinumang makaka-access sa aming database ang makakagawa nito. Naglalaman ang mga key ng mga saklaw, maaaring bawiin, at ibinibigay bawat organisasyon sa halip na bawat tao.

Mga live at pansubok na mode, pinanatiling magkahiwalay

Ang mga sandbox key ay hiwalay sa mga production key at gumagana sa sandbox mode: walang totoong billing, walang totoong provisioning. Maaaring magpadala ng maraming request ang iyong mga integration test sa API nang hindi gumagastos ng pera o gumagawa ng mga server.

OIDC para sa mga tao

Ang mga session ng user ay nagpapatunay gamit ang mga JWT na inisyu ng Keycloak, bineberipika laban sa pampublikong susi ng realm, at nareresolba sa parehong object na Principal tulad ng isang API key. Ang mga endpoint ay nakadepende sa mga partikular na permission key tulad ng sites.create o apikeys.manage, na sinusuri bawat organisasyon — ang isang pahintulot sa isang organisasyon ay hindi nagbibigay ng access sa isang hiwalay at hindi nauugnay na organisasyon, bagama't nalalapat ito sa mga organisasyong nakapaloob sa ilalim nito.

Seguridad sa antas ng row sa ilalim

Ang bawat kahilingan ng nangungupahan ay tumatakbo sa isang transaksyon na may saklaw ng organisasyon ng Postgres na itinakda mula sa principal, kaya ang paghihiwalay ay ipinapatupad ng database, hindi ng isang filter ng ORM na maaaring makalimutan ng isang tao. Nariyan pa rin ang filter ng queryset bilang malalimang depensa.

Binuo para sa mga makina, hindi lang para sa mga demo

Madaling gawing maganda tingnan ang isang API sa isang README, ngunit mahirap itong gawing maayos ang takbo sa ilalim ng totoong trapiko. Ito ang mga bahaging pinaghirapan namin nang husto, dahil ito ang mga bahaging sumisira sa mga integrasyon sa ganap na alas-tres ng madaling araw.

Isang detalye na nararapat bigyang-pansin, dahil hinuhubog nito kung paano gumagana ang maramihang gawain: ang 409 sa duplicate domain ay sumasagot sa "naka-host ba rito ang hostname na ito?" para sa sinumang tenant, na isang enumeration oracle at isang tunay na panganib ng deanonymisation laban sa Footprint-Free. Ang pag-throttle sa paggawa ng site ay naging tamad na solusyon sana at tuluyang sumira sa produkto ng bulk-provisioning. Sa halip, ang mga tinanggihang pagsubok lang sa duplicate-domain ang binibigyan ng badyet, bawat principal. Ang mga matagumpay na paggawa ay hindi kailanman ibinabawas laban dito — kaya maaari kayong mag-provision nang maramihan buong araw, at halos agad na nahihinto ang pagsisiyasat.

  • Isang pare-parehong error envelope sa bawat pagkabigo: isang code, isang mensaheng nababasa ng tao, opsyonal na mga detalye sa antas ng field at isang request_id na maaari mong sabihin sa suporta. Ang mga error sa pagpapatunay ay nagbabalik ng 422 kasama ang mga pinangalanang may-salang field.
  • Mga idempotency key sa POST, kung saan ang tala ng pag-replay ay isinusulat sa pag-commit sa halip na inline — upang ang isang muling pagsubok ay hindi kailanman makapag-replay ng naka-cache na 201 na tumutukoy sa isang hilera na hindi kailanman na-commit. Ang isang nabigong kahilingan ay agad na naglalabas ng in-flight na lock nito, kaya ang isang 422 ay hindi humaharang sa iyong naitamang muling pagsubok.
  • Pagination gamit ang cursor bilang keyset sa ibabaw ng UUIDv7 — matatag sa ilalim ng mga sabay-sabay na pagsusulat, nang walang page-drift kapag nagpasok ng mga row sa kalagitnaan ng pag-scan.
  • RateLimit-Remaining sa mga tugon, upang ang isang nabuong client ay maaaring matalinong umatras sa halip na manghula.
  • Ang mga resource na wala sa saklaw ay nagbabalik ng 404 sa halip na 403 — kukumpirmahin ng 403 na umiiral ang resource. Ang pag-filter ayon sa isang organisasyong nasa labas ng iyong saklaw ay nagbabalik ng walang laman na pahina sa parehong dahilan.
  • Ang paggawa ng site ay pagpaparehistro, hindi provisioning: Nagbabalik ang POST /v1/sites ng 201 na may katayuang pending at hindi kailanman nagba-block sa build. Isinusulat ang event sa transactional outbox sa parehong transaksyon tulad ng row, kaya umiiral lamang ang isang site kung at kung garantisadong hihilingin ang provisioning nito.

Mga SDK, isang CLI, at isang provider ng Terraform

Tatlong tagagamit ng parehong detalye, para sa tatlong magkakaibang paraan ng pagtatrabaho.

Mga Client SDK

Binuo para sa TypeScript, Python, PHP, at Go, sinusubaybayan ang detalye upang dumating ang isang bagong endpoint sa iyong wika nang hindi naghihintay ng manu-manong isinulat na wrapper.

Zinnector®, ang CLI

I-scaffold ang isang WordPress site, patakbuhin ito nang lokal nang walang naka-install maliban sa Node, at i-deploy ito. Paunang sinusuri ng Zinnector® ang inyong proyekto laban sa slot kung saan kayo magde-deploy — bersyon ng PHP, disk, bilang ng file — at nagbabala bago kayo mag-push sa halip na pagkatapos. Nagla-log in din ito, naglilista ng mga site, nagde-deploy, namamahala ng mga domain at DNS, nagbabasa ng mga serbisyo ng mail, kumukuha ng mga backup, nagpapatakbo ng mga pinapahintulutang WP-CLI, sumusubaybay sa mga log, at nagpapasimula ng mga maramihang operasyon. Libre, may lisensyang MIT, at binuo sa parehong pampublikong API na ito.

Ang provider ng Terraform

Pamahalaan ang mga site, domain, DNS record, mailbox, at plan bilang infrastructure as code. Ang terraform apply ay nagpo-provision ng hosting, at ang inyong mga environment ay nagiging reproducible at reviewable sa halip na isang serye ng mga pag-click na walang nagtala.

Interaktibong sanggunian

Nabuong dokumentasyon na maaari mong basahin at tawagan mula sa browser, na eksaktong naglalarawan sa mga endpoint na ipinapatupad ng server — dahil parehong nagmumula ang mga ito sa iisang detalye.

Mga webhook na nananatili kahit hindi gumagana ang iyong endpoint

Nasa likod ng platform ang isang matatag na event spine: ang bawat pagbabago ng estado ay nagsusulat ng event sa isang transactional outbox sa Postgres, nang atomically kasabay ng pagbabago sa database, at inilalathala ito ng isang relay sa NATS JetStream. Ang mga event ay may uri at bersyon — site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending at ang iba pa.

Mag-subscribe sa mga bagay na mahalaga sa iyo

Magrehistro ng endpoint bilang WebhookSubscription at piliin ang mga uri ng event na matatanggap nito. Isang stream ang nagpapakain sa mga notification, analytics, automation, at sa iyong integration — ginagamit mo ang parehong mga event na ginagamit namin.

Nilagdaan gamit ang HMAC

Naka-HMAC-sign ang bawat paghahatid upang ma-verify ninyong nagmula ito sa amin bago kayo kumilos batay rito.

Sinubukang muli nang may backoff, at na-log

Ang mga nabigong paghahatid ay muling susubukan nang may backoff at ang bawat pagtatangka ay naitatala bilang isang WebhookDelivery. Maaari ninyong suriin at i-replay ang mga paghahatid mula sa dashboard sa halip na mag-email sa suporta upang magtanong kung ano ang aming ipinadala.

Kahit isang beses man lang, kaya mag-dedupe sa id

Ang pipeline ay sadyang at-least-once sa halip na magpanggap na exactly-once. Ang isang relay na hihinto sa kalagitnaan ng pag-publish ay mawawalan ng bisa ang claim lease at muling ipa-publish ang mga event nito. Mag-dedupe batay sa envelope id at magiging wasto sa disenyo ang iyong consumer.

Paglalagay ng code sa site

Kalahati lang ng kwento ng developer ang isang API. Ang kabilang kalahati ay ang pag-deploy.

  • Ikonekta ang GitHub, GitLab, o Bitbucket gamit ang OAuth, kung saan ang mga deploy key ay nakatago sa credential store — hindi sa isang config file.
  • Ang Push ay nagti-trigger ng isang build-and-deploy pipeline, na may branch-to-environment mapping (main sa production, staging sa staging) at mga hakbang sa pag-build bawat stack para sa composer at npm.
  • Bumalik sa nakaraang release kapag nagkaroon ng problema ang pag-deploy.
  • Pag-clone sa staging at push-to-live, upang mapatunayan muna ang pagbabago sa totoong kapaligiran bago ito makarating sa mga bisita.
  • SFTP bawat site sa ilalim ng CageFS isolation, kaya nakikita lamang ng bawat tenant ang kanilang sariling mga file, kasama ang isang naka-jail na SSH shell sa ibinahaging platform.
  • wp-cli mula sa terminal ng panel at sa pamamagitan ng SSH.
  • VS Code sa browser sa pamamagitan ng code-server — isang kumpletong editor na may git, direktang nag-e-edit ng mga file ng site.
  • Bersyon ng PHP bawat site, nae-edit na mga setting ng PHP, mga extension bawat site, mga environment variable at totoong cron kasama ng WP-cron.

Apat na paraan para gumawa sa isang site

Isang pinto ang API. Ito ang iba pang apat, at ang bawat isa sa mga ito ay kasama sa plano sa halip na ibenta bilang antas ng developer.

Ang web editor

Ang VS Code sa browser, na binuksan mula sa page ng site sa dashboard, na nag-e-edit ng mga totoong file ng site na iyon gamit ang built-in na git at ang buong editor sa loob ng parehong CageFS jail gaya ng iyong SFTP access. Ine-edit nito ang LIVE na site — walang staging copy sa pagitan, kaya ang file na ise-save mo ay pampubliko sa sandaling maisulat ito, bagama't ang isang static na file ay maaaring patuloy na maihatid mula sa CDN cache nang hanggang apat na oras.

Zinnector®, ang CLI

Libre, may lisensyang MIT at binuo sa parehong pampublikong API na ito. Gumawa ng balangkas ng isang WordPress site, patakbuhin ito sa sarili ninyong makina, magsagawa ng paunang pagsusuri laban sa slot kung saan kayo magde-deploy — bersyon ng PHP, disk, bilang ng file — at mag-deploy. Nangangailangan ng Node 24 o mas bago.

Ang MCP server

Isang katalogo ng mga tool, upang ang AI client na ginagamit mo na ay maaaring gumana sa iyong mga site sa pamamagitan ng parehong API at parehong mga pahintulot na ginagamit ng dashboard. Ang parehong server kung saan kumokonekta ang iyong sariling client ay ang parehong naka-link sa web editor. Read-only hanggang sa ipag-utos mo ang kabaligtaran.

Access ng developer bawat site

Hindi kailangan ng trabaho sa kliyente ang iyong password. Mag-imbita ng sinuman sa pamamagitan ng email address at eksaktong isang site lang ang makukuha nila: magsa-sign in sila bilang kanilang sarili, na may tungkuling viewer, editor, o manager, at ang bawat iba pang site ay tutugon ng 404 bago pa tumakbo ang anumang handler — isang patakaran sa seguridad sa antas ng hilera ng Postgres at isang bakod sa antas ng kahilingan, hindi lamang iisang pagsusuri. Iginagawad at binabawi ito ng may-ari ng account sa isang pag-click, na magkakabisa sa susunod nilang kahilingan.

At ang parehong API na magagamit ng iyong AI agent

Inilalantad namin ang platform bilang isang naka-host na MCP server: isang manipis na protocol adapter sa engine API na muling gumagamit ng magkatulad na action catalogue, RBAC, at audit trail. Ikonekta ang Claude Code, Cursor, ChatGPT, Claude Desktop, o anumang MCP-capable na client nang isang beses, at bawat kakayahang idinaragdag namin sa API ay awtomatikong magiging available dito.

Nakatatanggap ang agent ng tatlong bagay: Mga Tool (ang parehong mga API endpoint, walang magkatulad na lohika na magkakaroon ng pagkakaiba), Mga Resource (read-only na kalusugan ng site, configuration, kamakailang mga log, sukatan, uptime, at mga artikulo sa KB, upang magsagawa ito ng diagnosis gamit ang totoong data bago kumilos), at Mga Prompt (mga nai-publish na template ng workflow tulad ng "i-diagnose ang site na ito" o "maghanda ng migrasyon").

Ang seguridad ay kapareho ng kuwento sa pagpapatunay: OAuth 2.1, mga token na nakatali sa inyong organisasyon at mga pahintulot ng RBAC na may ipinapatupad na seguridad sa antas ng hanay, may saklaw at maaaring bawiin bawat tool, sandbox na nakahiwalay sa produksyon. Ang mga mapanirang aksyon — pagbura, pagsuspinde, pagsingil, malaking gastusin — ay nangangailangan ng tahasang kumpirmasyon o isang patakaran sa pag-apruba ng tao. Ang mga limitasyon sa rate at mga limitasyon sa paggastos ay nagtatakda ng hangganan sa mga binabayarang aksyon na pinasimulan ng AI, at bawat tawag sa MCP ay naka-log para sa pag-audit kasama ang pagkakakilanlan, tool, mga argumento, at resulta.

Sinusuportahan namin ang protocol sa halip na isama ang bawat app nang paisa-isa, na nangangahulugang maaaring magbago ang iyong piniling mga AI tool nang hindi nagbabago ang iyong hosting integration kasabay nito.

Mga Madalas Itanong

Pareho ba ang pampublikong API sa ginagamit ng dashboard?

Oo — ito ang parehong engine API, na-publish at pinatibay. Ang dashboard, admin console, CLI, Terraform provider, MCP server, at webhooks ay pawang mga consumer ng iisang surface, kaya naman hindi nahuhuli ang API sa panel.

Maaari ko bang subukan ang isang integrasyon nang hindi gumagastos ng pera o bumubuo ng mga totoong server?

Oo. Ang mga Sandbox key ay hiwalay na ibinibigay mula sa mga production key at gumagana sa test mode: walang totoong pagsingil at walang totoong pag-provision. Ituro ang inyong CI sa mga kredensyal ng sandbox at ligtas na isagawa ang buong ikot ng request at response.

Paano ko mapipigilan ang muling pagsubok na gumawa ng dalawang kopya ng isang bagay?

Magpadala ng Idempotency-Key sa iyong POST. Ang replay record ay isinusulat sa commit sa halip na inline, kaya hindi kailanman maaaring i-replay ng muling pagsubok ang isang naka-cache na tagumpay para sa isang row na hindi aktwal na nag-commit, at ang isang kahilingan na nabigo ay agad na naglalabas ng lock nito upang hindi maantala ang iyong naitamang muling pagsubok. Ang paghahatid ng Webhook ay at-least-once ayon sa disenyo — mag-dedupe batay sa envelope id sa iyong panig.

Maaari ko bang bigyan ang isang API key ng access sa lahat ng organisasyon ng aking mga kliyente?

Hindi ngayon. Ang mga API key ay ibinibigay bawat organisasyon, kaya ang isang integrasyon na sumasaklaw sa ilang organisasyon ng kliyente ay may hawak na key para sa bawat isa. Sinusuri din ang mga pahintulot bawat organisasyon para sa mga principal ng user: ang pagkakaroon ng sites.create sa isang organisasyon ay hindi nagbibigay ng access sa isang hiwalay at walang kaugnayang organisasyon, bagama't nalalapat ito sa mga organisasyong nakapaloob sa ilalim nito. Sadya iyon — nililimitahan nito ang isang nakompromisong key sa sarili nitong organisasyon at sa mga sub-org sa ilalim nito, hindi sa buong platform.

Ano nga ba ang aktwal na pinapahintulutan ng built-in na tungkulin ng Developer?

Sinasaklaw ng dev na tungkulin ang pagbasa sa organisasyon, pamamahala ng API key, pagtingin at paggawa ng mga site, pag-restart sa mga ito, pag-purge ng kanilang cache, at pagtingin at pagsagot sa mga ticket. Sadyang hindi kasama rito ang kontrol sa pagsingil. Tandaan na ang mga pahintulot sa pag-deploy at push-to-live ay hindi bahagi nito — kung kailangan ng isang miyembro ng koponan ang mga iyon, magtalaga ng tungkuling naglalaman ng mga ito sa halip na ipagpalagay na ang Developer ang pinakamalawak na teknikal na tungkulin.

Ano ang mangyayari sa aking mga webhook kung mag-down ang aking endpoint nang isang oras?

Sumusubok muli ang mga paghahatid nang may backoff at ang bawat pagsubok ay naitatala bilang isang WebhookDelivery na maaari ninyong siyasatin. Sa upstream, ang mga event ay isinusulat sa isang transactional outbox sa parehong transaksyon ng database tulad ng mismong pagbabago, kaya walang nawawala habang hindi available ang isang consumer — ang hindi gumaganang consumer ay nahuhuli, hindi nito kailanman sinisira ang producer, at maaari ninyong i-replay ang mga paghahatid mula sa dashboard kapag nakabalik na kayo.

Magkano ang magagastos upang simulan ang pagbuo gamit ito?

Magsimula sa 14-araw na pagsubok na walang kinakailangang card para sa Footprint-Free Hosting — walang detalye ng pagbabayad, hanggang 5 site. Ang mga bayarang tier ng Footprint-Free ay nagsisimula sa $6/mo para sa PBN 5. Ang bawat plano ay may kasamang 30-araw na garantiyang ibabalik ang pera, mga libreng migrasyon, at walang vendor lock-in.

Basahin ang detalye, pagkatapos ay bumuo batay dito

Spec-first na API, mga nabuong SDK, isang CLI, isang Terraform provider, mga nilagdaang webhook, at isang MCP server — sa hosting na binuo namin para sa higit sa 700,000 site sa buong mundo. Magsimula sa isang 14 na araw na trial na walang kinakailangang card at walang mga detalye sa pagbabayad.

Magsimula nang libre

Mga plugin ng WordPress na maaaring paglingkuran ng iyong AI agent

Ang bawat isa sa mga plugin na ito ay ginagawang isang MCP server ang iyong WordPress site, kaya ang Claude, Cursor, VS Code at iba pang mga AI assistant ay maaaring gumawa ng totoong trabaho dito, naka-sign in bilang ikaw at limitado sa kung ano ang pinapayagan mong gawin.

Lahat ng MCP at API docs para sa mga developer →