DashPloy
On this page
Before you start

Your AI needs to be able to send your website to us, not just write it. Assistants that run on your computer can; most chat windows in a browser tab cannot, and will say so rather than failing quietly.

Which AI can publish? — and what to do if yours cannot.

Getting started

Find your personal code

You already have one — every account is given a code when it is created. While it is still unused it sits in the green bar at the top of every page, with a button that copies the whole line you need. You can also find it any time on your codes page. It is a private password that lets your AI publish websites for you.

That bar disappears the first time your AI uses the code, and the code stops being shown anywhere after that. It keeps working — but if you lose it, it cannot be looked up again. Replace it with a new one and give that to your AI instead.

Give it to your AI

Paste this into Antigravity, Cursor, Claude Code, or ChatGPT with Codex — or whichever AI you use — replacing the capital letters with your own code. Not every assistant can publish; this page says which can.

Paste this into your AI
Deploy my website with DashPloy.

Read https://dashploy.com/llms.txt first — it explains how to publish, how to
check what my plan allows before you build, and what to do if I do not have an
account yet.

Also available as a plain file at https://dashploy.com/start.txt

That is all your AI needs. It reads the instructions itself.

Ask for a website

Describe what you want in your own words — for example, “make me a one-page site for my dog-walking business with prices and a contact form”. Your AI builds it, publishes it, and gives you a link like your-name.dashploy.app.

Want changes? Just ask. The same address updates within seconds.

Keeping your code safe

Your code is like a password.
  • Only give it to an AI assistant you use and trust.
  • Never share it publicly — not in screenshots, videos, forums or chats.
  • Anyone who has it could publish websites in your name.
  • If you think it has been seen, delete it and create a new one. The old one stops working immediately.

Separately: the websites you publish are public, exactly like any other website. Never put passwords, private keys or personal information into a page — anyone can view it.

What you can publish

Websites and pages

Personal sites, portfolios, small business pages, menus, landing pages, documentation. Anything that runs in a browser.

Interactive tools

Calculators, games, charts, forms and small apps. These run on your visitor’s device, so they use none of your computing allowance — their files still count as requests, like any other page.

Apps with a back end

If your AI needs to keep secrets or talk to a database, it can publish a small server-side app too. This needs a verified account.

Your web address

Every site gets a free address that works immediately, and you can put your own domain name on top of it whenever you like.

The free one

your-name.dashploy.app, on every plan including the free one, with its HTTPS certificate issued and renewed for you. Nothing to set up and nothing to pay.

A domain you already own

Point it here by adding one record at whoever you bought it from. Ask your AI to connect it and it will give you the exact record to paste; your domains page shows the same thing, and tells you when it has gone live.

A domain bought here

Ask your AI to search for one and it will come back with prices. We show what it costs to register and what it costs to renew, because those are often different. Buying it here means there is nothing to connect — it is pointed at your site for you.

How many

1 on Free, 2 on Starter and 5 on Pro. The free address keeps working alongside them, so a link you have already shared never breaks.

Changing, undoing and deleting

All of it is done by asking your AI, in ordinary words. These are the ones where it is worth knowing what happens before you ask.

Going back a version

Every version you publish is kept. If a change goes wrong, ask your AI to put the previous one back — it is one step and nothing was thrown away. You can also do it yourself from the website’s page in your dashboard.

Renaming a site

You can change the free address at any time. The old one stops working straight away, so any link you have already given out breaks — which is the one reason to think before doing it. A domain of your own is unaffected.

Deleting

Deleting a website takes it offline and removes its files, the stored copies of its source, and its logs. It cannot be undone, so take a copy of anything you want to keep first.

What it costs

The free plan does not expire and never asks for a card. Paid plans are for room rather than for features — see what each plan includes, or ask your AI to check what you have used.

If something goes wrong

Your AI says it cannot publish

Usually the code is wrong or was deleted. Create a new one and give your AI the new line.

