Skip to main content
All file endpoints operate within the pod’s filesystem. Paths must be absolute and within /home/instapod, /var/www, or /tmp.

List Files

Response: 200 OK
Returns an empty files array if the directory doesn’t exist.

Read a File

Response: 200 OK

Write a File

Request Body:
Response: 200 OK
Parent directories are created automatically if they don’t exist.

Upload a File

Request: multipart/form-data Response: 200 OK

Download a File

Returns the raw file contents as binary with Content-Disposition: attachment.

Delete a File

Response: 200 OK
Works on both files and directories (recursive delete).

Rename / Move

Request Body:
Response: 200 OK

Copy

Request Body:
Response: 200 OK
Works recursively for directories.

Create Folder

Request Body:
Response: 200 OK
Creates the full directory tree (equivalent to mkdir -p).

Sync Endpoints

Three endpoints exist for uploading a whole project efficiently. They are what instapods deploy uses, and they’re documented here because anything that syncs a directory wants the same three steps: compare cheaply, confirm what looks unchanged, then upload the rest in one request.

File Manifest

A recursive listing of every file under a directory with its size, as a flat map of path relative to path to bytes. Response: 200 OK
A directory that doesn’t exist yet returns an empty files object, not a 404.

File Hashes

The SHA-256 of specific files. Sizes alone can’t tell a same-length edit from no edit at all, so ask for hashes of exactly the files whose size matched the manifest rather than hashing the whole tree.
Response: 200 OK
A file that is missing or unreadable is simply absent from hashes rather than reported as an error. Treat an absent hash as “changed” and re-upload it; that’s the safe direction, and it’s what the CLI does.

Upload an Archive

Uploads a .tar.gz and extracts it into a directory on the pod, replacing what would otherwise be one request per file. Request: multipart/form-data
Response: 200 OK
The archive is extracted over the target directory: existing files with the same path are overwritten, and files not in the archive are left alone. It is not a mirror, so it never deletes. Ownership under /home/instapod is fixed up afterwards.

Path Validation

All paths must be:
  • Absolute (start with /)
  • Within allowed directories: /home/instapod, /var/www, or /tmp
  • Free of traversal (no .. segments)
Invalid paths return 400 Bad Request.