---
title: "Add or overwrite individual files, leaving the rest of the site alone."
method: POST
path: "/api/v1/sites/{id}/files"
tags: ["files"]
---

# Add or overwrite individual files, leaving the rest of the site alone.

`POST /api/v1/sites/{id}/files`

## Request

- Base URL: `https://harvis.dev`
- URL: `https://harvis.dev/api/v1/sites/{id}/files`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `better-auth.session_token`

Unlike sites.deploy, paths are taken exactly as given: nothing is stripped and nothing is deleted. Use this to change one page; use sites.deploy to publish a rebuilt folder.

## Path parameters

- `id` string, required

## Response `200`

Add or overwrite individual files, leaving the rest of the site alone.

- AddFilesResult
  - `site` Site, required
    - `id` string, required
    - `name` string, required
    - `subdomain` string, required
    - `url` string, required: Where the site is served, e.g. https://sunny-otter-42.harvis.page.
    - `entrypoint` string, required: The file served at the site's root.
    - `fileCount` integer, required
    - `totalSize` integer, required: Bytes stored, summed over every file.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `added` integer, required

## Other responses

- `400`: `invalidRequest`, `noFiles`
- `401`: `unauthorized`
- `403`: `suspended`
- `404`: `siteNotFound`
- `413`: `tooLarge`, `tooManyFiles`

---

[API](https://skmtc.dev/harvis/apis/harvis-dev-api.md) · [All operations](https://skmtc.dev/harvis/apis/harvis-dev-api/llms.txt) · [OpenAPI document](https://skmtc.dev/harvis/apis/harvis-dev-api/revisions/b06f9e2deebb?raw)
