使用內容來源追溯 API,檢查圖像或音訊檔案是否包含
支援的 OpenAI 來源追溯訊號。將檔案傳送至
POST /v1/content_provenance_checks,即可在同一個回應中取得
已完成的驗證結果。這些訊號可用於內容審查、
事實查核、標示,以及信任與安全工作流程。
若要在瀏覽器中檢查檔案,請使用 openai.com/verify 的網頁工具。
如需請求參數和回應結構描述,請參閱 內容來源追溯 API 參考文件。
結果為 not_detected,表示工具未在
上傳的檔案中找到支援的訊號。即使內容的中繼資料
遭到移除或出現竄改跡象、浮水印減弱、
來自舊版生成模型,或是在來源追溯訊號
推出前建立,內容仍可能由 OpenAI 生成。此工具目前無法偵測
其他公司 AI 模型生成的內容,因此 not_detected 結果
也無法排除這種可能性。
內容來源追溯的檢查項目
內容來源追溯會檢查支援的檔案是否包含下列訊號:
| 訊號 | 適用於 | 檢查內容 |
|---|---|---|
| C2PA 內容憑證 | 圖像 | 包含簽發者與 AI 使用詳情的已簽署中繼資料 |
| SynthID | 圖像和音訊 | 直接嵌入支援媒體中的浮水印 |
C2PA 中繼資料提供更多關於檔案來源的背景資訊。編輯、轉換或 分享檔案時,可能會移除其中繼資料。SynthID 浮水印是 圖像或音訊本身的一部分,經過某些轉換後仍可能保留。
此 API 會檢查支援的 OpenAI 訊號。它不是通用的 AI 偵測工具,也無法識別所有 AI 系統生成的內容。可見的 浮水印和標籤,與此 API 檢查的來源追溯訊號 並不相同。
驗證檔案
使用 OpenAI SDK,透過 file 欄位傳送圖像或音訊檔案。SDK
會建立多部分請求,並從 OPENAI_API_KEY
環境變數讀取你的 API 金鑰:
import { createReadStream } from "node:fs";
import OpenAI, { toStreamingFile } from "openai";
const client = new OpenAI();
const result = await client.contentProvenanceChecks.create({
file: toStreamingFile(createReadStream("myimage.png"), "myimage.png", {
type: "image/png",
}),
});
console.log(result);請使用下列或更新版本的 OpenAI SDK:Python 2.52.0、Go 3.49.0,以及 Ruby 0.75.0。
若要驗證 Opus 音訊,請使用相同的端點,並將上傳檔案的
媒體類型設為 audio/ogg:
curl https://api.openai.com/v1/content_provenance_checks \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "file=@./example.opus;type=audio/ogg"
回應會包含已完成的結果。例如,圖像會傳回:
{
"object": "content_provenance_check",
"created_at": 1778000000,
"results": [
{
"type": "c2pa",
"outcome": "detected",
"validation_state": "trusted",
"issuer": "OpenAI OpCo, LLC",
"model": "gpt-image",
"generated_at": "2026-07-27T18:34:12Z"
},
{
"type": "synthid",
"outcome": "not_detected",
"model": null,
"generated_at": null
}
]
}
object 欄位用於識別回應,created_at 則是此次檢查的
建立時間,以秒為單位的 Unix 時間戳記表示。results 中的項目取決於
上傳的檔案:圖像包含 C2PA 和 SynthID 結果,音訊則包含
SynthID 結果。API 會省略不適用的檢查,而不是傳回
not_detected。
API 會在傳回回應前完成驗證。你不需要建立 背景作業、輪詢另一個端點,或將檔案上傳至 Files API。
如果請求失敗,請檢查 HTTP 狀態,以及可用時的 error.code。
格式錯誤、不支援或遭封鎖的檔案會傳回 400;沒有存取權限的組織
會收到 404;超過速率限制的請求則會傳回 429。請僅針對
暫時性失敗重試,例如速率限制或伺服器錯誤。如需一般指引,
請參閱 API 錯誤代碼。
瞭解驗證結果
請分別解讀 results 中每個適用的項目。圖像結果包含
C2PA 和 SynthID 項目,音訊結果則包含 SynthID 項目。
回應不包含頂層的 outcome。
C2PA 結果
C2PA 結果說明圖像內容憑證的狀態:
{
"type": "c2pa",
"outcome": "detected",
"validation_state": "trusted",
"issuer": "OpenAI OpCo, LLC",
"model": "gpt-image",
"generated_at": "2026-07-27T18:34:12Z"
}
各欄位的用法如下:
outcome表示 OpenAI 簽發的 AI 生成憑證偵測結果為detected或not_detected。validation_state表示資訊清單的狀態為trusted、valid、invalid或not_present。- 有相關資訊時,
issuer會指出資訊清單的簽發者。 - 有相關資訊時,
model會指出生成內容所用的模型。 - 有相關資訊時,
generated_at會指出 內容的生成時間。
只有狀態為 trusted 或 valid 的資訊清單
將 OpenAI 列為簽發者,且包含 AI 生成動作時,結果才會是 detected。第三方
資訊清單、未包含 AI 生成動作的資訊清單、狀態為 invalid 的資訊清單,或
狀態為 not_present 的資訊清單,都會產生 not_detected 結果。issuer 和
validation_state 仍可提供資訊清單的相關資訊,即使結果是
not_detected。
不要將狀態為 invalid 的資訊清單視為可靠的來源追溯證據。
not_present 結果表示圖像沒有可用的 C2PA 資訊清單。
SynthID 結果
SynthID 結果說明驗證工具是否在圖像或音訊檔案中 偵測到支援的浮水印:
{
"type": "synthid",
"outcome": "detected",
"model": null,
"generated_at": null
}
結果為 detected,表示檔案包含可辨識的浮水印。
結果為 not_detected,表示驗證工具未偵測到該浮水印。
這並不排除內容由 AI 生成或修改的可能性。model 和
generated_at 會在有相關資訊時,提供生成內容所用的模型和生成時間;
這兩個欄位都可能是 null。
支援的格式與可用性
API 支援下列檔案格式:
- 圖像: PNG、JPEG 和 WebP。
- 音訊: MP3、Opus、AAC、FLAC、WAV 和 PCM。
每個上傳檔案不得超過 50 MiB。音訊解碼後的長度 不得超過 60 秒。
請設定上傳的 file 部分的媒體類型。例如,PNG 圖像使用 image/png,
Opus 音訊則使用 audio/ogg。不要新增獨立的 type 欄位,也不要
手動設定 multipart/form-data 請求標頭。curl 的 -F 選項
會設定請求的內容類型和多部分邊界。每個請求請傳送一個檔案。
內容來源追溯檢查不適用於 零資料保留。
嚴格的速率限制有助於防止 API 遭到濫用。組織可以 申請提高限制, OpenAI 會逐案審查每份申請。
如果 API 傳回 429 rate_limit_exceeded,請降低請求速率,並在
回應包含 Retry-After 標頭時遵照其指示。如需一般重試指引,請參閱
速率限制。
負責任地使用驗證結果
將驗證結果作為更全面審查流程中的證據:
- 將
detected視為存在特定支援訊號的證據,而非檔案的 完整歷程。 - 將
not_detected視為未偵測到證據,而非證明 內容由人類創作或未使用 OpenAI 生成。 - 在判定圖像來自特定供應商之前,請先檢查 C2PA 簽發者。
- 盡可能驗證原始檔案。壓縮、裁切、擷取螢幕畫面、 移除中繼資料和轉換格式,都可能消除或削弱訊號。
- 請將來源產品、模型、檔案格式和建立日期納入考量。 並非所有 OpenAI 生成的內容都包含支援的訊號。
- 在涉及重大利害關係的工作流程中,請搭配人工審查進行自動化決策。
- 不要透過重複查詢來反向工程分析、移除或規避浮水印。
- 請勿根據驗證結果推斷提示詞、帳戶或個別創作者。
使用內容來源追溯 API 須遵守 OpenAI 服務協議。
如需全平台監控與資料保留設定的相關資訊,請參閱 資料控管。