Your site says “over quota”

You have used your monthly allowance. On the free plan the site stops serving until the period resets; on a paid plan it keeps serving more slowly for a while first. Nothing is deleted either way and everything comes back on its own — the reset date is on your dashboard, or you can move up a plan for more room.

Your AI says something is not supported

Some things cannot run here, and your AI is told exactly what and what to use instead. Ask it to build it a different way.

Nothing is loading at all

Check the status page first. It says whether publishing, the dashboard and the addresses we serve are working right now, so you know whether to keep trying.

Still stuck

Ask your AI to check https://dashploy.com/api/v1/whoami — it explains exactly what is wrong with the account and what to do about it. Or send us a message and a person will answer.

What an error means

If your assistant says publishing failed, it will usually name a code. Most of them are for it to act on rather than you — where that is the case, this says so plainly instead of asking you to fix something you cannot see.

Every error code the platform can return, what it means, and what to do.
Code What it means What to do
EMPTY_PROJECTNo files were sent, so there was nothing to publish.Ask your assistant to include every file the site needs, starting with index.html.
NO_ENTRYPOINTThe files arrived but nothing said which page to serve first.A website needs an index.html at the top level; an app needs a fetch handler. Ask your assistant to add one.
NO_BUILD_SCRIPTThe project looks like it needs building, and no build command was found.Ask your assistant to publish the finished files rather than the project that produces them.
INVALID_PACKAGE_JSONThe package.json could not be read.Ask your assistant to check it for a mistake and publish again.
PROJECT_TOO_LARGEThe site is over the file count or size your plan allows.Remove large images and unused files, or move up a plan for more room. The limits are on the pricing page.
MISSING_DEPENDENCYThe code uses a package that is not available here, or a file that was not sent.Only a fixed list of packages can be used. Your assistant is told which, and can rewrite using one of them.
DEPENDENCY_INSTALL_FAILEDA package could not be prepared.Nothing for you to change. Ask your assistant to try again, or to build it without that package.
LOCKFILE_MISMATCHThe versions the project asks for do not match the ones available.Ask your assistant to use the versions we provide rather than pinning its own.
UNSUPPORTED_RUNTIME_APIThe code uses something the environment your site runs in does not have.Common in code written for an ordinary server. Your assistant is told exactly what to use instead — ask it to build it that way.
NODE_VERSION_MISMATCHThe project asks for a version of Node we do not run.Ask your assistant to drop the version requirement.
BUNDLE_FAILEDThe code could not be assembled into something publishable.Nothing for you to change. Ask your assistant to read the error it was given and publish again.
TYPE_ERRORThe code did not pass its own checks.Nothing for you to change. Ask your assistant to fix the reported error.
SYNTAX_ERRORThere is a mistake in the code, and we can name the file and line.Nothing for you to change. Ask your assistant to fix it — it is told where.
MISSING_ENVThe app expects a secret or setting that has not been given to it.Add it under Secrets on your website’s page, or ask your assistant to set it for you.
CPU_LIMIT_EXCEEDEDA single request did too much work and was stopped.Ask your assistant to do the heavy work once and store the result, rather than on every visit.
MEMORY_LIMIT_EXCEEDEDA request tried to hold too much in memory at once.Usually a very large file being read whole. Ask your assistant to handle it in pieces.
BOOT_TIMEOUTThe app took too long to start.Ask your assistant to move work out of the start-up path and into the request that needs it.
UNCAUGHT_EXCEPTIONThe app stopped with an error while answering a request.Your website’s page shows the recent logs. Ask your assistant to read them and fix the cause.
UNAUTHENTICATEDNo code was sent, so we do not know whose account this is.Your assistant needs your code. Copy it from the bar at the top of the page and paste it in again.
INVALID_TOKENThe code sent is wrong, was replaced, or has been revoked.Create a new code on your codes page and give your assistant that one instead.
NOT_FOUNDThe website or version named does not exist on your account.Check the name. Your assistant can list your websites to find the right one.
NAME_TAKENThat address is already in use — by one of your sites, or by somebody else’s.Addresses are unique across the whole platform. Pick another name, or publish to the site that is there on purpose.
INVALID_NAMEThat name cannot be used as a web address.Letters, numbers and hyphens only. Some names are reserved, and names that impersonate a known brand are refused.
DELETE_INCOMPLETEA deletion stopped partway, so the site may still be reachable.Ask your assistant to run the delete again. It is safe to repeat and it finishes the job.
EGRESS_BLOCKEDYour app tried to reach an address it is not allowed to reach.Apps may only contact an approved list of services. Ask your assistant which are allowed, or email support to ask for one to be added.
QUOTA_EXCEEDEDYou have reached one of your plan’s limits for this period.The message names which one. It resets at the start of the next period, or you can move up a plan for more room.
SUSPENDEDThis website, or the account, has been stopped.Email support and we will explain why and what to do. Nothing has been deleted.
CONTENT_REFUSEDAn automated check would not publish this content, so nothing was published.Your existing site, if you have one, is untouched — this stopped the new version going up. The check looks for pages that imitate a well-known company or collect passwords. If that is not what you built, email support and a person will look at it; we aim to answer the same working day.
UNKNOWNSomething failed and we could not identify it precisely.Worth telling us about — email support with what you were doing. Trying again sometimes works.

