> ## Documentation Index
> Fetch the complete documentation index at: https://docs.contentcare.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 注文詳細を取得

> 所有する注文の詳細を、**注文の種類や watermark エンジンに関係なく 1 つの形式**で取得します。Anti-AI、AI Detection、watermark 埋め込み・検出の注文を、v2 と v3 のどちらで作成したかに関係なく取得できます。注文のステータスに関係なく、いつでも呼び出せます。

**共通のトップレベルフィールド**: `type`、`orderId`、`orderName`、`channel`、`status`、`createdAt`、`updatedAt`、`expiresAt`、`retentionDays`、`thumbnailImageUrl`、`processingDelayed`、`errors`、`inputFiles`、`result`。すべての注文で同じキーを返し、注文の種類による違いは `result` の中だけです。
- `type` は `antiAi`、`aiDetection`、`watermarkEmbed`、`watermarkExtract` のいずれかです。v3 で作成した watermark 注文も、エンジンのバージョン接尾辞なしで同じ値を使います
- `status` は `pending`、`inProgress`、`complete`、`failed`、`expired` の 5 つだけです。保存されたステータスが `detected` / `undetected` の v2 watermark 検出注文は `complete` を返し、判定は `result.detectionStatus` に入ります
- `processingDelayed` は v3 で作成した watermark 注文だけで計算します。それ以外の注文では常に `false` です
- `errors` は失敗した注文の `{ errorCode, errorMessage }` で、それ以外は `null` です

**`inputFiles[]`**: 入力ファイルごとの `{ fileId, fileName }` をリクエストの順に返します。ファイル数は `inputFiles.length` で確認してください。
- `role`（`original` / `query`）は `watermarkExtract` の注文にだけ含まれます。v2 注文の `watermarked` ロールは `query` として返します
- `uploadUrl`（presigned `PUT` URL）は、`status` が `pending` で、そのファイルがアップロード待ちのときだけ含まれます。それ以外はキー自体がありません（`null` にはなりません）

**`result`**: キーは常にあります。`status` が `complete` のときだけオブジェクトで、`pending`、`inProgress`、`failed`、`expired` では `null` です。
- `antiAi`: `{ outputFiles: [{ fileId, fileName, inputFileId }] }`
- `watermarkEmbed`: `{ outputFiles: [{ fileId, fileName, inputFileId, watermarkText }] }`。v3 の注文で 1 つの入力ファイルに複数の watermark テキストを埋め込むと、テキストごとに結果ファイルが 1 つずつ作成されます
- `watermarkExtract`: `{ detectionStatus, watermarkText, reportSupported, reports }`。`detectionStatus` は `detected`、`undetected`、`inconclusive`、`unsupported`、`error` のいずれかです。`detectionStatus` が `detected` でなければ `watermarkText` は `null` です。v2 の注文は `reportSupported: false`、`reports: []` です
- `aiDetection`: `{ verdict, probability, options, originalImageUrl, heatmapUrl, overlayUrl }`。`verdict` は `likely_real`、`uncertain_real`、`uncertain_ai`、`likely_ai` のいずれかで、`probability` が `null` なら `verdict` も `null` です。保存されたオプションがなければ `options` は `null` です

**`fileId`**: すべての `fileId` と `inputFileId` は数字だけの文字列です（`-` などの区切り文字はありません）。`result.outputFiles[].fileId` は注文内で一意で、[`GET /api/v3/orders/{orderId}/download`](/ja/api-reference/orders/download-order-v3) の `files[].fileId` と値・順序が一致します。

**期限切れの注文**: `expired` の注文も取得できますが、`result` は `null` で、URL は発行しません。

**以前の v3 レスポンスからの変更（破壊的変更、2026-10-08）**
- v3 で作成した watermark 注文の `files[]`、`outputs[]`、トップレベルの `reports[]` は、`inputFiles[]`、`result.outputFiles[]`、`result.reports[]` に移りました。結果の `fileId` は `{inputFileId}-{n}` 形式から数字の文字列に変わりました
- `detectionStatus` の値 `not_detected` は `undetected` に変わりました
- v2 の詳細と同じ形式だったそれ以外の注文では、トップレベルの `fileCount`、`statusCode`、`watermarks`、`watermarkText`、`probability`、`options`、`originalImageUrl`、`heatmapUrl`、`overlayUrl` が `inputFiles` と `result` に移りました。AI Detection の `statusCode` は `result.verdict` に変わりました
- 非推奨（deprecated）の [`GET /api/v2/orders/{orderId}`](/ja/api-reference/orders/get-order) のレスポンスは変わりません

**テストキー（`sk_test_`）**: 同じキーで作成したテスト注文だけを取得します。本番注文と他のアカウントの注文は `404 ORDER_NOT_FOUND` を返し、本番キーでテスト注文を取得した場合も同じです。v2・v3 で作成したすべてのテスト注文をこの形式で返します。`inProgress` のテスト注文は、アップロード完了から 5 秒以上たってから取得すると `complete` または `failed` になります。pending のテスト注文の `uploadUrl` は `https://api.bizmori.com/api/v2/test-uploads/{signedToken}` です。検出テスト注文の `result.reports` は常に空の配列で、`reportSupported` は v3 で作成した検出テスト注文の `detectionStatus` が `detected` のときだけ `true` です。`expiresAt` は注文作成の 7 日後です。


注文のステータスを確認し、結果を読み取るときにこのエンドポイントを使用します。Anti-AI、AI Detection、watermark 埋め込み、watermark 検出のすべての注文を、v2 と v3 のどちらで作成したかに関係なく取得できます。トップレベルのフィールドはすべての注文で同じで、`type` によって `result` だけが変わります。

