---
title: "同期のファイルを上げる"
method: PUT
path: "/knowledge/sources/{source_id}/uploads/{sha256}"
tags: ["Sync"]
---

# 同期のファイルを上げる

`PUT /knowledge/sources/{source_id}/uploads/{sha256}`

## Request

- Base URL: `https://api.leafchat.app/api/v1`
- URL: `https://api.leafchat.app/api/v1/knowledge/sources/{source_id}/uploads/{sha256}`
- Auth: HTTP bearer

同期の計画（POST …/sync）が uploads_required で求めたファイルを 1 件ずつ上げる。計画が求めていないファイルは受けない。

本文はファイルのバイト列そのまま。Content-Type に形式、Content-Length に大きさを付ける。中身の SHA-256 が URL と違えば 422 upload_mismatch。

同じファイルを 2 度上げると、2 度目は 200 で何もしない。受け取ったファイルは 24 時間で消える（その間に実行の同期を呼ぶ）。

## Path parameters

- `source_id` string, required
- `sha256` string, required: ファイルの中身の SHA-256（16 進の小文字）

## Request body

- string, binary

## Response `200`

受け取り済み（何もしない）

- UploadAccepted
  - `sha256` string, required
  - `size` integer, required
  - `already_uploaded` boolean, required

## Other responses

- `201`: 受け取った
- `400`: 要求の形式か値が正しくない。errors（検証の誤り）に項目（path）ごとの理由が入る 返る code：`invalid_request`・`empty_manifest`・`duplicate_item`
- `401`: API キーが無いか無効（期限切れ・失効・削除の途中の組織を含み、理由は区別しない） 返る code：`unauthorized`
- `403`: この API キーの用途か、対象のソースでは実行できない 返る code：`forbidden`・`needs_draft`
- `404`: 指定した ID かパスが無い（ほかの組織の ID も同じ応答になる）。削除した文書は、削除の起票が保守の GC で消えるまで DELETE が already_deleted を返し、その後は 404 返る code：`not_found`
- `409`: 今の状態と合わない。code で見分ける 返る code：`source_locked`・`limit_exceeded`・`delete_limit_exceeded`・`folder_not_found`・`folder_limit_exceeded`・`upload_required`・`upload_not_expected`・`sync_in_progress`・`not_sync_source`・`same_name_exists`・`external_id_taken`・`draft_limit_exceeded`・`already_decided`・`not_retryable`
- `411`: Content-Length が無い 返る code：`invalid_request`
- `413`: 本文が上限を超えた（JSON 6 MiB・multipart 16 MiB・同期 8 MiB・同期のアップロード 15 MiB）。テキストの本文が 4 MiB を超えたときは、本文の上限の内側でも 422 invalid_request になる 返る code：`payload_too_large`
- `415`: Content-Type が、その操作の受け付ける形式でない。文書の作成に application/x-www-form-urlencoded で送ると、415 ではなく 400 になる 返る code：`unsupported_media_type`
- `422`: 内容を受け付けられない（編集の対象・分割の上限・形式・同期の項目・アップロードの中身など）。code で見分ける 返る code：`invalid_request`・`edit_no_match`・`edit_ambiguous`・`not_editable`・`too_many_parts`・`invalid_item`・`upload_mismatch`
- `429`: 上限を超えた。Retry-After の秒数だけ待ってからやり直す。上限は、API キーごとに 1 分 120 回（REST と MCP で共通）・同期の実行は鍵ごとに 1 分 10 回（dry_run は数えない）・組織の文書の書き込みは 1 分 300 版・API キーの検証の失敗は IP ごとに 1 分 20 回（超えると、正しい鍵でも 429 になる）。このほか、IP ごとの上限を超えると Cloudflare が 429（error code 1015）を返す。この応答は problem+json でないことがあり、Retry-After が無ければ少し待ってからやり直す 返る code：`rate_limited`
- `500`: サーバーで問題が起きた。少し待ってからやり直す 返る code：`internal_error`

---

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