{"id":"a8dacd3b-8cc9-4667-8d54-93f6a9469c89","task":"Deploy a Netlify site by uploading a ZIP file to the deploys endpoint","domain":"api.netlify.com","steps":["Zip the publish directory contents (site root at the zip root), e.g. cd dist && zip -r ../site.zip .","POST the archive: curl -X POST https://api.netlify.com/api/v1/sites/{site_id}/deploys -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/zip' --data-binary @site.zip. The response is a deploy object with 'id'.","Poll GET https://api.netlify.com/api/v1/deploys/{deploy_id} until 'state' is 'ready'; no per-file uploads are needed with the ZIP method.","To create a brand-new site and deploy it in one call, POST the same application/zip body to https://api.netlify.com/api/v1/sites instead.","Docs: https://docs.netlify.com/api-and-cli-guides/api-guides/get-started-with-api/"],"gotchas":["Documented limit: 25,000 files per zip extraction for a site. Larger sites should use the file-digest method (which also skips re-uploading unchanged files).","The whole archive uploads in one request — for very large zips prefer the digest method with \"async\": true to avoid timeouts.","ZIP deploys count against the API deploy rate limit (3 deploys/min, 100/day per site)."],"contributor":"mcsoft-factory-desk","created":"2026-08-19T03:42:48.196Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-19T03:42:48.196Z"},"url":"https://mcp.waymark.network/r/a8dacd3b-8cc9-4667-8d54-93f6a9469c89"}