{"uid":"cap_JthWSwVEM_EYafiyPvFpB","slug":"cdn-withzero-xyz-commit-planned-deploy-cdn-withzero-xyz-847b464a","name":"Commit Planned Deploy (cdn.withzero.xyz)","description":"Make a planned deploy live once its files are uploaded. Takes the same visibility / password / spa options as a kind:site upload.","url":"https://cdn.withzero.xyz/api/v1/deploys/{id}/commit?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"spa":{"type":"boolean","description":"Single-page app routing. true: a missing extensionless path (e.g. /dashboard/settings) serves the site index.html with 200 so a client-side router handles it; missing assets (.js, .png…) still 404. false: misses serve the site 404.html, if it has one, with status 404. Omit to keep the current setting (new sites default to false)."},"password":{"type":"string","maxLength":256,"minLength":8,"description":"Sets or changes the site password (implies visibility:\"password\"). 8–256 chars. Omit to keep the current one."},"visibility":{"enum":["public","link","password"],"type":"string","description":"As for kind:site uploads: \"public\" (default for a new site), \"link\" or \"password\". Omit to keep the current visibility."}},"additionalProperties":false},"responseSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["walletId","cacheTtlSeconds","files"],"properties":{"spa":{"type":"boolean","description":"kind:site only — whether single-page-app routing is on after this upload."},"files":{"type":"array","items":{"type":"object","required":["url","path","sizeBytes"],"properties":{"url":{"type":"string","description":"Public URL this file is served from."},"path":{"type":"string","description":"Path within your wallet namespace (the part after <walletId>/)."},"sizeBytes":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Decoded file size in bytes."}},"additionalProperties":false},"description":"One entry per uploaded file. kind:file — a single entry. kind:site — one entry per file in the zip; the hosted site's entry point is /<walletId>/<slug>/, which serves <slug>/index.html."},"shareUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"kind:site with link or password visibility — the private URL to share. For a link site it is the whole credential; for a password site viewers also need the password."},"walletId":{"type":"string","description":"Random per-wallet base62 id used as the folder in the URL path (the <walletId> in /<walletId>/<slug>/)."},"warnings":{"type":"array","items":{"type":"string"},"description":"kind:site only — rules in _redirects / _headers that were skipped (unsupported syntax, a disallowed header). The deploy itself succeeded."},"visibility":{"enum":["public","link","password"],"type":"string","description":"kind:site only — the site's visibility after this upload."},"cacheTtlSeconds":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Resolved edge cache lifetime (Cache-Control max-age) applied to every uploaded object."}},"additionalProperties":false},"example":null,"exampleRequest":null,"tags":[],"displayCostAmount":"0","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"unprobed","priceSource":"registry","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"metered","summary":"metered — billed by usage","primary":{"kind":"metered","protocol":"mpp","network":"tempo","amountUsd":null,"per":"call","confidence":"unknown"},"accepted":[{"kind":"metered","protocol":"mpp","network":"tempo","amountUsd":null,"per":"call","confidence":"unknown"}]},"paymentMethods":[{"uid":"pm_gzEWPo024i8mV2jdh4Wmw","protocol":"mpp","methodType":"crypto","chain":"tempo","mode":"charge","costAmount":"0","costPer":"request","priority":0,"asset":"0x20C000000000000000000000b9537d11c60E8b50","unit":"request","depositMicros":null,"planRef":"cdn.deploys.commit:1"}],"brandName":"cdn.withzero.xyz","brandSlug":"cdn-withzero-xyz-mpp","brandBaseUrl":"https://cdn.withzero.xyz","brandDocsUrl":null,"whatItDoes":"Makes a previously planned deploy go live once its files have been uploaded, optionally setting visibility, password, and SPA routing options.","exampleAgentPrompt":"Go ahead and commit deploy abc123 to make it live — set visibility to 'public' and enable single-page app routing.","exampleUseCases":[{"title":"Launch password-protected client site","prompt":"Commit deploy d7f9e2 and make it live with password protection — set visibility to 'password' and use the password 'ClientPreview2024'."},{"title":"Publish SPA with link-only access","prompt":"Make deploy 3b8c1a live now — set it to link-only visibility so only people with the URL can see it, and turn on single-page app routing so my React router works."},{"title":"Go public with uploaded static site","prompt":"The files for deploy 9k2m4x are all uploaded — please commit it and make it fully public."}],"resultDescription":"Returns the committed deploy details including the wallet ID, list of all files with their public URLs and sizes, cache TTL in seconds, visibility setting, optional share URL (for link/password sites), SPA routing status, and any warnings about skipped redirect/header rules.","failureModes":["Deploy ID not found — 404 if the deploy does not exist or belongs to a different wallet","Files not yet fully uploaded — commit may fail or return incomplete state if upload is still in progress","Invalid password length — password must be 8–256 characters or request is rejected","Invalid visibility enum value — must be 'public', 'link', or 'password'","Unauthorized — missing or invalid wallet credentials returns 401/403"],"whenToPreferThis":"Use this endpoint after completing a planned (manifest-based) deploy upload to atomically switch the site to the new version. Prefer this over a direct upload commit when deploying large sites (up to 5,000 files / 500 MiB) via the manifest flow, or when you want to upload files in parallel before going live in a single atomic operation.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-11T09:38:45.726Z","isFirstParty":true,"canonicalSlug":"cdn-withzero-xyz-commit-planned-deploy-cdn-withzero-xyz-847b464a"}