HTTP API リファレンス¶
Koharu は次のローカル HTTP API を公開しています。
http://127.0.0.1:<PORT>/api/v1
これはデスクトップ UI と headless Web UI が使っているのと同じ API です。
ランタイムモデル¶
現在の実装で重要な挙動は次の通りです。
- API は GUI または headless ランタイムと同じプロセスで提供される
- サーバーは既定で
127.0.0.1にバインドされる - API と MCP サーバーは同じ読み込み済みドキュメント、モデル、パイプライン状態を共有する
--portを指定しない場合、Koharu はランダムなローカルポートを選ぶ
よく使うレスポンス型¶
頻出する型には次があります。
MetaInfo: アプリバージョンと ML デバイスDocumentSummary: ドキュメント ID、名前、サイズ、revision、レイヤー有無、text block 数DocumentDetail: text block を含む完全なドキュメント情報JobState: 現在のパイプライン job 進捗LlmState: 現在の LLM 読み込み状態ImportResult: 読み込み件数と summaryExportResult: 書き出したファイル件数
エンドポイント一覧¶
Meta とフォント¶
| Method | Path | 目的 |
|---|---|---|
GET |
/meta |
アプリバージョンと有効な ML バックエンドを取得する |
GET |
/fonts |
レンダリングに使える font family を一覧する |
Documents¶
| Method | Path | 目的 |
|---|---|---|
GET |
/documents |
読み込み済みドキュメント一覧を取得する |
POST |
/documents/import?mode=replace |
アップロード画像で現在のドキュメント集合を置き換える |
POST |
/documents/import?mode=append |
アップロード画像を現在のドキュメント集合に追加する |
GET |
/documents/{documentId} |
1 件のドキュメントと全 text-block 情報を取得する |
GET |
/documents/{documentId}/thumbnail |
サムネイル画像を取得する |
GET |
/documents/{documentId}/layers/{layer} |
1 つの画像レイヤーを取得する |
import エンドポイントは、files フィールドを繰り返し持つ multipart form data を使います。
現在実装で公開されている document layer は次です。
originalsegmentinpaintedbrushrendered
ページパイプライン¶
| Method | Path | 目的 |
|---|---|---|
POST |
/documents/{documentId}/detect |
テキストブロックとレイアウトを検出する |
POST |
/documents/{documentId}/ocr |
検出済み text block に OCR をかける |
POST |
/documents/{documentId}/inpaint |
現在の mask を使って元文字を除去する |
POST |
/documents/{documentId}/render |
翻訳済みテキストを描画する |
POST |
/documents/{documentId}/translate |
1 ブロックまたはページ全体を翻訳する |
PUT |
/documents/{documentId}/mask-region |
segmentation mask の一部を置換または更新する |
PUT |
/documents/{documentId}/brush-region |
brush layer に patch を書き込む |
POST |
/documents/{documentId}/inpaint-region |
矩形領域だけを再 inpaint する |
実用上のリクエスト詳細:
/renderはtextBlockId、shaderEffect、shaderStroke、fontFamilyを受け付けます/translateはtextBlockIdとlanguageを受け付けます/mask-regionはdataと、任意でregionを受け付けます/brush-regionはdataと、必須のregionを受け付けます/inpaint-regionは矩形regionを受け付けます
Text blocks¶
| Method | Path | 目的 |
|---|---|---|
POST |
/documents/{documentId}/text-blocks |
x, y, width, height から新しい text block を作る |
PATCH |
/documents/{documentId}/text-blocks/{textBlockId} |
テキスト、翻訳、box geometry、style を patch する |
DELETE |
/documents/{documentId}/text-blocks/{textBlockId} |
text block を削除する |
現在の text-block patch には次の項目があります。
texttranslationxywidthheightstyle
style には、font family、font size、RGBA color、text alignment、italic / bold フラグ、stroke 設定を含められます。
Export¶
| Method | Path | 目的 |
|---|---|---|
GET |
/documents/{documentId}/export?layer=rendered |
rendered image を 1 件書き出す |
GET |
/documents/{documentId}/export?layer=inpainted |
inpainted image を 1 件書き出す |
GET |
/documents/{documentId}/export/psd |
レイヤー付き PSD を 1 件書き出す |
POST |
/exports?layer=rendered |
全 rendered ページを書き出す |
POST |
/exports?layer=inpainted |
全 inpainted ページを書き出す |
単一ドキュメント用 export エンドポイントはバイナリファイル内容を返します。一括 export は、書き出した件数を含む JSON を返します。
LLM 制御¶
| Method | Path | 目的 |
|---|---|---|
GET |
/llm/models |
ローカルおよび API ベースの翻訳モデル一覧を取得する |
GET |
/llm/state |
現在の LLM 状態を取得する |
POST |
/llm/load |
ローカルまたは API ベースのモデルを読み込む |
POST |
/llm/offload |
現在のモデルをアンロードする |
POST |
/llm/ping |
OpenAI 互換 base URL を接続確認する |
実用上のリクエスト詳細:
/llm/modelsはlanguageとopenaiCompatibleBaseUrlの query parameter を任意で受け付けます/llm/loadはid、apiKey、baseUrl、temperature、maxTokens、customSystemPromptを受け付けます/llm/pingはbaseUrlと任意のapiKeyを受け付けます
プロバイダ API キー¶
| Method | Path | 目的 |
|---|---|---|
GET |
/providers/{provider}/api-key |
保存済みの API キーを読み出す |
PUT |
/providers/{provider}/api-key |
プロバイダ API キーを保存または上書きする |
現在の組み込み provider id は次です。
openaigeminiclaudedeepseekopenai-compatible
パイプライン job¶
| Method | Path | 目的 |
|---|---|---|
POST |
/jobs/pipeline |
フル処理 job を開始する |
DELETE |
/jobs/{jobId} |
実行中の pipeline job をキャンセルする |
pipeline job リクエストには次を含められます。
documentIdを指定すると 1 ページ対象、省略すると読み込み済み全ページ対象llmModelId、llmApiKey、llmBaseUrl、llmTemperature、llmMaxTokens、llmCustomSystemPromptなどの LLM 設定shaderEffect、shaderStroke、fontFamilyなどの render 設定language
Events stream¶
Koharu は server-sent events も次で公開しています。
GET /events
現在のイベント名:
snapshotdocuments.changeddocument.changedjob.changeddownload.changedllm.changed
ストリームは最初に snapshot イベントを送り、15 秒ごとに keepalive を送ります。
典型的なワークフロー¶
1 ページに対する通常の API 呼び出し順は次の通りです。
POST /documents/import?mode=replacePOST /documents/{documentId}/detectPOST /documents/{documentId}/ocrPOST /llm/loadPOST /documents/{documentId}/translatePOST /documents/{documentId}/inpaintPOST /documents/{documentId}/renderGET /documents/{documentId}/export?layer=rendered
HTTP エンドポイントを順に叩く代わりに、エージェント向けのアクセスが欲しい場合は MCP ツールリファレンス を参照してください。