Write an app file

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Writes a whole file into the app's sandbox, creating it or replacing it.

Every sandbox-bridge endpoint runs against the app's live sandbox, the same filesystem the Base44 builder edits, so a change here is visible in the builder immediately.

The default refuses to clobber: writing a path that already exists answers 409 unless you send overwrite: true. Read created and overwritten on the response to see which happened.

content cannot be empty. The builder's write path reads empty content as a delete, so this endpoint rejects it rather than deleting a file behind a write call. To create an empty file, run touch through Run a sandbox command; to change part of a file, use Edit an app file, which is cheaper than sending the whole thing.

Base44 refuses paths outside the app and a set of protected paths, both with a 400. A file over the 6 MB cap answers 413.

This endpoint is limited to 60 requests per minute per app, shared with the other sandbox-bridge endpoints that change files.

<Warning>A write is committed, not checkpointed. Only checkpoints appear in the builder's version history, and a Restore or Revert there rolls the app back to the last checkpoint and discards everything written after it. Call Create a sandbox checkpoint when you finish a unit of work and before you stop.</Warning>

<Note>The sandbox bridge needs a Builder plan or higher on the app's workspace, and answers 402 below that. Workspace API keys are not authorized and are rejected with a 403, and it is unavailable for agent apps. A personal API key works as-is. An OAuth access token needs the sandbox:write scope.</Note>

<Tip>Every error response carries a stable extra_data.code alongside the human-readable message. Branch on the code rather than on the message text or the status.</Tip>

post/api/apps/{app_id}/sandbox-bridge/write_file

Path parameters

app_idstring required

ID of the app whose sandbox to operate on.

ID of the app whose sandbox to operate on.

Request body

branch_idstring nullable

Optional Base44 branch ID. Omit to operate on main.

pathstring required

File path relative to the app root.

contentstring required

Full file content to write. To create an empty file (e.g. .gitkeep) use run_command (touch) — the platform write path treats empty content as a delete.

overwriteboolean

Must be true to overwrite an existing file (destructive). Default false never clobbers.

Response

The file was written.

pathstring required

The normalized path that was written.

bytes_writteninteger required

Size of the content written, in bytes.

createdboolean required

true when the file did not exist before this call.

overwrittenboolean required

true when the file existed and was replaced. Never true unless you sent overwrite.

warningsstring[] required

Advisories about the write that did not stop it, such as writing somewhere the builder treats specially. Empty when there are none.

Example response

{
  "path": "src/pages/About.jsx",
  "bytes_written": 214,
  "created": true,
  "warnings": []
}

Changes

Changed in 2 of the 14 revisions of this API.2