Developer Tools

Website hosting with an API your agents can use

A REST API and a spec-compliant MCP server over the same surface. Deploy a site, read its live files back, patch a single line, and attach a form backend, booking widget, JSON content or a chatbot — from code, CI or any AI assistant.

RESThttps://api.dplooy.com/api/v1
MCPhttps://api.dplooy.com/mcp
OAuth 2.1 + PKCEStateless Streamable HTTPFree tierNo credit card

Deploy in 3 Steps

From zero to live website in under a minute.

1

Get Your API Key

Go to Settings → API Keys and create a new key. Copy the key — it's shown only once.

dpk_live_aBcDeFgHiJkLmNoPqRsTuVwX
2

Deploy Your Site

Send your HTML to the deploy endpoint. Optionally include CSS and JS as separate strings.

bash
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"}'
3

It's Live!

The API responds with your live URL. That's it — your site is deployed with SSL.

json
{
  "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.

HTTP Header
Authorization: Bearer dpk_live_your_key_here

Getting a Key

  1. Sign in to Dplooy and go to Settings
  2. Open the API Keys tab
  3. 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.

POST/deploy

Deploy 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)

ParameterTypeStatusDescription
htmlstringRequiredHTML content for the page
cssstringOptionalCSS styles — saved as style.css and linked in <head>
jsstringOptionalJavaScript — saved as script.js and linked before </body>
namestringOptionalProject name for the URL (e.g. 'my-site' → my-site.dplooy.com)

Response — 201 Created

json
{
  "success": true,
  "url": "https://my-site.dplooy.com",
  "projectId": "a1b2c3d4-e5f6-...",
  "isRedeploy": false,
  "plan": "pro",
  "expiresAt": null
}

Example

bash
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"
  }'
POST/deploy/zip

Deploy 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)

ParameterTypeStatusDescription
filefileRequiredZIP file containing the website (max 500 MB)
namestringOptionalDisplay name for the project
projectNamestringOptionalURL slug (e.g. 'my-site' → my-site.dplooy.com)

Response — 201 Created

json
{
  "success": true,
  "url": "https://my-site.dplooy.com",
  "projectId": "a1b2c3d4-e5f6-...",
  "isRedeploy": false,
  "plan": "pro",
  "expiresAt": null,
  "fileCount": 12,
  "warnings": []
}

Example

bash
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

deploy.sh
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

deploy-zip.sh
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

list.sh
curl https://api.dplooy.com/api/v1/projects \
  -H "Authorization: Bearer dpk_live_your_key_here"

GitHub Actions

Auto-deploy on every push. Same project URL, updated content, analytics preserved. Most repos need no manual setup at all.

Webhook auto-deploy

Static repos — no build step

Connect the repo, then turn on Deploy on every push in the project's GitHub dialog → Deploys tab. Dplooy installs a signed webhook; every push pulls the repo and redeploys.

  • No workflow file in your repo
  • No API key anywhere
  • Nothing to maintain

Actions build pipeline

React, Next.js, Vite, Astro

Set up build & deploy in the GitHub Deploy dialog. Dplooy detects the framework from your package.json and fills in the build command and output folder — confirm them and it does the rest.

  • Creates a dedicated API key for the repo
  • Installs it as an encrypted repo secret
  • Commits the workflow file

Custom workflow (optional)

Only needed if you want to write your own pipeline instead of using the one-click setup above — for a monorepo, a custom build, or deploying from a non-GitHub CI.

Manual setup

  1. Go to your GitHub repo → Settings → Secrets and variables → Actions
  2. Click New repository secret
  3. Name: DPLOOY_API_KEY
  4. Value: paste your dpk_live_... key
  5. 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
# .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"
AI Integration

MCP Server

Build and deploy complete websites from claude.ai, ChatGPT, Claude Code, Cursor, Windsurf and any client that speaks Model Context Protocol. Two ways to connect — remote over OAuth with nothing to install, or the local npm package. Both expose the same tool set.

Remote — OAuth, no install

The only option for claude.ai and ChatGPT on the web

