Access & visibility
Allow documents.ReplaceTextDocument on your API key.
Workspace access by default. Private member data requires approved member delegation through Brigg-Act-As; the key supplies permissions while private ownership and project boundaries remain enforced.
Request fields
Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.
file_idstringRequiredUse the file_id of a collaborative text document. Find an existing document with ListDocuments and select kind=text_document. An uploaded PDF, Word file or plain-text file is not a collaborative text document. documents.CreateTextDocument.
At least 1 character.
mdstringRequiredEntire new Markdown body. This replaces all current content; an empty string clears the body. Use EditTextDocument for a targeted change.
expected_revisionstringOptionalCopy revision from the latest ReadTextDocument response. A concurrent change returns 409 revision_conflict without applying this edit. Re-read, reconcile and submit a new request with a new idempotency key. Omit only when intentionally editing the current content regardless of prior changes.
At least 1 character. At most 200 characters.
Work with text and saved versions
All documents use a stable file_id. Select document_kind=text_document from the listing for these collaborative text operations. Read text document returns its current Markdown and location.
For an exact change, use Edit text document with the existing text and its replacement; this avoids sending an old full copy over another edit. Replace text document replaces the entire Markdown body. Send the read response’s revision as expected_revision to refuse intervening changes atomically. Re-read before resolving a failed match or revision conflict.
A saved version_id identifies historical content. List versions before reading or reverting one, and use Checkpoint text document when you need a named saved point. A revert changes current content; it is not just a historical read.
Response
Returns 200 OK with a JSON body.
The live state is checkpointed before replacement, and the new content reaches open editors. With expected_revision, the comparison and replacement happen atomically against the live state. Without it, a full replacement can overwrite intervening edits.
file_idstringRequiredThe same stable identity supplied as file_id. This response uses camelCase; later requests still use file_id.
filenamestringRequiredCurrent document name. A collaborative text document is not an uploaded PDF or Word file and does not require a filename extension.
scopestring or nullRequiredCurrent document collection: org is workspace-shared, user is personal, and resources is the resources collection. Null means no collection is recorded; it does not grant access. This is location metadata, not a request to move the document.
pathstringRequiredFolder path within the current collection. An empty string is the collection root.
word_countnumberRequiredWord count of the returned or saved text, excluding Markdown formatting.
revisionstringRequiredOpaque token identifying this exact content. Pass it as expected_revision to a text edit. It is not a history version_id and cannot be used to select an export version.
version_idstring or nullRequiredVersion ID of the resulting content, not a backup of the previous text. An automatic save returns null when the content matches the stored projection and no new version is needed. Null is not an empty document or a failed edit. ListTextDocumentVersions discovers saved versions; keep each version_id together with its file_id.
Errors & retries
Set BRIGG_REQUEST_ID once for each logical action. The samples send it as Idempotency-Key. Reuse the same value and body on retries, including after a timeout; a missing response does not prove the action failed.
For rate limits, follow the server’s retry guidance and back off. See HTTP errors and safe retries and limits.
| HTTP status | Code | What to do |
|---|---|---|
| 400 | invalid_json |
Send a JSON object with Content-Type: application/json. |
| 400 | invalid_input |
Check the request fields and types. Supply a stable Idempotency-Key containing 1–200 characters. |
| 401 | invalid_key |
The workspace API key is missing, invalid or revoked. |
| 403 | forbidden |
Check the key’s operation and resource grants. If Brigg-Act-As is supplied, the key must be authorized to delegate to that member. |
| 404 | not_found |
The requested operation or resource is not available to this credential. |
| 429 | rate_limited |
Wait for Retry-After before retrying. Reuse the original Idempotency-Key. |
| 409 | not_text_document |
This file is not a collaborative text document. Use CreateTextDocument or select kind=text_document from ListDocuments. |
| 409 | revision_conflict |
The live content changed since expected_revision. No edit was applied. Re-read, reconcile your change and use a new idempotency key. |
Next steps
JSON schemas
Use the complete schemas for validation or client generation.
Full request JSON schema
{
"type": "object",
"properties": {
"file_id": {
"type": "string",
"minLength": 1,
"description": "Use the file_id of a collaborative text document. Find an existing document with [ListDocuments](/developers/reference/documents/ListDocuments) and select kind=text_document. An uploaded PDF, Word file or plain-text file is not a collaborative text document. [documents.CreateTextDocument](/developers/reference/documents/CreateTextDocument)."
},
"md": {
"type": "string",
"description": "Entire new Markdown body. This replaces all current content; an empty string clears the body. Use EditTextDocument for a targeted change."
},
"expected_revision": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Copy revision from the latest ReadTextDocument response. A concurrent change returns 409 revision_conflict without applying this edit. Re-read, reconcile and submit a new request with a new idempotency key. Omit only when intentionally editing the current content regardless of prior changes."
}
},
"required": [
"file_id",
"md"
],
"additionalProperties": false,
"examples": [
{
"file_id": "f_project_notes",
"md": "# Project notes\n\nThe kickoff is on Wednesday.",
"expected_revision": "tdr_before_edit"
}
]
}Full response JSON schema
{
"type": "object",
"properties": {
"file_id": {
"type": "string",
"description": "The same stable identity supplied as file_id. This response uses camelCase; later requests still use file_id."
},
"filename": {
"type": "string",
"description": "Current document name. A collaborative text document is not an uploaded PDF or Word file and does not require a filename extension."
},
"scope": {
"type": [
"string",
"null"
],
"description": "Current document collection: org is workspace-shared, user is personal, and resources is the resources collection. Null means no collection is recorded; it does not grant access. This is location metadata, not a request to move the document."
},
"path": {
"type": "string",
"description": "Folder path within the current collection. An empty string is the collection root."
},
"word_count": {
"type": "number",
"description": "Word count of the returned or saved text, excluding Markdown formatting."
},
"revision": {
"type": "string",
"description": "Opaque token identifying this exact content. Pass it as expected_revision to a text edit. It is not a history version_id and cannot be used to select an export version."
},
"version_id": {
"type": [
"string",
"null"
],
"description": "Version ID of the resulting content, not a backup of the previous text. An automatic save returns null when the content matches the stored projection and no new version is needed. Null is not an empty document or a failed edit. ListTextDocumentVersions discovers saved versions; keep each version_id together with its file_id."
}
},
"required": [
"file_id",
"filename",
"scope",
"path",
"word_count",
"revision",
"version_id"
],
"additionalProperties": false,
"examples": [
{
"file_id": "f_project_notes",
"filename": "Project notes",
"scope": "org",
"path": "Projects",
"word_count": 7,
"revision": "tdr_after_edit",
"version_id": "tdv_project_notes_2"
}
]
}