官方 SDK 快速入門
官方 SDK 封裝了完整流程(建立 → 輪詢 → 下載),會自動產生冪等鍵並提供類型化錯誤;Node SDK 沒有任何相依套件,Python SDK 只相依 httpx。目前以 GitHub 儲存庫形式提供,npm / PyPI 正式發布將另行公告。
Node
npm install github:openaiav/sdk-node # npm release to be announced
import { OpenAiav } from '@openaiav/sdk'
const client = new OpenAiav({ apiKey: process.env.OPENAIAV_API_KEY })
const task = await client.generations.createAndWait({
model: 'seedance-2.5-oa', prompt: 'She walks into the sunlight.',
resolution: '480p', aspectRatio: 'adaptive', durationSeconds: 4,
generateAudio: false
})
await client.generations.downloadToFile(task.id, './out.mp4')Python
pip install git+https://github.com/openaiav/sdk-python # PyPI release to be announced
from openaiav import OpenAiav
client = OpenAiav(os.environ["OPENAIAV_API_KEY"])
task = client.generations.create_and_wait({
"model": "seedance-2.5-oa", "prompt": "She walks into the sunlight.",
"resolution": "480p", "aspectRatio": "adaptive", "durationSeconds": 4,
"generateAudio": False,
})
client.generations.download_to_file(task["id"], "./out.mp4")四步完成串接
- 使用伺服器端環境變數
OPENAIAV_API_KEY呼叫 https://api.openaiav.com/v1/models,讀取目前的模型鍵、計價與 reference_modes。 - 向 POST /v1/generations 提交 prompt、referenceMode 與 referenceImages;參考圖是公開的 HTTPS URL,不需要預先註冊。建立成功時回傳 HTTP 201。
- 儲存回應中的 id,依 poll_after_ms 對同一個 GET /v1/generations/{id} 輪詢。processing、result_pending、submission_unknown 都請繼續等待,不要重新建立。
- 狀態變為 succeeded 後,呼叫 GET /v1/generations/{id}/content 下載;完整回應為 HTTP 200,單一區間的 Range 為 206。
驗證與冪等
export OPENAIAV_API_KEY='oav_...'
# One Idempotency-Key per create intent: every run of this script makes a new one.
# Reuse it only when retrying this same create. No uuidgen? IDEMPOTENCY_KEY=$(python3 -c 'import uuid;print(uuid.uuid4())')
IDEMPOTENCY_KEY=$(uuidgen | tr 'A-Z' 'a-z')
echo "Idempotency-Key: $IDEMPOTENCY_KEY (reuse this value only when retrying this same create)"每個請求都要帶 Authorization: Bearer oav_...,金鑰只放在伺服器端。建立任務需要 generation:create,查詢和下載需要 generation:read。每個建立意圖生成一個新的 Idempotency-Key(UUID),範例每次執行都會換新的鍵;只在網路結果不確定、重試同一個建立請求時重複使用它,同一個鍵不得搭配不同的請求內容。
請求標頭
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
| Authorization | string | 必填 | 所有 /v1 請求都使用 Bearer oav_...;金鑰只儲存在伺服器端。 |
| Idempotency-Key | string | 僅建立任務時必填 | 每個建立意圖生成一個新值(例如 UUID),只在重試同一個建立請求時重複使用;相同的值與請求內容不會重複生成或重複扣款。 |
| Content-Type | string | 僅 POST 必填 | 建立任務使用 application/json。 |
端點一覽
| 方法 | 路徑 | 成功 | 權限範圍 | 說明 |
|---|---|---|---|---|
| GET | /v1/models | 200 | 任何有效的 API 金鑰 | 讀取目前可售模型、價格、解析度、時長與 reference_modes。提交前必須依目錄確認模型能力。 |
| POST | /v1/generation-quotes | 201 | generation:create | 預覽目前價格,不鎖定價格;建立任務時重新定價,依建立回應的 reserved_usd 固定扣款,失敗全額退款。仍可傳入 quoteId,expires_at 僅為重新整理提示。 |
| POST | /v1/generations | 201 | generation:create | 建立非同步任務;參考圖與 referenceMode 在同一個 JSON 請求中提交。 |
| GET | /v1/generations/{id} | 200 | generation:read | 依回應中的 poll_after_ms 查詢同一任務,直到終態。 |
| GET | /v1/generations/{id}/content | 200 / 206 | generation:read | 任務成功後下載輸出;單一區間的 Range 請求回傳 206。 |
第一步:讀取模型能力
不要把模型能力寫死。只有 reference_modes 列出的模式可以提交;介面也應在提交前隱藏或阻擋不相容的組合。最小範例固定示範 seedance-2.5-oa 的 4 秒、480p、無音訊請求。
curl --fail-with-body 'https://api.openaiav.com/v1/models' \
--header "Authorization: Bearer $OPENAIAV_API_KEY"最小公開影片範例
完整流程都在同一個範例裡:建立 → 輪詢同一任務 → 下載。 first_frame 使用一張參考圖和 adaptive;generateAudio=false 避免請求音訊。建立、輪詢、下載的成功狀態分別是 201、200、200/206;失敗回應先讀取 HTTP,再讀取 error.code。
# Keep OPENAIAV_API_KEY in an environment variable; do not paste secrets into shell history.
# One Idempotency-Key per create intent: every run of this script makes a new one.
# Reuse it only when retrying this same create. No uuidgen? IDEMPOTENCY_KEY=$(python3 -c 'import uuid;print(uuid.uuid4())')
IDEMPOTENCY_KEY=$(uuidgen | tr 'A-Z' 'a-z')
echo "Idempotency-Key: $IDEMPOTENCY_KEY (reuse this value only when retrying this same create)"
# 1. Create — success: HTTP 201. On failure, the response body contains error.code.
# Lost response (timeout or dropped connection)? Re-run this same command in this shell:
# the unchanged $IDEMPOTENCY_KEY returns the original task instead of creating a second one.
curl --fail-with-body --request POST 'https://api.openaiav.com/v1/generations' \
--header "Authorization: Bearer $OPENAIAV_API_KEY" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance-2.5-oa",
"prompt": "A young woman finishes a letter and walks from a stone cottage into the morning sunlight",
"resolution": "480p",
"aspectRatio": "adaptive",
"durationSeconds": 4,
"referenceMode": "first_frame",
"referenceImages": [
"https://developers.openaiav.com/samples/seedance-letter-reference.webp"
],
"generateAudio": false,
"outputFormat": "mp4"
}'
# 2. Save the returned id as TASK_ID. Poll the same id — success: HTTP 200.
curl --fail-with-body 'https://api.openaiav.com/v1/generations/TASK_ID' \
--header "Authorization: Bearer $OPENAIAV_API_KEY"
# Repeat step 2 after poll_after_ms until status is succeeded or failed.
# Never recreate a task whose status is submission_unknown.
# 3. After succeeded, download — success: HTTP 200 (or 206 with Range).
curl --fail-with-body --location 'https://api.openaiav.com/v1/generations/TASK_ID/content' \
--header "Authorization: Bearer $OPENAIAV_API_KEY" \
--output 'result.mp4'請求參數
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
| model | string | 必填 | 取自 GET /v1/models 的 model;最小影片範例使用 seedance-2.5-oa。 |
| prompt | string | 必填 | 1–4000 字元。全能參考可依陣列順序用 @Image1、@Image2 指代圖片。 |
| resolution | string | 選填 | 必須屬於所選模型的 resolutions;最小影片範例使用 480p。 |
| aspectRatio | string | 選填 | 必須屬於所選模型的 aspect_ratios;所選模型的首幀能力要求自適應畫幅時,請使用 adaptive。圖片模型若列出 image_size_options,resolution 與 aspectRatio 必須作為一組從中選取:並非每個解析度都提供全部畫幅。 |
| durationSeconds | integer | 選填 | 影片時長以 durationSeconds 指定,須為目錄 duration_seconds 區間內的整數秒數;省略時使用模型最短時長。最小範例使用 4 秒。 |
| referenceMode | first_frame | omni_reference | 使用影片參考圖時必填 | 只能用於目錄 reference_modes 明確列出的 Seedance 影片模型。一次請求只能選一個模式。 |
| referenceImages | string[] | 與 referenceMode 同時填寫 | 公開的 HTTPS 圖片 URL。first_frame 必須且只能 1 張;omni_reference 的上限請讀取 reference_images_max。 |
| inputImages | string[] | 選填 | 圖生圖的輸入圖片(參考圖),僅用於圖片模型。每一項是公開的 HTTPS 圖片 URL,或 data:image/png;base64,…、data:image/jpeg;base64,…、data:image/webp;base64,… 形式的 data URL。各模型的上限請見 GET /v1/models:input_images_max、input_image_max_bytes(每張,URL 與 data URL 都適用)和 input_image_mime_types。參考圖可能提高扣款。不要與影片參考模式混用。 |
| generateAudio | boolean | 選填 | 支援音訊的影片模型省略時預設為 true。最經濟的範例明確傳入 false;目前目錄沒有單列音訊附加費,計費一律以 GET /v1/models 為準。 |
| outputFormat | mp4 | mov | 選填 | 只能選擇目錄 output_formats 中的值;最小範例使用 mp4。 |
參考素材模式
first_frame
first_frame:參考圖會成為起始畫面並決定構圖。必須且只能提交 1 張 referenceImages;aspectRatio 取自所選模型的 aspect_ratios,目錄含 adaptive 時會固定為 adaptive(輸出依參考圖畫幅)。
first_last_frame:提交剛好 2 張 referenceImages,依陣列順序分別是首幀與尾幀,中間畫面由模型補全。兩張圖不需要相同尺寸。幀模式與 omni_reference 互斥。
{
"model": "seedance-2.5-oa",
"prompt": "A young woman finishes a letter and walks from a stone cottage into the morning sunlight",
"resolution": "480p",
"aspectRatio": "adaptive",
"durationSeconds": 4,
"referenceMode": "first_frame",
"referenceImages": [
"https://developers.openaiav.com/samples/seedance-letter-reference.webp"
],
"generateAudio": false,
"outputFormat": "mp4"
}omni_reference
omni_reference:參考素材用於鎖定主體、風格與場景的一致性,不要求成為首幀。除 referenceImages 外,支援的模型還可傳入 referenceVideos 與 referenceAudios;各類上限請見下表,目錄未宣告的類型一提交即回傳 400。提示詞依同類型內的陣列順序引用 @Image1、@Video1、@Audio1。
{
"model": "seedance-2.5-oa",
"prompt": "Keep the identity and outfit from @Image1; a young woman walks from a stone cottage into the morning sunlight",
"resolution": "480p",
"aspectRatio": "16:9",
"durationSeconds": 4,
"referenceMode": "omni_reference",
"referenceImages": [
"https://developers.openaiav.com/samples/seedance-letter-reference.webp"
],
"generateAudio": false,
"outputFormat": "mp4"
}實際相容範圍
所有影片模型都使用同一套串接方式:同一個端點、同一組欄位,換模型只需改 model。差異全部由目錄宣告——下表就是目錄本身,逐一列出每個模型支援哪些參考模式、各類素材可收幾個。目錄沒有宣告的能力,提交時會被明確拒絕,不會默默忽略。
首幀細則與尾幀接力
首幀細則:first_frame 與 omni_reference 互斥,同一請求只能選其一;omni 模式下可用提示詞間接引導某張參考圖作為起始畫面,但需要嚴格的首幀一致時,請使用 first_frame 模式提交那張圖。Seedance 2.5 的首幀任務畫幅固定為 adaptive(輸出依首幀)。尾幀接力:建立時傳入 returnLastFrame: true,成功後任務會另外回傳 last_frame_url(與影片同寬高的無浮水印 PNG,保留 24 小時)——把這個 URL 直接作為下一個請求 first_frame 的 referenceImages,即可串聯多鏡頭的連續敘事,不需任何預先註冊步驟。
參考影片計價
- 可測得時長的參考影片按固定價格計費,可先預覽這個金額;無法測得時長時拒絕預覽,不扣費。
- 呼叫
POST /v1/generation-quotes預覽目前價格。伺服器會測量 URL 影片;建立任務時重新測量並定價,實際金額以建立回應的reserved_usd為準。仍可傳入quoteId,但不鎖定價格;expires_at僅提示重新整理預覽。 - 模型目錄規定單一、總時長、數量及最低計費秒數;Seedance 2.0 系列的每段參考影片為 2–15 秒,其他適用模型為 2–30 秒。實測超出範圍回傳 422
REFERENCE_DURATION_OUT_OF_RANGE,不扣費。 - 只支援 MP4/MOV 公開 HTTPS 直連網址。已知檔案大小超過 200 MiB 時回傳
REFERENCE_VIDEO_TOO_LARGE;未回報大小仍可報價。非公開位址回傳REFERENCE_URL_NOT_PUBLIC,探測繁忙時回傳 429REFERENCE_PROBE_BUSY。控制台上傳上限為 32 MiB。 - 每個任務都在建立時依報價扣除
reserved_usd,成功時就按這個金額,失敗時全額退回。預覽中的price_usd等於在預覽那一刻建立所需扣除的金額;輸出影片長度仍須明確指定,不可使用 -1。 - 公開影片 URL 在預覽和建立時各探測一次,隨後以直連網址供生成服務讀取,無須平台儲存或素材註冊。請保持連結內容穩定。上傳檔案走獨立註冊路徑。真人臉素材仍受模型限制。
圖片模型計價
- 圖片模型按張計價,價格隨
resolution與aspectRatio變化,請見image_pricing.rates。gpt-image-*與nano-banana-*模型的列表價以短提示詞、不帶參考圖計算。 - 帶參考圖或提示詞較長時,這些模型的扣款會更高。建立任務前,用同樣的請求內容呼叫
POST /v1/generation-quotes,回傳的price_usd就是這次請求按目前價格的扣款金額。任務失敗將全額退款。
輪詢與下載
只有 succeeded 與 failed 是終態。submission_unknown 表示受理結果確認中,result_pending 表示結果正在完成:保留原任務 ID,繼續輪詢,絕對不要重送建立請求。成功後請優先使用需驗證的下載路徑 /content,不要依賴任何非 Open AIav 的網址。輸出結果保留 24 小時(詳細資訊會回傳 output_expires_at 倒數;過期後下載會回傳 410 OUTPUT_EXPIRED,請及時另存)。
| 狀態 | 終態 | 處理方式 |
|---|---|---|
| processing | 否 | 已受理;請依 poll_after_ms 繼續查詢。 |
| result_pending | 否 | 結果正在完成;保留任務 ID 並繼續輪詢同一任務,勿重新建立。 |
| submission_unknown | 否 | 受理結果確認中;不要重送建立請求,請保留並繼續查詢原任務 ID。 |
| succeeded | 是 | 成功;使用 /content 下載輸出。 |
| failed | 是 | 確定失敗,已全額退款;請讀取 error_code。 |
舊端點遷移
/v1/assets、/v1/assets/content、/v1/assets/{id}、/v1/asset-groups 與 /v1/asset-groups/{id} 已停用;使用有效金鑰及相應的舊 scope 呼叫時會回傳 HTTP 410 / ENDPOINT_RETIRED。新的串接不得呼叫這些路徑;請把 referenceMode 與 referenceImages 放進同一次生成請求。錯誤碼對照
完整對照:HTTP 狀態、錯誤碼、含義、建議處理方式與 SDK 錯誤類別。本表與 SDK 的錯誤對應使用同一個資料來源;遇到未知的新錯誤碼時,SDK 會依 HTTP 狀態分類處理。
| HTTP | 錯誤碼 | 含義 | 建議處理方式 | SDK |
|---|---|---|---|---|
| 401 | UNAUTHENTICATED | 缺少 API 金鑰或無法識別。 | 請帶上 Authorization: Bearer oav_… 請求標頭;金鑰只放在伺服器端。 | AuthenticationError |
| 401 | INVALID_API_KEY | 金鑰無效或已撤銷。 | 請在控制台確認金鑰狀態;必要時輪換以取得新金鑰。 | AuthenticationError |
| 403 | INSUFFICIENT_SCOPE | 金鑰缺少此操作所需的權限範圍(scope)。 | 建立任務需要 generation:create,查詢與下載需要 generation:read。 | PermissionError |
| 429 | RATE_LIMITED | 請求超出此金鑰的速率限制。 | 請依 Retry-After / retryAfterSeconds 延後重試;SDK 會自動處理。 | RateLimitError |
| 400 | IDEMPOTENCY_KEY_REQUIRED | 建立任務必須帶上 Idempotency-Key。 | 每個新請求都建立唯一的鍵;網路重試時重複使用同一個鍵。SDK 會自動建立。 | InvalidRequestError |
| 409 | IDEMPOTENCY_KEY_CONFLICT | 同一個冪等鍵被用於不同的請求內容。 | 參數不同時請換新鍵;以相同參數重試時,鍵與請求內容必須完全一致。 | InvalidRequestError |
| 400 | MODEL_NOT_FOUND | 未知的模型 ID。 | 請以 GET /v1/models 回傳的 model 為準(例如 seedance-2.5-oa)。 | InvalidRequestError |
| 503 | MODEL_NOT_AVAILABLE | 此模型暫時無法呼叫。 | 本次未扣款。請查看此模型在 GET /v1/models 中的 status,稍後再試。 | ServerError |
| 400 | INVALID_PROMPT | 提示詞為空或過長。 | 提示詞須為 1–4000 字元。 | InvalidRequestError |
| 400 | INVALID_DURATION | durationSeconds 不在模型允許的區間內。 | 請指定影片長度:填寫目錄 duration_seconds 區間內的整數秒數。 | InvalidRequestError |
| 400 | INVALID_RESOLUTION | 此模型不支援該解析度。 | 請從目錄的 resolutions 中選擇。 | InvalidRequestError |
| 400 | INVALID_ASPECT_RATIO | 此模型不支援該畫幅。 | 請從目錄的 aspect_ratios 中選擇;first_frame 通常固定為 adaptive。 | InvalidRequestError |
| 400 | INVALID_REFERENCE_IMAGES | referenceImages 必須是公開 HTTPS URL 的陣列。 | 每一項都要提供任務期間可讀取的 https:// 圖片連結。 | InvalidRequestError |
| 400 | INVALID_REFERENCE_IMAGE | 其中一項參考圖不是有效的 URL。 | 錯誤訊息會標示索引(referenceImages[i]);請檢查該連結。 | InvalidRequestError |
| 400 | REFERENCE_IMAGE_URL_NOT_HTTPS | 參考圖連結不是公開的 HTTPS。 | 不支援 http、內部網路或 data URL;請上傳到可公開存取的儲存空間。 | InvalidRequestError |
| 400 | REFERENCE_MODE_REQUIRES_IMAGES | 指定了 referenceMode 卻沒有參考圖。 | referenceMode 與 referenceImages 必須同時提供。 | InvalidRequestError |
| 400 | REFERENCE_MODE_NOT_SUPPORTED | 此模型不支援所選的參考模式。 | 請依目錄的 reference_modes 選擇 first_frame / omni_reference。 | InvalidRequestError |
| 400 | FIRST_FRAME_REQUIRES_ONE_IMAGE | first_frame 必須且只能有一張參考圖。 | 只提交 1 張;多張圖片請改用 omni_reference。 | InvalidRequestError |
| 400 | TOO_MANY_REFERENCES | 參考圖數量超過目錄上限。 | 上限請見目錄的 reference_images_max。 | InvalidRequestError |
| 400 | INVALID_INPUT_IMAGES | inputImages 必須是陣列。 | 每一項須為 HTTPS URL 或 data:image/* base64。 | InvalidRequestError |
| 400 | INVALID_INPUT_IMAGE | 其中一項輸入圖片的格式無效。 | 每一項須為 HTTPS URL 或 data:image/* base64;錯誤訊息會標示索引。 | InvalidRequestError |
| 400 | INPUT_IMAGE_URL_NOT_HTTPS | 輸入圖片連結不是 HTTPS。 | 請改用 https:// 連結,或 data:image/png;base64,… 這類 data URL。 | InvalidRequestError |
| 400 | INPUT_IMAGE_TOO_LARGE | 內嵌圖片超過 10 MiB。 | 壓縮到 10 MiB 以內再送出。列出 input_image_max_bytes 的模型對 HTTPS 連結同樣限制大小:超過時任務會以 REFERENCE_INPUT_INVALID 失敗並全額退款。 | InvalidRequestError |
| 400 | IMAGE_INPUT_NOT_SUPPORTED | 此模型不支援圖片輸入。 | 只有目錄宣告 input_images_max>0 的圖片模型可以使用 inputImages。 | InvalidRequestError |
| 400 | TOO_MANY_INPUT_IMAGES | 輸入圖片數量超過上限。 | 上限請見目錄的 input_images_max。 | InvalidRequestError |
| 422 | REFERENCE_DURATION_OUT_OF_RANGE | 實測的參考影片時長超出模型限制。 | 檢查目錄中的單一、總時長及數量上限後重新預覽;本次未扣費。 | InvalidRequestError |
| 422 | REFERENCE_DURATION_UNVERIFIED | 無法實測參考影片時長。 | 請使用一般 MP4/MOV,建議 faststart;URL 主機須支援 Range 請求。 | InvalidRequestError |
| 422 | REFERENCE_URL_NOT_PUBLIC | 參考影片 URL 不是公開 HTTPS 位址。 | 請使用不需登入的公開 HTTPS 直連網址,連接埠為 443。 | InvalidRequestError |
| 422 | CONTENT_TYPE_MISMATCH | 參考影片 URL 回傳的內容不是所需的影片格式。 | 確認連結直接回傳 MP4/MOV 位元組,而非網頁或圖片。 | InvalidRequestError |
| 422 | REFERENCE_VIDEO_TOO_LARGE | 參考影片超出檔案大小上限。 | 公開 URL 上限為 200 MiB,控制台上傳上限為 32 MiB;壓縮或裁剪後重新預覽。 | InvalidRequestError |
| 429 | REFERENCE_PROBE_BUSY | 同時實測的參考影片過多。 | 依 retry_after_seconds 稍後重試;本次未扣費。 | RateLimitError |
| 400 | INSUFFICIENT_BALANCE | 餘額不足以支付本次任務。 | 請到控制台「錢包」儲值或兌換後重試。 | InvalidRequestError |
| 400 | LEGACY_ASSET_REFERENCE_RETIRED | 素材 ID 引用已停用。 | 請在同一次請求中使用 referenceMode + referenceImages(公開 HTTPS)。 | InvalidRequestError |
| 404 | NOT_FOUND | 任務不存在,或屬於其他帳號。 | 請確認任務 ID 與金鑰屬於同一個帳號。 | InvalidRequestError |
| 409 | OUTPUT_NOT_READY | 輸出尚未就緒。 | 請依 poll_after_ms 繼續輪詢任務,直到終態。 | InvalidRequestError |
| 410 | OUTPUT_EXPIRED | 輸出的下載期限(成功後 24 小時)已過。 | 請及時儲存輸出;過期後需重新生成。可用詳細資訊中的 output_expires_at 顯示倒數。 | OutputExpiredError |
圖片任務失敗碼
圖片任務以 status=failed 結束時,請讀取 error_code 並對照下表。失敗的任務將全額退款。SDK 會拋出帶有同一錯誤碼的 GenerationFailedError。
| 錯誤碼 | 含義 |
|---|---|
| CONTENT_POLICY_REJECTED | 內容未通過審核,請調整內容後重新提交。 |
| REFERENCE_INPUT_INVALID | 素材不符合要求,請檢查格式、大小及模型支援的參數。 |
| REFERENCE_SOURCE_UNREACHABLE | 素材連結無法讀取,請檢查連結有效期限或重新上傳。 |
| REFERENCE_SERVICE_UNAVAILABLE | 素材處理服務暫時無法使用,請附上任務編號聯絡客服;不需要因此反覆更換圖片。 |
| GENERATION_INPUT_INVALID | 生成參數不符合模型要求,請檢查輸入。 |
| GENERATION_RATE_LIMITED | 生成服務暫時達到速率限制,請稍後再試。 |
| GENERATION_REJECTED | 生成請求遭到拒絕,請附上任務編號聯絡客服確認原因。 |
| GENERATION_SERVICE_UNAVAILABLE | 生成服務暫時無法使用,請稍後再試。 |
| GENERATION_FAILED | 任務未能完成,請附上任務編號聯絡客服。 |
僅在控制台回傳的錯誤碼
| HTTP | 錯誤碼 | 含義 | 建議處理方式 |
|---|---|---|---|
| 400 | REFERENCE_UPLOAD_NOT_FOUND | 本機上傳的引用不存在、已過期或不屬於目前的帳號。 | 請在線上測試中重新上傳後再執行(上傳內容只在短時間內有效)。 |
| 429 | UPLOAD_QUOTA_EXCEEDED | 未使用的上傳數量已達上限。 | 請先執行使用這些上傳內容的任務,或等待其過期後重試。 |
| 429 | WEBHOOK_ENDPOINT_LIMIT | Webhook 端點數量已達上限。 | 請刪除或停用不再使用的端點。 |
| 400 | INVALID_WEBHOOK_URL | 回呼 URL 不是可公開存取的 HTTPS 位址。 | 請使用公開的 HTTPS 位址;內部網路或迴路位址會被拒絕。 |