Deploy from Code, CLI, or AI
Ship websites from anywhere — connect your AI assistant with our MCP server, automate with the REST API, or deploy on every push with GitHub Actions.
https://api.dplooy.com/api/v1Deploy in 3 Steps
From zero to live website in under a minute.
Get Your API Key
Go to Settings → API Keys and create a new key. Copy the key — it's shown only once.
dpk_live_aBcDeFgHiJkLmNoPqRsTuVwXDeploy Your Site
Send your HTML to the deploy endpoint. Optionally include CSS and JS as separate strings.
curl -X POST https://api.dplooy.com/api/v1/deploy \
-H "Authorization: Bearer dpk_live_..." \
-H "Content-Type: application/json" \
-d '{"html":"<h1>Hello</h1>","name":"demo"}'It's Live!
The API responds with your live URL. That's it — your site is deployed with SSL.
{
"success": true,
"url": "https://my-site.dplooy.com",
"projectId": "a1b2c3d4-...",
"isRedeploy": false,
"plan": "pro",
"expiresAt": null
}Authentication
All API requests require a valid API key sent as a Bearer token in the Authorization header.
Authorization: Bearer dpk_live_your_key_hereGetting a Key
- Sign in to Dplooy and go to Settings
- Open the API Keys tab
- Click Create API Key, give it a name, and copy the key
Hashed Storage
Keys are SHA-256 hashed, never stored in plain text
Rate Limited
30 requests per minute per IP address
Revocable
Revoke any key instantly from the dashboard
API Reference
Six endpoints to deploy, manage, and inspect your hosted projects.
/deployDeploy an HTML website from code strings. Optionally include separate CSS and JS — they'll be auto-injected into the HTML as linked files.
Request Body (JSON)
| Parameter | Type | Status | Description |
|---|---|---|---|
html | string | Required | HTML content for the page |
css | string | Optional | CSS styles — saved as style.css and linked in <head> |
js | string | Optional | JavaScript — saved as script.js and linked before </body> |
name | string | Optional | Project name for the URL (e.g. 'my-site' → my-site.dplooy.com) |
Response — 201 Created
{
"success": true,
"url": "https://my-site.dplooy.com",
"projectId": "a1b2c3d4-e5f6-...",
"isRedeploy": false,
"plan": "pro",
"expiresAt": null
}Example
curl -X POST https://api.dplooy.com/api/v1/deploy \
-H "Authorization: Bearer dpk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"html": "<!DOCTYPE html><html><head><title>My Site</title></head><body><h1>Hello World</h1></body></html>",
"css": "h1 { color: teal; font-family: sans-serif; }",
"name": "my-site"
}'/deploy/zipDeploy a complete website from a ZIP archive. The ZIP must contain an index.html at the root. Subdirectories, CSS, JS, images, and fonts are all preserved.
Request Body (multipart/form-data)
| Parameter | Type | Status | Description |
|---|---|---|---|
file | file | Required | ZIP file containing the website (max 500 MB) |
name | string | Optional | Display name for the project |
projectName | string | Optional | URL slug (e.g. 'my-site' → my-site.dplooy.com) |
Response — 201 Created
{
"success": true,
"url": "https://my-site.dplooy.com",
"projectId": "a1b2c3d4-e5f6-...",
"isRedeploy": false,
"plan": "pro",
"expiresAt": null,
"fileCount": 12,
"warnings": []
}Example
curl -X POST https://api.dplooy.com/api/v1/deploy/zip \
-H "Authorization: Bearer dpk_live_your_key_here" \
-F "file=@website.zip" \
-F "name=my-website" \
-F "projectName=my-website"Code Examples
Copy-paste examples to get started in your language of choice.
Deploy HTML + CSS
curl -X POST https://api.dplooy.com/api/v1/deploy \
-H "Authorization: Bearer dpk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"html": "<!DOCTYPE html><html><head><title>My Site</title></head><body><h1>Hello World</h1></body></html>",
"css": "h1 { color: teal; font-family: sans-serif; }",
"name": "my-site"
}'Deploy ZIP
curl -X POST https://api.dplooy.com/api/v1/deploy/zip \
-H "Authorization: Bearer dpk_live_your_key_here" \
-F "file=@website.zip" \
-F "name=my-website" \
-F "projectName=my-website"List Projects
curl https://api.dplooy.com/api/v1/projects \
-H "Authorization: Bearer dpk_live_your_key_here"GitHub Actions
Auto-deploy on every push to main. Same project URL, updated content.
Push to Main
GitHub Actions triggers on every push to your main branch.
Auto-Redeploy
Same project name = same URL. Content updates in-place, analytics preserved.
Secure
API key stored as a GitHub Secret — never exposed in your code or logs.
Setup (one-time)
- Go to your GitHub repo → Settings → Secrets and variables → Actions
- Click New repository secret
- Name:
DPLOOY_API_KEY - Value: paste your
dpk_live_...key - Add the workflow file below to your repo
For repos that are already plain HTML/CSS/JS — no build step needed.
# .github/workflows/deploy.yml
name: Deploy to Dplooy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Dplooy
run: |
zip -r site.zip . -x ".git/*" ".github/*" "node_modules/*" "README.md"
curl -X POST https://api.dplooy.com/api/v1/deploy/zip \
-H "Authorization: Bearer ${{ secrets.DPLOOY_API_KEY }}" \
-F "name=${{ github.event.repository.name }}" \
-F "file=@site.zip""isRedeploy": true so your CI pipeline knows it was an update.MCP Server
Deploy websites directly from Claude, Cursor, Windsurf, and any AI assistant that supports Model Context Protocol. Just ask your AI to build a site and deploy it — no copy-pasting needed.
Install Once
One command to add the MCP server to your AI tool. Runs locally via npx.
Ask Your AI
"Build a coffee shop landing page and deploy it to Dplooy" — that's it.
Instant Deploy
The AI generates code and deploys in one step. Get a live URL back immediately.
Install
The MCP server is published on npm as @dplooy/mcp-server. It runs locally on your machine and talks to the Dplooy API using your key.
Run this single command in your terminal:
claude mcp add -t stdio \
-e DPLOOY_API_KEY=dpk_live_your_key_here \
dplooy -- npx -y @dplooy/mcp-serverRestart Claude Code after adding. The dplooy tools will appear automatically.
Available Tools
| Tool | Description |
|---|---|
deploy_website | Deploy HTML/CSS/JS to a live URL |
deploy_folder | Deploy a local folder (zips and uploads automatically) |
list_projects | List all your deployed projects |
get_project | Get details about a specific project |
delete_project | Delete a project permanently |
get_account | View your plan, usage, and limits |
Example Usage
Once installed, just chat with your AI assistant naturally:
URL: https://my-portfolio.dplooy.com
Rate Limits & Plans
API limits are based on your plan. Upgrade anytime for higher limits.
| Limit | Free | Plus$4.99/mo | Pro$12.99/mo |
|---|---|---|---|
| Projects | 3 | 25 | Unlimited |
| Max File Size | 5 MB | 50 MB | 100 MB |
| Total Storage | 50 MB | 500 MB | 5 GB |
| Project Expiry | 3 days | Never | Never |
| Rate Limit | 30 req/min | 30 req/min | 30 req/min |
| API Access | ✓ | ✓ | ✓ |
429 Too Many Requests. Wait 60 seconds and retry.Error Handling
All errors return JSON with an error message and a machine-readable code.
{
"error": "Invalid or revoked API key",
"code": "INVALID_API_KEY"
}| Status | Code | Description |
|---|---|---|
| 400 | VALIDATION_FAILED | Missing or invalid request parameters |
| 400 | PROJECT_LIMIT_REACHED | You've hit your plan's project limit |
| 400 | FILE_TOO_LARGE | Content exceeds your plan's file size limit |
| 400 | SECURITY_THREAT_DETECTED | Malicious content detected in HTML |
| 400 | NO_INDEX_HTML | ZIP file must contain an index.html at root |
| 400 | INVALID_FILE_TYPE | Only ZIP files are accepted for /deploy/zip |
| 401 | INVALID_API_KEY | Missing, invalid, or revoked API key |
| 404 | NOT_FOUND | Project does not exist or isn't yours |
| 429 | RATE_LIMITED | Too many requests — wait 60 seconds |
| 500 | DEPLOY_FAILED | Internal error during deployment |