---
title: "Append files to an existing drop (subscribers)"
method: POST
path: "/deploy/{slug}"
---

# Append files to an existing drop (subscribers)

`POST /deploy/{slug}`

## Request

- Base URL: `https://ship.page`
- URL: `https://ship.page/deploy/{slug}`
- Auth: HTTP bearer

Adds files to a drop you own, up to 10,000 files per drop in total. Same body formats as POST /deploy. Existing password protection is preserved. Password input via query or X-Ship-Password is rejected; use the owner password endpoints to rotate it.

## Path parameters

- `slug` string, required

## Request body

- FilesBody
  - `files` object, required: Path → content map. Values are a string, or { encoding: "base64", content: string } for binary.

## Response `200`

Files appended.

- AppendResponse
  - `slug` string, required
  - `url` string, uri, required
  - `files` string[], required: Files added by this request.
  - `total_files` integer, required: Total files in the drop after appending (cap 10,000).
  - `plan` 'free' | 'pro' | 'team', required
  - `expires_at` string, date-time, nullable, required

## Other responses

- `400`: Bad request — unparseable body, bad paths, invalid ttl/name, per-request file cap, invalid zip.
- `401`: Missing or invalid credential.
- `402`: Subscriber-gated feature on a free account. The body's `hint` and `upgrade_url` tell the user how to upgrade.
- `404`: Not found (also returned for resources owned by someone else).
- `413`: Payload too large — a non-zip body over 10 MB, a zip over the plan cap or past its 4× decompression ceiling, or the 10,000-file drop total.
- `429`: Rate limited. Back off per the Retry-After header (60s).

## Changes

- **2026-10-20** `99aad34506e8`: 84 warning
  - added the new `already_live` enum value to the `code` response property for the response status `400`
  - added the new `already_live` enum value to the `code` response property for the response status `401`
  - added the new `already_live` enum value to the `code` response property for the response status `402`
  - added the new `already_live` enum value to the `code` response property for the response status `404`
  - …80 more

[Operation history](https://skmtc.dev/ship/apis/ship-page/changes/deploy/:slug/post.md)

---

[API](https://skmtc.dev/ship/apis/ship-page.md) · [All operations](https://skmtc.dev/ship/apis/ship-page/llms.txt) · [OpenAPI document](https://skmtc.dev/ship/apis/ship-page/revisions/99aad34506e8?raw)