> [!WARNING]
>
> 2026 年 10 月 8 日にレスポンスの形式が変わりました。このエンドポイントから `files`、`outputs`、トップレベルの `reports`、`fileCount`、`statusCode` を読み取っている場合は、[以前のレスポンスからの変更](#以前のレスポンスからの変更)を確認してください。

## 共通フィールド

| フィールド | 型 | 説明 |
| - | - | - |
| `type` | string | `antiAi`、`aiDetection`、`watermarkEmbed`、`watermarkExtract` のいずれか |
| `orderId` | string | 注文 ID |
| `orderName` | string \| null | 注文名 |
| `channel` | string | `api` または `web` |
| `status` | string | [ステータス](#ステータス)の 5 つの値のいずれか |
| `createdAt`, `updatedAt` | string | ISO 8601 の日時 |
| `expiresAt` | string \| null | 注文ファイルが削除される日時 |
| `retentionDays` | integer \| null | ファイルの保管期間（日、7 または 30） |
| `thumbnailImageUrl` | string \| null | サムネイル画像の URL |
| `processingDelayed` | boolean | v3 で作成した watermark 注文が手動復旧を待っているときに `true`。それ以外の注文では常に `false` |
| `errors` | object \| null | 失敗した注文の `{ errorCode, errorMessage }`。それ以外は `null` |
| `inputFiles` | array | 入力ファイル。[入力ファイル](#入力ファイル)を参照 |
| `result` | object \| null | 注文の種類ごとの結果。[注文の種類ごとの結果](#注文の種類ごとの結果)を参照 |

## ステータス

| `status` | 意味 | `result` |
| - | - | - |
| `pending` | ファイルのアップロード待ち。`inputFiles[].uploadUrl` があります | `null` |
| `inProgress` | 処理中 | `null` |
| `complete` | 完了 | オブジェクト |
| `failed` | 処理に失敗。理由は `errors` にあります | `null` |
| `expired` | 保管期限が過ぎ、ファイルは削除済み。URL は発行しません | `null` |

v2 で作成した watermark 検出注文のうち、保存されたステータスが `detected` または `undetected` の注文は `complete` を返します。判定は `result.detectionStatus` から読み取ってください。

## 入力ファイル

`inputFiles[]` の各項目には `fileId` と `fileName` があり、注文作成リクエストの順に並びます。次の 2 つのキーは該当する場合だけ含まれます。該当しない場合は `null` ではなく、キー自体がありません。

* `role` は `watermarkExtract` の注文にだけ含まれます。`original` は watermark を埋め込んだ元のファイル、`query` は検査するファイルです。
* `uploadUrl` は `status` が `pending` で、そのファイルがまだアップロード待ちのときだけ含まれます。この URL にファイルを PUT してください。アップロード URL の期限が切れた場合は、このエンドポイントを再度呼び出すと新しい URL を取得できます。

このレスポンスと[ダウンロードのレスポンス](https://docs.contentcare.ai/ja/api-reference/orders/download-order-v3.md)のすべての `fileId` は、`"11"` のような数字だけの文字列です。`-` などの区切り文字は含みません。

## 注文の種類ごとの結果

`result` は `status` が `complete` のときだけオブジェクトです。キーは常にあり、それ以外のステータスでは `null` です。

**Anti-AI**

`result.outputFiles[]` には、入力ファイルごとに結果ファイルが 1 つずつあります。

| フィールド | 型 | 説明 |
| - | - | - |
| `fileId` | string | 結果ファイル ID。[ダウンロードのレスポンス](https://docs.contentcare.ai/ja/api-reference/orders/download-order-v3.md)の `files[].fileId` と値・順序が一致 |
| `fileName` | string \| null | 結果ファイル名 |
| `inputFileId` | string | 元の入力ファイルの `inputFiles[].fileId` |

**watermark 埋め込み**

`result.outputFiles[]` には、埋め込んだ watermark テキストごとに結果ファイルが 1 つずつあります。v3 の注文で 1 つの入力ファイルに複数のテキストを埋め込むと、それらの結果ファイルは同じ `inputFileId` を持ちます。

| フィールド | 型 | 説明 |
| - | - | - |
| `fileId` | string | 結果ファイル ID。[ダウンロードのレスポンス](https://docs.contentcare.ai/ja/api-reference/orders/download-order-v3.md)の `files[].fileId` と値・順序が一致 |
| `fileName` | string \| null | 結果ファイル名 |
| `inputFileId` | string | 元の入力ファイルの `inputFiles[].fileId` |
| `watermarkText` | string | この結果ファイルに埋め込んだテキスト |

**watermark 検出**

| フィールド | 型 | 説明 |
| - | - | - |
| `detectionStatus` | string | 判定。下の表を参照 |
| `watermarkText` | string \| null | 検出された watermark の埋め込みテキスト。`detectionStatus` が `detected` でなければ `null`。v3 の注文では、呼び出し元のアカウントが埋め込み、発行記録がちょうど 1 件のときだけ返します |
| `reportSupported` | boolean | この結果から[レポートを作成](https://docs.contentcare.ai/ja/api-reference/reports/create-report.md)できるかどうか。v2 の注文と PDF からキャプチャした画像は `false` |
| `reports` | array | この注文で依頼したレポートごとの `{ locale, status }`。v2 の注文では常に空の配列 |

| `detectionStatus` | 意味 |
| - | - |
| `detected` | watermark が見つかった |
| `undetected` | 最後まで検査したが watermark はなかった |
| `inconclusive` | 候補はあるが、確信度の基準に届かなかった |
| `unsupported` | 処理できない入力。クレジットは返却されます |
| `error` | 検出処理に失敗。watermark なしとは異なります |

**AI Detection**

| フィールド | 型 | 説明 |
| - | - | - |
| `verdict` | string \| null | `probability` に基づく判定。下の表を参照。`probability` が `null` なら `null` |
| `probability` | number \| null | 画像が AI で生成された確率（0〜1） |
| `options` | object \| null | 注文作成時に設定した `generateHeatmap`、`generateOverlay`、`generateThumbnail` |
| `originalImageUrl` | string \| null | 元の画像の URL（1 時間有効） |
| `heatmapUrl` | string \| null | ヒートマップ画像の URL（1 時間有効）。`generateHeatmap` を使わなかった注文では `null` |
| `overlayUrl` | string \| null | ヒートマップのオーバーレイ画像の URL（1 時間有効）。`generateOverlay` を使わなかった注文では `null` |

| `verdict` | 確率の範囲 | 意味 |
| - | - | - |
| `likely_real` | \< 0.25 | AI 生成ではない可能性が高い |
| `uncertain_real` | 0.25 – 0.5 | AI 生成ではない可能性がある |
| `uncertain_ai` | 0.5 – 0.75 | AI 生成の可能性がある |
| `likely_ai` | ≥ 0.75 | AI 生成の可能性が高い |

## 例

注文の種類ごとの完了した注文:

```json Anti-AI theme={null}
{
  "data": {
    "type": "antiAi",
    "orderId": "1001",
    "orderName": "cat.png",
    "channel": "api",
    "status": "complete",
    "createdAt": "2026-10-08T01:00:00.000Z",
    "updatedAt": "2026-10-08T01:00:40.000Z",
    "expiresAt": "2026-11-07T01:00:00.000Z",
    "retentionDays": 30,
    "thumbnailImageUrl": "https://cdn.bizmori.com/thumb/ex.webp",
    "processingDelayed": false,
    "errors": null,
    "inputFiles": [
      { "fileId": "11", "fileName": "cat.png" },
      { "fileId": "12", "fileName": "dog.png" }
    ],
    "result": {
      "outputFiles": [
        { "fileId": "21", "fileName": "cat.png", "inputFileId": "11" },
        { "fileId": "22", "fileName": "dog.png", "inputFileId": "12" }
      ]
    }
  }
}
```

```json AI Detection theme={null}
{
  "data": {
    "type": "aiDetection",
    "orderId": "4001",
    "orderName": "photo.jpg",
    "channel": "api",
    "status": "complete",
    "createdAt": "2026-10-08T01:00:00.000Z",
    "updatedAt": "2026-10-08T01:00:40.000Z",
    "expiresAt": "2026-11-07T01:00:00.000Z",
    "retentionDays": 30,
    "thumbnailImageUrl": "https://cdn.bizmori.com/ai/photo.jpg",
    "processingDelayed": false,
    "errors": null,
    "inputFiles": [
      { "fileId": "71", "fileName": "photo.jpg" }
    ],
    "result": {
      "verdict": "uncertain_real",
      "probability": 0.31,
      "options": {
        "generateHeatmap": true,
        "generateOverlay": true,
        "generateThumbnail": true
      },
      "originalImageUrl": "https://cdn.bizmori.com/ai/photo.jpg",
      "heatmapUrl": "https://cdn.bizmori.com/ai/heatmap.png",
      "overlayUrl": "https://cdn.bizmori.com/ai/overlay.png"
    }
  }
}
```

```json watermark 埋め込み theme={null}
{
  "data": {
    "type": "watermarkEmbed",
    "orderId": "2001",
    "orderName": "logo.png",
    "channel": "api",
    "status": "complete",
    "createdAt": "2026-10-08T01:00:00.000Z",
    "updatedAt": "2026-10-08T01:00:40.000Z",
    "expiresAt": "2026-11-07T01:00:00.000Z",
    "retentionDays": 30,
    "thumbnailImageUrl": "https://cdn.bizmori.com/thumb/ex.webp",
    "processingDelayed": false,
    "errors": null,
    "inputFiles": [
      { "fileId": "31", "fileName": "logo.png" }
    ],
    "result": {
      "outputFiles": [
        { "fileId": "201", "fileName": "logo.png", "inputFileId": "31", "watermarkText": "MORI" },
        { "fileId": "202", "fileName": "logo.png", "inputFileId": "31", "watermarkText": "MORI-2" }
      ]
    }
  }
}
```

```json watermark 検出 theme={null}
{
  "data": {
    "type": "watermarkExtract",
    "orderId": "3001",
    "orderName": "suspect.png",
    "channel": "api",
    "status": "complete",
    "createdAt": "2026-10-08T01:00:00.000Z",
    "updatedAt": "2026-10-08T01:00:40.000Z",
    "expiresAt": "2026-11-07T01:00:00.000Z",
    "retentionDays": 30,
    "thumbnailImageUrl": "https://cdn.bizmori.com/thumb/ex.webp",
    "processingDelayed": false,
    "errors": null,
    "inputFiles": [
      { "fileId": "51", "fileName": "original.png", "role": "original" },
      { "fileId": "52", "fileName": "suspect.png", "role": "query" }
    ],
    "result": {
      "detectionStatus": "detected",
      "watermarkText": "MORI",
      "reportSupported": true,
      "reports": [
        { "locale": "ko-KR", "status": "completed" }
      ]
    }
  }
}
```

完了していない注文は `result: null` を返します。

```json Pending theme={null}
{
  "data": {
    "type": "watermarkExtract",
    "orderId": "3201",
    "orderName": "suspect.png",
    "channel": "api",
    "status": "pending",
    "createdAt": "2026-10-08T01:00:00.000Z",
    "updatedAt": "2026-10-08T01:00:40.000Z",
    "expiresAt": "2026-11-07T01:00:00.000Z",
    "retentionDays": 30,
    "thumbnailImageUrl": null,
    "processingDelayed": false,
    "errors": null,
    "inputFiles": [
      {
        "fileId": "81",
        "fileName": "original.png",
        "role": "original",
        "uploadUrl": "https://bucket.s3.ap-northeast-2.amazonaws.com/inputs/81?X-Amz-..."
      },
      {
        "fileId": "82",
        "fileName": "suspect.png",
        "role": "query",
        "uploadUrl": "https://bucket.s3.ap-northeast-2.amazonaws.com/inputs/82?X-Amz-..."
      }
    ],
    "result": null
  }
}
```

```json Failed theme={null}
{
  "data": {
    "type": "watermarkEmbed",
    "orderId": "2002",
    "orderName": "logo.png",
    "channel": "api",
    "status": "failed",
    "createdAt": "2026-10-08T01:00:00.000Z",
    "updatedAt": "2026-10-08T01:00:40.000Z",
    "expiresAt": "2026-11-07T01:00:00.000Z",
    "retentionDays": 30,
    "thumbnailImageUrl": "https://cdn.bizmori.com/thumb/ex.webp",
    "processingDelayed": false,
    "errors": {
      "errorCode": "WATERMARK_FILE_CORRUPTED",
      "errorMessage": "파일이 손상되어 처리할 수 없습니다."
    },
    "inputFiles": [
      { "fileId": "33", "fileName": "logo.png" }
    ],
    "result": null
  }
}
```

```json Expired theme={null}
{
  "data": {
    "type": "antiAi",
    "orderId": "1003",
    "orderName": "cat.png",
    "channel": "api",
    "status": "expired",
    "createdAt": "2026-10-08T01:00:00.000Z",
    "updatedAt": "2026-10-08T01:00:40.000Z",
    "expiresAt": "2026-10-01T00:00:00.000Z",
    "retentionDays": 30,
    "thumbnailImageUrl": "https://cdn.bizmori.com/thumb/ex.webp",
    "processingDelayed": false,
    "errors": null,
    "inputFiles": [
      { "fileId": "14", "fileName": "cat.png" }
    ],
    "result": null
  }
}
```

* **Pending**: まだアップロード待ちのファイルにだけ `uploadUrl` があります。watermark 埋め込み、Anti-AI、AI Detection の注文には `role` がありません。
* **Failed**: `errors` に理由があり、`result` は `null` です。`errorMessage` はエラーコードごとの固定の韓国語の案内文です。
* **Expired**: 保管期限が過ぎた注文も取得できますが、`result` は `null` で、URL は発行しません。[ダウンロード](https://docs.contentcare.ai/ja/api-reference/orders/download-order-v3.md)は `400 ORDER_EXPIRED` を返します。

## 以前のレスポンスからの変更

2026 年 10 月 8 日から、このエンドポイントは上記の形式で応答します。後方互換性のない変更です。

| 以前のレスポンス | 現在 |
| - | - |
| `files[]`（v3 の watermark 注文） | `inputFiles[]`。`uploadUrl` は `pending` の注文にだけあります |
| `outputs[]`（v3 の watermark 注文） | `result.outputFiles[]`。`outputIndex`、`status`、`mediaKind` は返しません |
| `"601-1"` 形式の結果 `fileId` | `"201"` のような数字の文字列 |
| トップレベルの `reports[]` | `result.reports[]` |
| `detectionStatus: "not_detected"` | `"undetected"` |
| `fileCount` | `inputFiles.length` |
| `statusCode`（AI Detection） | `result.verdict` |
| `statusCode` と `status: "detected"` / `"undetected"`（v2 の watermark 検出） | `status: "complete"` と `result.detectionStatus` |
| `watermarks[]`（v2 の watermark 埋め込み） | `result.outputFiles[].watermarkText` |
| トップレベルの `watermarkText`、`probability`、`options`、`originalImageUrl`、`heatmapUrl`、`overlayUrl` | `result` の中に移動 |

非推奨（deprecated）の [`GET /api/v2/orders/{orderId}`](https://docs.contentcare.ai/ja/api-reference/orders/get-order) は、以前のレスポンスをそのまま返します。

## テストキー

`sk_test_` キーで呼び出すと、同じキーで作成したテスト注文だけを上記の形式で返します。テスト注文のステータスの変化は[テスト API キー](https://docs.contentcare.ai/ja/test-api-keys.md)を参照してください。


## OpenAPI

````yaml ja/api-reference/openapi.yaml GET /api/v3/orders/{orderId}
openapi: 3.0.0
info:
  title: BIZ MORI API
  version: 2.0.0
  description: >-
    BIZ MORI API は、デジタルコンテンツ保護のための4つのコアサービスを提供します:

    - **Anti-AI**: 画像をAI学習から保護

    - **Watermark Embed**: 画像に不可視のデジタル watermark を埋め込み

    - **Watermark Extract**: 画像から watermark を抽出・検証

    - **AI Detection**: 画像がAI生成かどうかを検知

    - **テストAPIキー**: `sk_test_`
    プレフィックスのキーは同じBearer認証を使用し、実際の処理サービスの実行やクレジットの消費なしに注文ライフサイクルを検証できます。テストアップロードの内容は破棄され、結果ファイルは作成されません
  contact:
    name: BIZ MORI サポート
    email: support@contentcare.ai
  license:
    name: Proprietary
    url: https://docs.contentcare.ai/legal/terms
servers:
  - url: https://api.bizmori.com
    description: 本番環境
security: []
tags:
  - name: Anti-AI
    description: Anti-AI画像保護の注文
  - name: Watermark Embed
    description: watermark 埋め込みの注文
  - name: Watermark Extract
    description: watermark 抽出の注文
  - name: AI Detection
    description: AI生成画像検知の注文
  - name: Orders
    description: 注文の照会と管理
  - name: Webhooks
    description: Webhookの設定とイベント
  - name: Reports
    description: watermark 抽出・AI Detection 注文の PDF 分析レポート
paths:
  /api/v3/orders/{orderId}:
    get:
      tags:
        - Orders
      summary: 注文詳細を取得
      description: >
        所有する注文の詳細を、**注文の種類や watermark エンジンに関係なく 1 つの形式**で取得します。Anti-AI、AI
        Detection、watermark 埋め込み・検出の注文を、v2 と v3
        のどちらで作成したかに関係なく取得できます。注文のステータスに関係なく、いつでも呼び出せます。


        **共通のトップレベルフィールド**:
        `type`、`orderId`、`orderName`、`channel`、`status`、`createdAt`、`updatedAt`、`expiresAt`、`retentionDays`、`thumbnailImageUrl`、`processingDelayed`、`errors`、`inputFiles`、`result`。すべての注文で同じキーを返し、注文の種類による違いは
        `result` の中だけです。

        - `type` は `antiAi`、`aiDetection`、`watermarkEmbed`、`watermarkExtract`
        のいずれかです。v3 で作成した watermark 注文も、エンジンのバージョン接尾辞なしで同じ値を使います

        - `status` は `pending`、`inProgress`、`complete`、`failed`、`expired` の 5
        つだけです。保存されたステータスが `detected` / `undetected` の v2 watermark 検出注文は
        `complete` を返し、判定は `result.detectionStatus` に入ります

        - `processingDelayed` は v3 で作成した watermark 注文だけで計算します。それ以外の注文では常に
        `false` です

        - `errors` は失敗した注文の `{ errorCode, errorMessage }` で、それ以外は `null` です


        **`inputFiles[]`**: 入力ファイルごとの `{ fileId, fileName }`
        をリクエストの順に返します。ファイル数は `inputFiles.length` で確認してください。

        - `role`（`original` / `query`）は `watermarkExtract` の注文にだけ含まれます。v2 注文の
        `watermarked` ロールは `query` として返します

        - `uploadUrl`（presigned `PUT` URL）は、`status` が `pending`
        で、そのファイルがアップロード待ちのときだけ含まれます。それ以外はキー自体がありません（`null` にはなりません）


        **`result`**: キーは常にあります。`status` が `complete`
        のときだけオブジェクトで、`pending`、`inProgress`、`failed`、`expired` では `null` です。

        - `antiAi`: `{ outputFiles: [{ fileId, fileName, inputFileId }] }`

        - `watermarkEmbed`: `{ outputFiles: [{ fileId, fileName, inputFileId,
        watermarkText }] }`。v3 の注文で 1 つの入力ファイルに複数の watermark
        テキストを埋め込むと、テキストごとに結果ファイルが 1 つずつ作成されます

        - `watermarkExtract`: `{ detectionStatus, watermarkText,
        reportSupported, reports }`。`detectionStatus` は
        `detected`、`undetected`、`inconclusive`、`unsupported`、`error`
        のいずれかです。`detectionStatus` が `detected` でなければ `watermarkText` は `null`
        です。v2 の注文は `reportSupported: false`、`reports: []` です

        - `aiDetection`: `{ verdict, probability, options, originalImageUrl,
        heatmapUrl, overlayUrl }`。`verdict` は
        `likely_real`、`uncertain_real`、`uncertain_ai`、`likely_ai`
        のいずれかで、`probability` が `null` なら `verdict` も `null` です。保存されたオプションがなければ
        `options` は `null` です


        **`fileId`**: すべての `fileId` と `inputFileId` は数字だけの文字列です（`-`
        などの区切り文字はありません）。`result.outputFiles[].fileId` は注文内で一意で、[`GET
        /api/v3/orders/{orderId}/download`](/ja/api-reference/orders/download-order-v3)
        の `files[].fileId` と値・順序が一致します。


        **期限切れの注文**: `expired` の注文も取得できますが、`result` は `null` で、URL は発行しません。


        **以前の v3 レスポンスからの変更（破壊的変更、2026-10-08）**

        - v3 で作成した watermark 注文の `files[]`、`outputs[]`、トップレベルの `reports[]`
        は、`inputFiles[]`、`result.outputFiles[]`、`result.reports[]` に移りました。結果の
        `fileId` は `{inputFileId}-{n}` 形式から数字の文字列に変わりました

        - `detectionStatus` の値 `not_detected` は `undetected` に変わりました

        - v2 の詳細と同じ形式だったそれ以外の注文では、トップレベルの
        `fileCount`、`statusCode`、`watermarks`、`watermarkText`、`probability`、`options`、`originalImageUrl`、`heatmapUrl`、`overlayUrl`
        が `inputFiles` と `result` に移りました。AI Detection の `statusCode` は
        `result.verdict` に変わりました

        - 非推奨（deprecated）の [`GET
        /api/v2/orders/{orderId}`](/ja/api-reference/orders/get-order)
        のレスポンスは変わりません


        **テストキー（`sk_test_`）**: 同じキーで作成したテスト注文だけを取得します。本番注文と他のアカウントの注文は `404
        ORDER_NOT_FOUND` を返し、本番キーでテスト注文を取得した場合も同じです。v2・v3
        で作成したすべてのテスト注文をこの形式で返します。`inProgress` のテスト注文は、アップロード完了から 5 秒以上たってから取得すると
        `complete` または `failed` になります。pending のテスト注文の `uploadUrl` は
        `https://api.bizmori.com/api/v2/test-uploads/{signedToken}` です。検出テスト注文の
        `result.reports` は常に空の配列で、`reportSupported` は v3 で作成した検出テスト注文の
        `detectionStatus` が `detected` のときだけ `true` です。`expiresAt` は注文作成の 7
        日後です。
      operationId: getOrderV3
      parameters:
        - in: path
          name: orderId
          required: true
          schema:
            type: string
            pattern: ^[0-9]{1,20}$
          description: 注文 ID
      responses:
        '200':
          description: 注文詳細。トップレベルのフィールドはすべての注文の種類で同じで、`type` によって `result` の形式だけが異なります
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicOrderV3DetailResponse'
              examples:
                antiAiComplete:
                  summary: Anti-AI · complete（入力 2 件）
                  value:
                    data:
                      type: antiAi
                      orderId: '1001'
                      orderName: cat.png
                      channel: api
                      status: complete
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '11'
                          fileName: cat.png
                        - fileId: '12'
                          fileName: dog.png
                      result:
                        outputFiles:
                          - fileId: '21'
                            fileName: cat.png
                            inputFileId: '11'
                          - fileId: '22'
                            fileName: dog.png
                            inputFileId: '12'
                watermarkEmbedV3:
                  summary: watermark 埋め込み（v3）· complete（入力 1 件に watermark 2 件、結果 2 件）
                  value:
                    data:
                      type: watermarkEmbed
                      orderId: '2001'
                      orderName: logo.png
                      channel: api
                      status: complete
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '31'
                          fileName: logo.png
                      result:
                        outputFiles:
                          - fileId: '201'
                            fileName: logo.png
                            inputFileId: '31'
                            watermarkText: MORI
                          - fileId: '202'
                            fileName: logo.png
                            inputFileId: '31'
                            watermarkText: MORI-2
                watermarkEmbedV2:
                  summary: watermark 埋め込み（v2）· complete（入力 2 件）
                  value:
                    data:
                      type: watermarkEmbed
                      orderId: '2101'
                      orderName: a.png
                      channel: api
                      status: complete
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '31'
                          fileName: a.png
                        - fileId: '32'
                          fileName: b.png
                      result:
                        outputFiles:
                          - fileId: '41'
                            fileName: a.png
                            inputFileId: '31'
                            watermarkText: MORI-A
                          - fileId: '42'
                            fileName: b.png
                            inputFileId: '32'
                            watermarkText: MORI-B
                watermarkExtractV3Detected:
                  summary: watermark 検出（v3）· complete（検出）
                  value:
                    data:
                      type: watermarkExtract
                      orderId: '3001'
                      orderName: suspect.png
                      channel: api
                      status: complete
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '51'
                          fileName: original.png
                          role: original
                        - fileId: '52'
                          fileName: suspect.png
                          role: query
                      result:
                        detectionStatus: detected
                        watermarkText: MORI
                        reportSupported: true
                        reports:
                          - locale: ko-KR
                            status: completed
                watermarkExtractV2Undetected:
                  summary: >-
                    watermark 検出（v2）· complete（未検出。保存されたステータス `undetected` も
                    `complete` で返却）
                  value:
                    data:
                      type: watermarkExtract
                      orderId: '3101'
                      orderName: suspect.png
                      channel: api
                      status: complete
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '61'
                          fileName: original.png
                          role: original
                        - fileId: '62'
                          fileName: suspect.png
                          role: query
                      result:
                        detectionStatus: undetected
                        watermarkText: null
                        reportSupported: false
                        reports: []
                aiDetectionComplete:
                  summary: AI Detection · complete
                  value:
                    data:
                      type: aiDetection
                      orderId: '4001'
                      orderName: photo.jpg
                      channel: api
                      status: complete
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/ai/photo.jpg
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '71'
                          fileName: photo.jpg
                      result:
                        verdict: uncertain_real
                        probability: 0.31
                        options:
                          generateHeatmap: true
                          generateOverlay: true
                          generateThumbnail: true
                        originalImageUrl: https://cdn.bizmori.com/ai/photo.jpg
                        heatmapUrl: https://cdn.bizmori.com/ai/heatmap.png
                        overlayUrl: https://cdn.bizmori.com/ai/overlay.png
                watermarkExtractPending:
                  summary: watermark 検出（v3）· pending（アップロード待ちのファイルにだけ `uploadUrl`）
                  value:
                    data:
                      type: watermarkExtract
                      orderId: '3201'
                      orderName: suspect.png
                      channel: api
                      status: pending
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: null
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '81'
                          fileName: original.png
                          role: original
                          uploadUrl: >-
                            https://bucket.s3.ap-northeast-2.amazonaws.com/inputs/81?X-Amz-...
                        - fileId: '82'
                          fileName: suspect.png
                          role: query
                          uploadUrl: >-
                            https://bucket.s3.ap-northeast-2.amazonaws.com/inputs/82?X-Amz-...
                      result: null
                watermarkEmbedPending:
                  summary: watermark 埋め込み · pending（`role` なし、`uploadUrl` のみ）
                  value:
                    data:
                      type: watermarkEmbed
                      orderId: '2003'
                      orderName: logo.png
                      channel: api
                      status: pending
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: null
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '34'
                          fileName: logo.png
                          uploadUrl: >-
                            https://bucket.s3.ap-northeast-2.amazonaws.com/inputs/34?X-Amz-...
                        - fileId: '35'
                          fileName: banner.png
                          uploadUrl: >-
                            https://bucket.s3.ap-northeast-2.amazonaws.com/inputs/35?X-Amz-...
                      result: null
                antiAiInProgress:
                  summary: Anti-AI · inProgress
                  value:
                    data:
                      type: antiAi
                      orderId: '1002'
                      orderName: cat.png
                      channel: api
                      status: inProgress
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '13'
                          fileName: cat.png
                      result: null
                watermarkEmbedFailed:
                  summary: watermark 埋め込み（v3）· failed（`errors` に理由、`result` は `null`）
                  value:
                    data:
                      type: watermarkEmbed
                      orderId: '2002'
                      orderName: logo.png
                      channel: api
                      status: failed
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-11-07T01:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors:
                        errorCode: WATERMARK_FILE_CORRUPTED
                        errorMessage: 파일이 손상되어 처리할 수 없습니다.
                      inputFiles:
                        - fileId: '33'
                          fileName: logo.png
                      result: null
                antiAiExpired:
                  summary: Anti-AI · expired（すべての注文の種類で共通、`result` は `null`）
                  value:
                    data:
                      type: antiAi
                      orderId: '1003'
                      orderName: cat.png
                      channel: api
                      status: expired
                      createdAt: '2026-10-08T01:00:00.000Z'
                      updatedAt: '2026-10-08T01:00:40.000Z'
                      expiresAt: '2026-10-01T00:00:00.000Z'
                      retentionDays: 30
                      thumbnailImageUrl: https://cdn.bizmori.com/thumb/ex.webp
                      processingDelayed: false
                      errors: null
                      inputFiles:
                        - fileId: '14'
                          fileName: cat.png
                      result: null
        '400':
          description: リクエストの形式エラー（`orderId` の形式など）
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: VALIDATION_FAILED
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: 注文が存在しないか、他のアカウントの注文です
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: ORDER_NOT_FOUND
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |
            curl -X GET https://api.bizmori.com/api/v3/orders/ORDER_ID \
              -H "Authorization: Bearer YOUR_API_KEY"
        - lang: javascript
          label: JavaScript
          source: >
            const orderId = 'ORDER_ID';

            const response = await
            fetch(`https://api.bizmori.com/api/v3/orders/${orderId}`, {
              headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
            });

            const { data } = await response.json();
        - lang: python
          label: Python
          source: |
            import requests

            order_id = 'ORDER_ID'
            response = requests.get(
                f'https://api.bizmori.com/api/v3/orders/{order_id}',
                headers={'Authorization': 'Bearer YOUR_API_KEY'}
            )
            data = response.json()['data']
components:
  schemas:
    PublicOrderV3DetailResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          $ref: '#/components/schemas/PublicOrderV3Detail'
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: エラーコード
    PublicOrderV3Detail:
      description: >-
        v3 の注文詳細。トップレベルのフィールドはすべての注文の種類で同じ（`PublicOrderV3DetailCommon`）で、`type`
        によって `result` と検出注文の `inputFiles[].role` だけが異なります
      oneOf:
        - $ref: '#/components/schemas/PublicAntiAiOrderV3Detail'
        - $ref: '#/components/schemas/PublicWatermarkEmbedOrderV3Detail'
        - $ref: '#/components/schemas/PublicWatermarkExtractOrderV3Detail'
        - $ref: '#/components/schemas/PublicAiDetectionOrderV3Detail'
      discriminator:
        propertyName: type
        mapping:
          antiAi: '#/components/schemas/PublicAntiAiOrderV3Detail'
          watermarkEmbed: '#/components/schemas/PublicWatermarkEmbedOrderV3Detail'
          watermarkExtract: '#/components/schemas/PublicWatermarkExtractOrderV3Detail'
          aiDetection: '#/components/schemas/PublicAiDetectionOrderV3Detail'
    PublicAntiAiOrderV3Detail:
      title: Anti-AI
      description: Anti-AI の注文詳細
      allOf:
        - $ref: '#/components/schemas/PublicOrderV3DetailCommon'
        - type: object
          properties:
            type:
              type: string
              enum:
                - antiAi
            inputFiles:
              type: array
              items:
                $ref: '#/components/schemas/PublicInputFile'
            result:
              $ref: '#/components/schemas/PublicAntiAiResult'
    PublicWatermarkEmbedOrderV3Detail:
      title: watermark 埋め込み
      description: watermark 埋め込み注文の詳細（v2・v3）
      allOf:
        - $ref: '#/components/schemas/PublicOrderV3DetailCommon'
        - type: object
          properties:
            type:
              type: string
              enum:
                - watermarkEmbed
            inputFiles:
              type: array
              items:
                $ref: '#/components/schemas/PublicInputFile'
            result:
              $ref: '#/components/schemas/PublicWatermarkEmbedResult'
    PublicWatermarkExtractOrderV3Detail:
      title: watermark 検出
      description: watermark 検出注文の詳細（v2・v3）。この注文の種類だけ `inputFiles[].role` があります
      allOf:
        - $ref: '#/components/schemas/PublicOrderV3DetailCommon'
        - type: object
          properties:
            type:
              type: string
              enum:
                - watermarkExtract
            inputFiles:
              type: array
              items:
                $ref: '#/components/schemas/PublicExtractInputFile'
            result:
              $ref: '#/components/schemas/PublicWatermarkExtractResult'
    PublicAiDetectionOrderV3Detail:
      title: AI Detection
      description: AI Detection の注文詳細
      allOf:
        - $ref: '#/components/schemas/PublicOrderV3DetailCommon'
        - type: object
          properties:
            type:
              type: string
              enum:
                - aiDetection
            inputFiles:
              type: array
              items:
                $ref: '#/components/schemas/PublicInputFile'
            result:
              $ref: '#/components/schemas/PublicAiDetectionResult'
    PublicOrderV3DetailCommon:
      type: object
      description: >-
        v3 の注文詳細の共通フィールド。すべての注文の種類・watermark エンジンでトップレベルのキーは同じで、種類による違いは
        `result` の中だけです。以前のレスポンスのトップレベルの
        `fileCount`、`statusCode`、`files`、`outputs`、`reports`、`watermarks` は返しません
      required:
        - type
        - orderId
        - orderName
        - channel
        - status
        - createdAt
        - updatedAt
        - expiresAt
        - retentionDays
        - thumbnailImageUrl
        - processingDelayed
        - errors
        - inputFiles
        - result
      additionalProperties: false
      properties:
        type:
          type: string
          enum:
            - antiAi
            - watermarkEmbed
            - watermarkExtract
            - aiDetection
          description: >-
            注文の種類。watermark の注文は v2 と v3 のどちらで作成しても `watermarkEmbed` /
            `watermarkExtract` を返します
        orderId:
          type: string
          description: 注文 ID
          example: '1001'
        orderName:
          type: string
          nullable: true
          description: 注文名。v3 で作成した watermark 注文では表示用のファイル名を、なければ保存された名前を返します
        channel:
          type: string
          enum:
            - api
            - web
          description: 注文チャネル
        status:
          type: string
          enum:
            - pending
            - inProgress
            - complete
            - failed
            - expired
          description: >-
            * `pending` - アップロード待ち

            * `inProgress` - 処理中

            * `complete` - 完了。このときだけ `result` がオブジェクトです

            * `failed` - 失敗。理由は `errors` にあります

            * `expired` - ファイルの保管期限切れ。取得はできますが、`result` とすべての URL は `null` です


            保存されたステータスが `detected` / `undetected` の v2 watermark 検出注文は
            `complete` を返し、判定は `result.detectionStatus` に入ります
        createdAt:
          type: string
          format: date-time
          description: 作成日時
        updatedAt:
          type: string
          format: date-time
          description: 更新日時
        expiresAt:
          type: string
          format: date-time
          nullable: true
          description: ファイルの保管期限（UTC、ISO 8601）。整合性の例外でのみ `null` です
        retentionDays:
          type: integer
          nullable: true
          description: 注文作成時に固定されたファイルの保管期間（日、7 または 30）。整合性の例外でのみ `null` です
          example: 30
        thumbnailImageUrl:
          type: string
          format: uri
          nullable: true
          description: >-
            サムネイル画像の URL。取得元は注文の種類ごとのルールに従います。Anti-AI の注文と v2 の watermark
            注文は未完了・失敗時に固定のステータス画像を、AI Detection の注文は詳細サムネイルまたは元の画像を、v3 の
            watermark 注文は詳細サムネイルを返し、処理前は `null` の場合があります
        processingDelayed:
          type: boolean
          description: >-
            v3 で作成した watermark 注文が自動リトライを使い切り、手動復旧を待っているときに `true` です。注文は
            `inProgress` のままです。それ以外の注文では常に `false` です
        errors:
          type: object
          nullable: true
          description: >-
            失敗した注文のエラー情報で、それ以外は `null` です。v3 で作成した watermark 注文は公開用の `errorCode`
            と固定の案内文 `errorMessage` を返します。それ以外の注文は保存されたエラー情報をそのまま返し、`errorCode`
            がない場合があります
          properties:
            errorCode:
              type: string
              description: >-
                エラーコード。例:
                `WATERMARK_FILE_CORRUPTED`、`ORDER_TIMEOUT`、`PROCESSING_ERROR`
              example: WATERMARK_FILE_CORRUPTED
            errorMessage:
              type: string
              description: エラーコードごとの固定の案内文（韓国語）。処理系の生の出力は含みません
        inputFiles:
          type: array
          description: >-
            入力ファイルの一覧（リクエストの順）。ファイル数は `inputFiles.length` です。`watermarkExtract`
            の注文は `PublicExtractInputFile`（`role` あり）、それ以外の注文は `PublicInputFile`
            です
          items:
            anyOf:
              - $ref: '#/components/schemas/PublicInputFile'
              - $ref: '#/components/schemas/PublicExtractInputFile'
        result:
          type: object
          nullable: true
          description: >-
            注文の種類ごとの結果。キーは常にあり、`status` が `complete` のときだけオブジェクトで、それ以外は `null`
            です
    PublicInputFile:
      type: object
      description: >-
        `watermarkExtract` 以外の注文の入力ファイル（リクエストの順）。`role` キーはありません。`uploadUrl`
        キーは注文の `status` が `pending`
        で、そのファイルがアップロード待ちのときだけ含まれ、それ以外はキー自体がありません（`null` にはなりません）
      required:
        - fileId
        - fileName
      additionalProperties: false
      properties:
        fileId:
          type: string
          pattern: ^[0-9]+$
          description: 入力ファイル ID。数字だけの文字列です
          example: '11'
        fileName:
          type: string
          nullable: true
          description: 入力ファイル名（拡張子を含む）。不明な場合は `null` です
          example: cat.png
        uploadUrl:
          type: string
          format: uri
          description: >-
            ファイルをアップロードするための presigned `PUT` URL。注文の `status` が `pending`
            で保管期限前、かつそのファイルがアップロード待ちのときだけ含まれます。アップロード済みのファイル、`originalFileUrl`
            で指定したファイル、`pending` ではない注文ではキーがありません
    PublicAntiAiResult:
      type: object
      nullable: true
      description: Anti-AI の注文の結果。`status` が `complete` のときだけオブジェクトで、それ以外は `null` です
      required:
        - outputFiles
      additionalProperties: false
      properties:
        outputFiles:
          type: array
          description: 結果ファイルの一覧。入力ファイルごとに結果が 1 件です
          items:
            $ref: '#/components/schemas/PublicOutputFile'
    PublicWatermarkEmbedResult:
      type: object
      nullable: true
      description: >-
        watermark 埋め込み注文の結果。`status` が `complete` のときだけオブジェクトで、それ以外は `null`
        です。以前の v3 レスポンスの `outputs[]` と v2 詳細の `watermarks[]` を置き換えます
      required:
        - outputFiles
      additionalProperties: false
      properties:
        outputFiles:
          type: array
          description: 結果ファイルの一覧。入力ファイルの順、同じ入力の中では結果の順に並びます
          items:
            $ref: '#/components/schemas/PublicWatermarkEmbedOutputFile'
    PublicExtractInputFile:
      type: object
      description: >-
        `watermarkExtract` の注文の入力ファイル。元のファイルと検査対象を区別する `role` が加わります。`uploadUrl`
        のルールは `PublicInputFile` と同じです
      required:
        - fileId
        - fileName
        - role
      additionalProperties: false
      properties:
        fileId:
          type: string
          pattern: ^[0-9]+$
          description: 入力ファイル ID。数字だけの文字列です
          example: '51'
        fileName:
          type: string
          nullable: true
          description: 入力ファイル名（拡張子を含む）。不明な場合は `null` です
          example: suspect.png
        role:
          type: string
          enum:
            - original
            - query
          description: >-
            * `original` - watermark を埋め込んだ元のファイル

            * `query` - watermark の有無を検査するファイル。v2 注文の `watermarked` ロールも `query`
            として返します
        uploadUrl:
          type: string
          format: uri
          description: >-
            ファイルをアップロードするための presigned `PUT` URL。`status` が `pending`
            で、そのファイルがアップロード待ちのときだけ含まれます
    PublicWatermarkExtractResult:
      type: object
      nullable: true
      description: >-
        watermark 検出注文の結果。`status` が `complete` のときだけオブジェクトで、それ以外は `null`
        です。watermark ID やエンジンの理由コードなどの内部値は含みません
      required:
        - detectionStatus
        - watermarkText
        - reportSupported
        - reports
      additionalProperties: false
      properties:
        detectionStatus:
          type: string
          nullable: true
          enum:
            - detected
            - undetected
            - inconclusive
            - unsupported
            - error
            - null
          description: >-
            判定。検出記録のない v2 の注文（データ異常）だけ `null` です。

            * `detected` - watermark が見つかった

            * `undetected` - 最後まで検査したが watermark はなかった。v3 エンジンの `not_detected`
            と、保存されたステータスが `undetected` の v2 注文を含みます

            * `inconclusive` - 候補はあるが確信度の基準に届かず判断できない

            * `unsupported` - 処理できない入力（クレジットは返却）

            * `error` - 検出処理の失敗。watermark なしとは異なります。検出処理に失敗した v2 注文を含みます
        watermarkText:
          type: string
          nullable: true
          description: >-
            検出された watermark の埋め込みテキスト。`detectionStatus` が `detected` でなければ
            `null` です。v3 の注文では、呼び出し元のアカウントが埋め込み、発行記録がちょうど 1 件のときだけ返し、それ以外は
            `null` です
        reportSupported:
          type: boolean
          description: この検出結果から分析レポートを作成できるかどうか。v2 の注文と PDF からキャプチャした画像は `false` です
        reports:
          type: array
          description: この注文のロケールごとのレポートのステータス。v2 の注文は常に空の配列です
          items:
            type: object
            required:
              - locale
              - status
            additionalProperties: false
            properties:
              locale:
                type: string
                enum:
                  - ko-KR
                  - en-US
                  - ja-JP
              status:
                type: string
                enum:
                  - queued
                  - processing
                  - completed
                  - failed
    PublicAiDetectionResult:
      type: object
      nullable: true
      description: >-
        AI Detection の注文の結果。`status` が `complete` のときだけオブジェクトで、それ以外は `null`
        です。以前のレスポンスの `statusCode` は `verdict` に置き換わりました
      required:
        - verdict
        - probability
        - options
        - originalImageUrl
        - heatmapUrl
        - overlayUrl
      additionalProperties: false
      properties:
        verdict:
          type: string
          nullable: true
          enum:
            - likely_real
            - uncertain_real
            - uncertain_ai
            - likely_ai
            - null
          description: |-
            `probability` に基づく判定。`probability` が `null` なら `null` です。
            * `likely_real` - AI 生成ではない可能性が高い、probability < 0.25
            * `uncertain_real` - AI 生成ではない可能性がある、0.25 <= probability < 0.5
            * `uncertain_ai` - AI 生成の可能性がある、0.5 <= probability < 0.75
            * `likely_ai` - AI 生成の可能性が高い、probability >= 0.75
        probability:
          type: number
          format: float
          nullable: true
          minimum: 0
          maximum: 1
          description: AI 生成の確率（0〜1）。値がない場合は `null` です
          example: 0.31
        options:
          type: object
          nullable: true
          description: 注文作成時に設定したオプション。保存されたオプションがなければ `null` です
          properties:
            generateHeatmap:
              type: boolean
            generateOverlay:
              type: boolean
            generateThumbnail:
              type: boolean
        originalImageUrl:
          type: string
          format: uri
          nullable: true
          description: >-
            元の入力画像の URL（presigned、1 時間有効）。リサイズ画像がすべて用意された注文では、長辺 1600px 以内の WebP
            です
        heatmapUrl:
          type: string
          format: uri
          nullable: true
          description: >-
            ヒートマップ画像の URL（presigned、1 時間有効）。`generateHeatmap`
            オプションを使った注文だけで返し、それ以外は `null` です
        overlayUrl:
          type: string
          format: uri
          nullable: true
          description: >-
            元の画像にヒートマップを重ねた画像の URL（presigned、1 時間有効）。`generateOverlay`
            オプションを使った注文だけで返し、それ以外は `null` です
    PublicOutputFile:
      type: object
      description: >-
        Anti-AI の注文の結果ファイル 1 件。`fileId` はダウンロードのレスポンスの `files[].fileId`
        と値・順序が一致します
      required:
        - fileId
        - fileName
        - inputFileId
      additionalProperties: false
      properties:
        fileId:
          type: string
          pattern: ^[0-9]+$
          description: 結果ファイル ID。数字だけの文字列で、注文内で一意です
          example: '21'
        fileName:
          type: string
          nullable: true
          description: 結果ファイル名（拡張子を含む）。不明な場合は `null` です
          example: cat.png
        inputFileId:
          type: string
          pattern: ^[0-9]+$
          description: この結果の元になった入力ファイルの `inputFiles[].fileId`
          example: '11'
    PublicWatermarkEmbedOutputFile:
      type: object
      description: >-
        watermark 埋め込み注文の結果ファイル 1 件。`PublicOutputFile` に埋め込みテキスト `watermarkText`
        が加わります。v3 の注文で 1 つの入力ファイルに複数のテキストを埋め込むと、同じ `inputFileId`
        を持つ結果ファイルが複数作成されます
      required:
        - fileId
        - fileName
        - inputFileId
        - watermarkText
      additionalProperties: false
      properties:
        fileId:
          type: string
          pattern: ^[0-9]+$
          description: 結果ファイル ID。数字だけの文字列で、注文内で一意です
          example: '201'
        fileName:
          type: string
          nullable: true
          description: 結果ファイル名（拡張子を含む）。不明な場合は `null` です
          example: logo.png
        inputFileId:
          type: string
          pattern: ^[0-9]+$
          description: この結果の元になった入力ファイルの `inputFiles[].fileId`
          example: '31'
        watermarkText:
          type: string
          description: この結果ファイルに埋め込んだ watermark テキスト
          example: MORI
  responses:
    Unauthorized:
      description: 認証失敗
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: AUTH_NOT_AUTHENTICATED
    InternalError:
      description: 内部サーバーエラー
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: SERVER_INTERNAL_ERROR
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        外部クライアントアクセス用のBearer APIキー。本番キーは `sk_` プレフィックスを使用し、テストキーは `sk_test_`
        プレフィックスを使用して、処理やクレジット消費なしに注文ライフサイクルを検証します。

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.