MCP server

This is the address to give your app:

https://dashploy.com/mcp

You do not need a code for this. Your app will send you here to sign in, and connecting it to your account happens automatically — there is nothing to copy, paste, or keep safe.

Some chat apps let you connect an outside service to them. Connecting DashPloy gives the assistant the one ability it was missing — the ability to send your website somewhere — and after that it can publish from inside the conversation, with nothing installed on your computer.

For somebody who has never opened a terminal this is the easiest route there is. Add a connector wherever your app lists them, using the address above. Which apps support this.

Where the app asks how it should sign in, choose the sign-in option rather than the one for a key or a password. You will land on a DashPloy page listing exactly what the app is asking to do, with a Connect button, and that is the whole setup. You can withdraw it again from Connected apps whenever you like.

If your app has no sign-in option and asks for a key or a header instead, use a header called X-API-Key with your code as its value. Prefer that name over Authorization, even where the app offers both: some apps keep the second one for their own sign-in and quietly discard yours, and the connection still looks perfectly fine afterwards — it says it is connected right up until the first attempt to publish fails.

Either way, to check it worked, ask the assistant to “call whoami on DashPloy”. If it comes back with your email address and your plan, the connection is genuinely good.

Under the covers it is the Model Context Protocol, over Streamable HTTP, with your code as an Authorization: Bearer or X-API-Key header. It is a wrapper over the same API — same account, same limits, same websites — so anything you can do one way you can do the other. The full tool list is in the API reference, and your assistant can read /llms.txt for the rest.

For developers

There is a full reference at https://dashploy.com/api-reference — every endpoint, every field, a sample response and the error codes each one can return. It is generated from the same catalogue the API is checked against, so it cannot describe a call that does not exist.

It is a plain HTTP API: no SDK, no CLI, nothing to install. Sites are served from *.dashploy.app, a separate domain from this one, so nothing anyone publishes can affect the platform.

curl -X POST https://dashploy.com/api/v1/deploy \
  -H "Authorization: Bearer $DASHPLOY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"project":"my-site","files":[
        {"path":"index.html","content":"<h1>Hello</h1>"}]}'

That call creates the project. Running it a second time against a project that already has a website is refused with 409 unless you add "replace": true — publishing replaces everything that is there, so it has to be asked for. Nothing is lost either way: every previous version is kept and can be restored.

If you are wiring up an assistant rather than writing the calls yourself, /llms.txt is the same API written for a model to read directly.