Replace uploaded file content
Interface Description
Replace the complete Markdown content of one uploaded file and optionally move it.
Endpoint
| Field | Value |
|---|---|
| Method | PUT |
| Path | /openapi/v2/knowledge-bases/{knowledgeBaseId}/source-files/{sourceFileId}/content |
| Operation ID | replaceSourceFileContent |
| Authentication | Bearer OpenAPI key |
Parameters
| Name | Location | Required | Type | Example | Description |
|---|---|---|---|---|---|
knowledgeBaseId | path | Yes | string | knowledge-base-11111111-1111-4111-8111-111111111111 | Knowledge-base identifier returned by knowledge-base APIs. |
sourceFileId | path | Yes | string | source-file-11111111-1111-4111-8111-111111111111 | Uploaded-file identifier returned by upload or uploaded-file list APIs. |
Idempotency-Key | header | Yes | string | mutation-2026-07-10-001 | Client-generated key for safely retrying the same request. Reuse the same value for retries so duplicate work is not created. |
If-Match | header | Yes | string | "1" | Current resourceRevision returned by the API. If the resource changed after it was read, the request returns a conflict instead of overwriting the newer change. |
X-Source-Relative-Path | header | No | string | handbook/setup/install.md | Optional new path when replacing and moving the file in one request. The destination directory must already exist. |
Request Body
text/markdown
Schema type: string
Complete Markdown content that will replace the current file.
Request Example
bash
curl -X PUT "https://openapi.example.com/openapi/v2/knowledge-bases/knowledge-base-11111111-1111-4111-8111-111111111111/source-files/source-file-11111111-1111-4111-8111-111111111111/content" \
-H "Authorization: Bearer <openapi-key>" \
-H "Idempotency-Key: mutation-2026-07-10-001" \
-H "If-Match: \"1\"" \
-H "X-Source-Relative-Path: handbook/setup/install.md" \
-H "Content-Type: text/markdown" \
--data-binary "# Installation\n\nCurrent installation guidance."Successful Responses
202
File content replacement accepted for background processing.
| Field | Required | Type | Description |
|---|---|---|---|
operation | Yes | object | File or directory change record returned by the request. |
Success Response Example
json
{
"operation": {
"operationId": "source-replace-44444444-4444-4444-8444-444444444444",
"knowledgeBaseId": "knowledge-base-11111111-1111-4111-8111-111111111111",
"kind": "source_file_replace",
"state": "processing",
"expectedResourceRevision": 1,
"targetKind": "source_file",
"targetId": "source-file-11111111-1111-4111-8111-111111111111",
"candidateRelativePath": "handbook/setup/install.md",
"result": null,
"errorCode": null,
"retryGuidance": "Check this change again after a short delay.",
"actions": {
"self": "/openapi/v2/knowledge-bases/knowledge-base-11111111-1111-4111-8111-111111111111/operations/source-replace-44444444-4444-4444-8444-444444444444"
},
"createdAt": "2026-06-17T00:00:00.000Z",
"updatedAt": "2026-06-17T00:00:00.000Z",
"completedAt": null
}
}Error Codes
The table below lists every error response documented for this operation.
| HTTP Status | Error Code | Explanation |
|---|---|---|
| 401 | UNAUTHORIZED | The Bearer API key is missing, malformed, unknown, revoked, or deleted. |
| 404 | NOT_FOUND | The requested resource was not found. |
| 409 | CONFLICT | The request conflicts with the resource's current state. |
| 413 | PAYLOAD_TOO_LARGE | The request body or requested file exceeds the size limit for this operation. |
| 422 | VALIDATION_ERROR | The request failed validation. |
| 429 | RATE_LIMITED | The request exceeded the configured rate limits. |
| 500 | INTERNAL_ERROR | The API encountered an internal error. |
| 503 | DATABASE_REPOSITORY_UNAVAILABLE | The data required by this operation is temporarily unavailable. |