ShipStatic Docs llms.txt llms-full.txt

Deployments

A deployment is an immutable snapshot of static files. Once created, its contents never change.

Every deployment gets a unique ID (e.g. happy-cat-abc1234) and an instant preview URL.

Available via Web, CLI, SDK, MCP, Action, and API.

Properties

Property Description
deployment Unique identifier
url Preview URL, immediately accessible
files Number of files
size Total size in bytes
status Lifecycle state (see below)
labels Mutable tags for organization
password true if the deployment is password-protected
via Origin tag — see Origin tags below
created Creation timestamp
claim Claim URL — present only on response of public (unauthenticated) deploys
expires Expiration timestamp for unclaimed public deployments (3 days from creation; absent for owned deployments)

Status

pending → success → deleting
        → failed  → deleting

A deployment starts as pending during upload. On success, the preview URL goes live. Deletion is asynchronous from any terminal state — the status transitions to deleting while files are cleaned up.

Behaviors

Immutable. After creation, only labels can be modified. To change content, create a new deployment.

Path optimization. When all files share a common root directory (e.g. dist/), the platform flattens it automatically - dist/index.html becomes index.html.

SPA detection. The platform analyzes your index.html for single-page app patterns (React Router, Vue Router, etc.) and configures client-side routing fallbacks automatically.

Public Deployments

Deploys without authentication go to the public account and expire 3 days from creation. The response includes a claim URL — visit it while signed in at my.shipstatic.com to transfer the deployment to your account.

$ npx -y @shipstatic/ship ./dist --json
{
  "deployment": "happy-cat-abc1234",
  "url": "https://happy-cat-abc1234.shipstatic.com",
  "claim": "https://my.shipstatic.com/claim/...",
  "expires": "..."
}

Once claimed, the deployment is yours, never expires, and the claim URL stops working. Until claimed, anyone with the claim URL can take ownership — treat it like a one-time token.

Custom domains, password rotation, and listing/management operations require an API Key. The deploy itself doesn't.

Password Protection

Deployments can be locked behind a password set at upload time. Visitors see an unlock page until they enter the correct value. The plaintext is hashed with SHA-256 before storage — only the hash is kept, never the password.

Length: 6 to 128 characters. There is no edit-in-place — to change or remove a password, redeploy.

ship ./dist --password 'hunter2!'

Labels

Labels organize and filter deployments. Each label is 3–63 lowercase alphanumeric characters with ., -, or _ separators. Maximum 10 per deployment.

production
v1.0.3
staging.preview

Origin tags

The via field records which interface created the deployment, useful for filtering listings by origin.

Value Origin
web Web console (drag-drop or upload)
cli CLI
sdk SDK used directly
mcp MCP server (AI agents)
git Action (GitHub Actions)
n8n n8n community node
gpt GPT Action (custom GPT integration)
vsc VS Code extension

Operations

Operation Description
Upload Create a new deployment from files
List All deployments on your account
Get Details of a specific deployment
Set Update labels
Remove Delete a deployment and its files