Recommended

Add one custom connector URL. The client discovers everything else itself and runs the OAuth flow — no API key is created, copied or stored.

Settings → Connectors → Add custom connector
https://api.dplooy.com/mcp

Standards implemented

Stateless Streamable HTTP, OAuth 2.1 + PKCE (S256 required), RFC 9728 protected-resource metadata, RFC 8414 server metadata, RFC 8707 resource indicators, RFC 9207 issuer identification, Client ID Metadata Documents with RFC 7591 DCR fallback.

Good to know

Custom connectors on claude.ai need a paid Claude plan; Team and Enterprise workspaces may be admin-gated. In ChatGPT they live in developer mode. Clients cache the tool list at connect time — refresh the connector to pick up newly added tools.

Manage or revoke connected apps in Settings → Connections. Revoking takes effect on the connection's next request.

Local install (stdio)

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:

Terminal
claude mcp add -t stdio \
  -e DPLOOY_API_KEY=dpk_live_your_key_here \
  dplooy -- npx -y @dplooy/mcp-server

Restart Claude Code after adding. The dplooy tools will appear automatically.

Available Tools

ToolDescription
deploy_websiteDeploy HTML/CSS/JS to a live URL
deploy_filesDeploy a multi-page site by passing each file inline (remote only)
deploy_folderDeploy a local folder, zipped automatically (local only)
list_projectsList all your deployed projects
get_projectGet details about a specific project
get_project_filesRead a deployed site's live source files
update_project_filesPatch a live site — targeted string edits, explicit deletes
delete_projectDelete a project permanently
get_accountPlan, usage, limits and the per-feature availability matrix
get_guideCanonical rules for any feature, read by the AI itself
create_formCreate a form endpoint and get the HTML snippet
list_formsList form endpoints and their usage
create_data_collectionCreate a content collection from 20 presets
get_data_collectionFields, rows, public URL and fetch snippet
list_data_collectionsList collections and their assignments
update_data_rowsRow-level edits, appends and deletes, or a full replace
create_booking_pageCreate a booking calendar and get the widget embed
list_booking_pagesList booking widgets and pending requests
upload_mediaAdd up to 16 images per call, ingested by URL
list_mediaList images in the media library
assign_to_projectBind forms, collections and bookings to a project
configure_chatbotEnable and configure the server-injected AI chatbot

Example Usage

Once installed, just chat with your AI assistant naturally:

"Build a minimal portfolio site with my name, a bio, and links to my social profiles. Deploy it as my-portfolio."
I'll create that for you and deploy it now...
Website deployed successfully!
URL: https://my-portfolio.dplooy.com

Rate Limits & Plans

API limits are based on your plan. Upgrade anytime for higher limits.

LimitFreePlus$4.99/moPro$12.99/mo
Projects325Unlimited
Max File Size5 MB50 MB100 MB
Total Storage50 MB500 MB5 GB
Project Expiry3 daysNeverNever
Rate Limit30 req/min30 req/min30 req/min
API Access

Error Handling

All errors return JSON with an error message and a machine-readable code.

Error Response
{
  "error": "Invalid or revoked API key",
  "code": "INVALID_API_KEY"
}
StatusCodeDescription
400VALIDATION_FAILEDMissing or invalid request parameters
400PROJECT_LIMIT_REACHEDYou've hit your plan's project limit
400FILE_TOO_LARGEContent exceeds your plan's file size limit
400SECURITY_THREAT_DETECTEDMalicious content detected in HTML
400NO_INDEX_HTMLZIP file must contain an index.html at root
400INVALID_FILE_TYPEOnly ZIP files are accepted for /deploy/zip
401INVALID_API_KEYMissing, invalid, or revoked API key
404NOT_FOUNDProject does not exist or isn't yours
429RATE_LIMITEDToo many requests — wait 60 seconds
500DEPLOY_FAILEDInternal error during deployment
Ready to Build?

Start deploying in seconds

Create a free account, grab an API key, and ship your first project with a single command.

No credit card required · Free plan includes 3 projects · Upgrade anytime