跳到主要內容

上游串接規格

我們會怎麼呼叫你的 API

這份文件寫給想接上 AppleToken 的上游供應商,內容是平台現在實際送出的請求與讀取的欄位。看完就知道要開哪些端點(API 路徑)、回應要長什麼樣。

先看結論:支援哪些能力

每種能力都有一套規格:要實作的端點、必要欄位、回應格式與錯誤處理。做法不符合下表任何一種的能力,目前不支援。

能力你要提供
對話(含串流,也就是一邊產生一邊回傳)POST /chat/completions、GET /models,usage 欄位要準確(usage 回報這次用了多少 token,token 是模型計算文字量的單位)
圖片一次回完的 POST /images/generations,或通用任務介面 POST /requests,做其中一種
影片影片介面 POST /videos/generations、影片介面 POST /videos,或通用任務介面 POST /requests,做其中一種
語音、音樂通用任務介面 POST /requests
圖片編輯、放大、對嘴、3D通用任務介面 POST /requests
素材上傳選配:我們給網址讓你收檔、查狀態、刪除

Embedding、語音轉文字目前不支援。

全部串接方法一覽

下表是平台目前對上游實際會打的所有方法。路徑都接在你的 Base URL(API 網址的開頭)後面。「模式」欄的意思:一次回完是同一個請求裡直接拿到結果;長任務見表格下方的說明。

方法我們送出的請求模式
對話POST /chat/completions一次回完
對話串流POST /chat/completions,帶 stream: true串流
模型清單GET /models一次回完
圖片生成POST /images/generations一次回完
以圖生圖POST /images/edits一次回完
影片介面POST /videos/generations、GET /videos/{id}、GET /videos/{id}/content長任務
影片介面POST /videos、GET /videos/{id}、GET /videos/{id}/content長任務
通用任務介面POST /requests、GET /requests/{id},再下載成品網址長任務
文字轉語音通用任務介面 POST /requests長任務
聲音複製通用任務介面 POST /requests長任務
音訊編輯通用任務介面 POST /requests長任務
音樂生成通用任務介面 POST /requests長任務
圖片編輯工具通用任務介面 POST /requests長任務
圖片放大、影片放大通用任務介面 POST /requests長任務
對嘴(找臉、合成)通用任務介面 POST /requests長任務
3D 生成通用任務介面 POST /requests長任務
素材POST /assets、GET /assets/{id}、DELETE /assets/{id}長任務
累計用量(選配)GET /dashboard/billing/usage一次回完

長任務怎麼運作

長任務是做一次要等比較久的工作,例如生成影片。你不用把連線開著等成品,流程分成四步:

  1. 1送出任務我們呼叫送出的端點,例如 POST /videos。
  2. 2拿到任務編號你先回一個任務編號,不用等成品做完。
  3. 3每隔幾秒查進度我們帶著編號呼叫查詢的端點,例如 GET /videos/{id}。這份文件說的「查進度」都是這一步。
  4. 4完成後拿成品查到完成後,我們下載成品。

圖片、語音、圖片放大等走 POST /requests 的功能,我們送出任務後會在同一次處理內一路查進度,直到拿到成品。

連線與認證

項目規則
Base URL公開的 https:// 網址,含版本路徑、結尾不加斜線,例如 https://api.example.com/v1。必須解析到公開 IP,http:// 與私有位址不收。
認證每個請求帶 Authorization: Bearer <API key>。沒有 OAuth、簽章或時間戳。
標頭(header)請求有內容時 Content-Type: application/json;Accept: application/json,串流是 text/event-stream,取影片是 video/mp4。
model原樣送你在 GET /models 列出的 id。
IP 白名單、防火牆如果你的服務會依來源 IP 或 User-Agent 擋請求,請在測試前告訴我們。被擋的請求對我們來說就是失敗。

逾時與等待

項目現值
單次 HTTP 請求900 秒,包含讀取串流內容
串流斷線後繼續讀取最多再讀 120 秒,用來取得 usage
長任務總等待2 小時,超過就判失敗
查進度的間隔約 2、4、8、16、32 秒,之後每 60 秒一次
查不到任務(404)時的等待送出後 5 分鐘內當暫時狀況,之後判失敗
走 POST /requests 的圖片與語音查進度每 2 秒一次,總上限同單次請求
驗證金鑰時的 GET /models連線 5 秒、回應 8 秒

對話:POST /chat/completions

OpenAI 相容的對話服務要實作這支與 GET /models。

我們送出的欄位

欄位說明
model你的模型 id
messages原樣轉送,包含文字以外的內容(例如圖片)
max_tokens有值才送。max_completion_tokens 也會改寫成 max_tokens,所以請以這個欄位為準
temperature、top_p、stop、seed、n有值才送
presence_penalty、frequency_penalty有值才送
response_format、tools、tool_choice、parallel_tool_calls有值才送
logprobs、top_logprobs、user有值才送
reasoning_effort、reasoning、thinking有值才送

其他欄位不會轉給你。你不支援的欄位,請回 400 並寫清楚原因,或忽略它並寫進你的規格,不要回 5xx。

POST {base}/chat/completions
Authorization: Bearer <API key>
Content-Type: application/json
Accept: application/json

{
  "model": "your-model-id",
  "messages": [{ "role": "user", "content": "Hello" }],
  "max_tokens": 256,
  "temperature": 0.7
}

回應

欄位用途
id記進我們的帳,用來和你對帳
object、created、model照 OpenAI 格式回傳
choices[]index、finish_reason、logprobs、content_filter_results 與 message
messagerole、content、tool_calls、function_call、reasoning_content、reasoning、reasoning_details、refusal、annotations、audio
usage計費依據,見「usage 與計費依據」

其他欄位我們不使用。回應裡的 cost 我們不讀。

HTTP/1.1 200 OK
x-req-id: 7f3a9c

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1790000000,
  "model": "your-model-id",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "Hi" },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 2,
    "total_tokens": 11
  }
}

請求編號(request id)

  • 請在回應內容(body)放 id。沒有的話我們改讀標頭 x-request-id,再來是 request-id。
  • 另外建議在所有回應(含錯誤)帶標頭 x-req-id。它和 id 分開保存,是發生錯誤時我們向你查件的依據。
  • 這些值只進我們的帳與紀錄。

串流格式

串流是把回應拆成很多小塊陸續送出,下面說的「第一塊」「最後一塊」就是這些小塊。端點相同,我們多送 "stream": true 與 "stream_options": {"include_usage": true},Accept 是 text/event-stream。

  • 格式是 SSE(Server-Sent Events,伺服器持續送出文字事件的標準格式)。每個事件一行 data: <JSON>,事件之間用一個空行分隔,分隔符必須是 \n\n。用 \r\n\r\n 分隔的串流目前無法解析。
  • 我們只讀 data: 開頭的行,每一行要是完整的 JSON。event: 行與註解行會略過,解析不了的行也會略過。
  • 結尾送 data: [DONE]。
  • usage 放在 [DONE] 之前的最後一塊,可以是 choices 為空的獨立一塊,也可以和 finish_reason 同一塊。收到多次時以最後一次為準。
  • 在第一塊送出之前,請用 HTTP 狀態碼回報錯誤。
  • 串流開始後,我們不解析 error 事件。連線異常中斷時,這筆記入對帳紀錄。
  • 上游正常關閉卻沒有給 usage 時,我們依收到的內容長度估算(約每 4 字元 1 token)。
  • 串流斷線後,我們會繼續讀到結束以取得 usage,最多再讀 120 秒,之後才中止連線。
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":"Hi"}}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":9,"completion_tokens":2,"total_tokens":11}}

data: [DONE]

模型清單:GET /models

這支是必要的,有兩個用途:

  • 驗證金鑰:存入金鑰前,我們會用那把金鑰打一次,只看 HTTP 狀態。不是 2xx 就不存,連線 5 秒、回應 8 秒內要有結果。
  • 更新模型清單:讀 data 陣列裡每一項的 id,另外會讀 owned_by,以及選填的 type 或 modality。
GET {base}/models

{
  "data": [
    { "id": "your-model-id", "owned_by": "your-company", "type": "text" }
  ]
}

這一步只讓我們知道你有哪些模型,不會自動上架。模型要經過我們登記價格、確認後才會開放。

錯誤碼與重試

錯誤內容請用 {"error": {"message": "…", "code": "…"}},或 {"message": "…"}。不是 JSON 的內容會被當成一般錯誤處理。

你回的狀態我們怎麼判斷算不算連續失敗
400、404、422 等 4xx請求本身的問題否
401、403金鑰有問題否
402這個帳號暫時無法計費,我們內部會收到警示否
429暫時超過容量是
5xx服務暫時異常是
連線失敗、逾時服務暫時異常是
  • 我們不會對同一個上游自動重送。
  • 內容審核拒絕請回 4xx,不要回 5xx,否則會被當成服務故障。
  • 請不要在錯誤訊息裡放內部主機、帳號或其他敏感資訊。
  • 連續失敗太多次,平台會自動暫停這個模型,見「失敗處理與自動暫停」。

usage 與計費依據

平台這邊依雙方確認的單價與下表的數量記帳,用來和你的月帳單核對。我們不讀回應裡的金額欄位。

對話的 usage 欄位

欄位規則
輸入prompt_tokens,沒有才讀 input_tokens
輸出completion_tokens,沒有才讀 output_tokens,再沒有才讀 total_tokens
模型思考(reasoning)completion_tokens_details.reasoning_tokens 只作記錄;思考用掉的量要包含在輸出數字裡,否則算不到
快取prompt_tokens_details.cached_tokens 只作記錄。OpenAI 相容的對話目前不分開計算快取讀寫,也不分開計算語音輸入

輸入與輸出分開計價時,兩個數字都要是正數。缺輸入時退回只算輸出,都缺時才依內容長度估算。usage 不準會直接影響帳,所以測試時會逐項核對。

各方法的計費數量

方法數量來源
對話、串流你回報的 usage
圖片依模型:按張(以實際交付張數計),或按 token(讀回應的 usage)
影片依模型與請求參數:秒數、解析度、有無音訊;任務回傳 usage 時讀 usage,拿不到就依請求參數計算
文字轉語音依模型:字元數由我們自己算(每個 Unicode code point 算一個),不採用上游回報;或每次一個價;或成品 WAV 的秒數
音樂每首一個價
圖片編輯、圖片放大、3D每次一個價
影片放大平台自己量到的輸入秒數
對嘴平台量到的輸入秒數,每 5 秒一段
  • 價目可以依輸入長度、解析度或時段分段。分段規則請在規格裡寫明。
  • 目前不向供應商收抽成。

其他能力的規格

  • 這些介面不用全做。你有提供的每項能力,只要做表上其中一種;表上只有一種就做那一種。
  • 為什麼不只一種:這些都是我們的程式已經支援的格式。
  • 做法不符合表上任何一種的能力,目前不支援。
  • 所有上游都要實作 GET /models,並遵守「連線與認證」與「錯誤碼與重試」。

每種能力都是一套規則。下面列出必須實作的端點、必要欄位、回應格式與錯誤處理。

每項能力要做哪一種

能力做其中一種接受的回應方式
圖片POST /images/generations,或通用任務介面 POST /requests一次回完的 base64(把檔案內容轉成文字,直接放在回應裡),或成品網址
影片影片介面 POST /videos/generations、影片介面 POST /videos,或通用任務介面 POST /requests直接回影片檔,或成品網址
文字轉語音、聲音複製、音訊編輯、音樂通用任務介面 POST /requests成品網址
圖片編輯工具、圖片放大、影片放大、對嘴、3D通用任務介面 POST /requests成品網址
素材(選配)素材端點你的模型要先收素材才能引用時才需要

三種影片做法的差別

項目POST /videos/generationsPOST /videosPOST /requests
送出任務的端點POST /videos/generationsPOST /videosPOST /requests
任務編號欄位ididrequest_id
查進度的端點GET /videos/{id}GET /videos/{id}GET /requests/{id}
成功狀態completedcompletedsuccess
失敗狀態failedfailedfailed、cancelled
成品GET /videos/{id}/content 回影片檔GET /videos/{id}/content 回影片檔outcome.media_urls 給網址
輸入圖網址data URL(把檔案內容直接寫進網址字串)網址
計費數量有 usage 就讀,否則依請求參數依請求參數請求的秒數

共同的錯誤處理

階段規則
送出任務、一次回完的請求照「錯誤碼與重試」的表處理
查進度5xx、429、402 會等一段時間再查,等待時間逐次拉長;送出後 5 分鐘內的 404 也會再查;其他 4xx 當成最後結果,任務判失敗
任務失敗回失敗狀態並帶原因
成功但沒有成品視為異常,不會以 0 計費

圖片:POST /images/generations

POST /images/generations;帶輸入圖時是 POST /images/edits。結果要在同一個請求裡回完。

方向欄位
請求model、prompt,選填 image_urls、n、size(只有 generations)、quality、background、negative_prompt、seed、watermark、response_format
回應data[].b64_json(必要)、data[].revised_prompt、usage、created、id
  • 我們一律要 base64。模型支援多種格式時會送 response_format: "b64_json";只回網址的回應會被判成異常。
  • 浮水印預設關閉:模型有這個參數時,我們每次都會明確送 watermark,預設 false。
  • data 是空陣列視為異常,不會以 0 張計費。

影片介面:POST /videos/generations

送出任務用 POST /videos/generations,查進度用 GET /videos/{id},拿成品用 GET /videos/{id}/content(Accept: video/mp4,回影片檔)。

POST {base}/videos/generations
{ "model": "your-video-model", "prompt": "…", "seconds": 5,
  "resolution": "720p", "aspect_ratio": "16:9", "async": true }
→ { "id": "task_123" }

GET {base}/videos/task_123
→ { "status": "processing", "progress": 40 }
→ { "status": "completed", "usage": { … } }
→ { "status": "failed", "error": { "message": "…", "code": "…" } }

GET {base}/videos/task_123/content
→ video/mp4 bytes
階段欄位
送出model、prompt、async: true(固定),選填 negative_prompt、seconds、seed、size、resolution、aspect_ratio、generate_audio、output_format、image_url、frame_images、input_references
送出後的回應id。也接受當下就做完:data[0].url
查進度的回應status:completed、failed,其他值都當處理中;選填 progress(0–100)、usage;失敗時 error.message、error.code

影片介面:POST /videos

送出任務用 POST /videos,查進度與拿成品和 POST /videos/generations 相同。任務資料沒有 usage 時,依請求參數計算。

POST {base}/videos
{ "model": "your-video-model", "prompt": "…",
  "seconds": 5, "size": "1280x720" }
→ { "id": "task_123" }

GET {base}/videos/task_123
→ { "status": "in_progress", "progress": 40 }
→ { "status": "completed" }
階段欄位
送出model、prompt、seconds、size,選填 first_frame_image、last_frame_image(data URL)
送出後的回應id
查進度的回應status:queued、in_progress、completed、failed;選填 progress;失敗時 error.message、error.code

通用任務介面:POST /requests

所有模型共用一組端點:POST /requests 送出任務,GET /requests/{id} 查進度。每個模型自己要用的參數放在 payload 欄位裡。這組端點可以和對話用不同網域。

POST {queue_base}/requests
{ "model": "your-model", "payload": { "prompt": "…" } }
→ { "request_id": "req_123", "status": "queued" }

GET {queue_base}/requests/req_123
→ { "status": "processing" }
→ { "status": "success",
    "outcome": { "media_urls": [{ "url": "https://…" }] } }
→ { "status": "failed", "error": { "message": "…", "code": "…" } }
項目規則
送出後的回應request_id(必要)。當下就做完時可以同時帶 status: "success" 與 outcome
查進度的狀態success;失敗是 failed、cancelled;其他值都當處理中
成品outcome.media_urls[].url。單一成品也接受 outcome.video_url、image_url、audio_url
失敗原因依序讀 error、outcome.error、error_message、message,可以是字串或 {message, code}
錯誤內容{"error": "<字串>"} 也接受

payload 欄位要放什麼

方法payload 裡的欄位成品
影片prompt、duration,依模型另有 resolution、ratio、seed、first_frame、last_frame、reference_images、reference_videos、reference_audios、generate_audio、watermark影片網址
圖片依模型:prompt、size 或 aspect_ratio 或 width/height、negative_prompt、seed、watermark、輸入圖圖片網址
文字轉語音text,選填 voice_id、speed、format音檔網址
聲音複製source_audio、text、voice_id,選填 prompt_audio、prompt_text音檔網址
音訊編輯prompt_audio、prompt_text、edit_method,選填 generated_text、seed音檔網址
音樂lyrics、format,選填 prompt、lyrics_optimizer音檔網址
圖片編輯工具輸入圖與工具參數,欄位依工具而定圖片網址
圖片放大image(data URL)、desired_increase(整數 2 或 4)圖片網址
影片放大video(網址)、desired_increase(字串 "2" 或 "4"),選填 preserve_audio影片網址
對嘴:找臉video_urloutcome.data 帶 session_id 與 face_data[](face_id、face_image、start_time、end_time)
對嘴:合成session_id、face_choose[](含 face_id、sound_file)影片網址
3Dprompt 或 image_url,選填 enable_pbr、face_count、generate_type一個或多個檔案網址,檔案格式由我們判讀

輸入與成品檔案

  • 輸入檔:我們給有時效的下載網址。直接放在請求裡的檔案 1 小時、已上傳素材 6 小時、音訊 15 分鐘內有效,請在這段時間內抓取。
  • 成品網址:我們一完成就下載到自己的儲存,你不必長期保留,但網址至少要撐到下載完成。
  • 成品網址必須是公開的 http(s) 位址,不能重新導向(3xx 視為失敗),也不能解析到私有位址。
  • 單檔上限:影片 512 MB、圖片 64 MB、語音 20 MB、音樂 100 MB、3D 每檔 200 MB。

素材(選配)

有些模型要先把素材收進上游才能引用。這組端點可以有自己的 base URL 與金鑰。

方法請求回應
POST /assetsurl、assetType(image、video、audio),選填 name。我們給下載網址,不直接傳檔案內容202,{"isSuccess": true, "data": {"assetId": "…", "status": "processing"}}
GET /assets/{id}無data.status:processing、active、failed;選填短效 url
DELETE /assets/{id}無204 或成功回應

失敗時回 {"isSuccess": false, "error": {"code": "…", "message": "…"}}。我們不會呼叫清單端點。

累計用量與價目(選配)

GET /dashboard/billing/usage 回 {"total_usage": <數字>},是我們人工對帳時用的累計數字,不是必要端點。平台目前不會自動讀取上游的價目表,價格由雙方確認後人工登錄。

請求分配

請求由平台分配給上游,不保證流量。

失敗處理與自動暫停

服務連續失敗時,平台會暫停一小段時間,不把新請求送給這個模型,這就是「自動暫停」(業界常稱熔斷)。你的每個模型分開計算,只影響新請求,不影響已送出的任務。下列是目前的設定值。

項目現值
觸發連續 5 次失敗,算哪些失敗見下方
暫停時間60 秒
恢復60 秒後先放 1 個請求試試。成功就恢復,失敗再暫停 60 秒
歸零任何一次成功都會清掉失敗次數
失敗次數保留10 分鐘沒有新紀錄就清掉
  • 算失敗的只有:連線失敗、逾時、5xx、429。其他 4xx、內容審核、401、403、402 都不算。
  • 串流送出第一塊就算成功,之後中斷不算連續失敗。
  • 暫停期間,這個模型暫時不接新請求。
  • 查進度失敗不算連續失敗。5xx、429、402 會等一段時間繼續查,其他 4xx 當成最後結果,任務判失敗。
  • 公開評比頁的失敗率是近 7 天「上游失敗 ÷(成功+上游失敗)」。429 算上游失敗。

機器變動與請求量上限

如果你的容量會變動,例如閒置機器時多時少,請把請求量的限制做在你這一側。平台目前不會替對話請求控制送往上游的速度或同時請求數(併發),你回的 429 就是唯一的訊號。

  • 超過容量時立刻回 429,不要把請求掛著排隊。掛著會占住連線,最後變成逾時,比 429 更糟。
  • 請按模型限制,因為自動暫停也是按模型計算。
  • 我們不讀 Retry-After,你可以帶,但目前沒有效果。
  • 連續 429 會觸發自動暫停,並計入公開的失敗率。容量長期下降時,請通知我們調整或暫停把請求送給你。
  • 規格裡請寫明每個模型最多同時處理幾個請求(併發上限)與每分鐘請求上限。這些數字是驗收與請求分配設定的依據,不是流量保證。

影片若是一件一件排隊處理,平台可以設「全平台同時處理中的件數上限」。達到上限時,新任務不會送到你這裡。

改價或下架預告

價格是我們人工登錄的,不會自動跟著你的價目變動。所以調整之前請先通知。

  • 改價:請告訴我們模型、新舊價格與生效時間。
  • 下架:請告訴我們模型與停止服務的時間,以及有沒有替代模型。
  • 計畫性停機或容量大幅下降:請提前告訴我們,讓我們先暫停把請求送給你。
  • 欄位或錯誤格式變更:也請提前通知,它會直接影響計費。
  • 請在規格裡寫明你們平常用什麼方式、提前多久預告。

金鑰與帳務結構

  • 平台以一個 AppleToken 帳號和金鑰呼叫你的 API。
  • 用量統一計在這個帳號下,由你按月開立帳單給我們。
  • 詢問與交付文件階段不需要任何金鑰。
  • 進入測試後請開好這個帳號,同一帳號下測試與正式各開一把金鑰。
  • 權限只開本文件列出的端點,不要給主帳號或能管理帳號的金鑰。
  • 金鑰由我們加密保存,只用來呼叫你的 API。
  • 交付管道另外約定,不要用一般 email 明文寄送。
  • 你可以隨時撤銷這把金鑰;撤銷後呼叫會失敗,請通知我們更換。

驗收規則

下面每一項都是平台實際的行為。請先自己跑完。我們在測試環境用同一份清單實測。

所有上游

檢查項通過條件
Base URL公開 https://,解析到公開 IP,含版本路徑,結尾沒有斜線
認證Authorization: Bearer <API key> 可以通過,不需要其他認證
GET /models用同一把金鑰回 2xx,連線 5 秒、回應 8 秒內完成
模型清單內容data 是陣列,每一項有非空字串 id
錯誤內容錯誤回 JSON,含 error.message 或 message;POST /requests 也接受 {"error": "…"}
金鑰錯誤回 401 或 403
超過容量立刻回 429,不排隊掛著
請求本身有問題回 4xx,不回 5xx;內容審核拒絕同樣回 4xx
錯誤文字不含內部主機、帳號或其他敏感資訊

對話

檢查項通過條件
POST /chat/completions非串流回 2xx,含 choices[]
回應 id回應內容有 id,或標頭有 x-request-id、request-id
usage 輸入prompt_tokens 或 input_tokens 是正數
usage 輸出completion_tokens 或 output_tokens 是正數,且包含模型思考用掉的量
x-req-id建議項:所有回應(含錯誤)都帶

串流

檢查項通過條件
請求接受 stream: true 與 stream_options
分隔事件用 \n\n 分隔,不是 \r\n\r\n
內容每個事件一行 data: <JSON>,整行是完整 JSON
結尾最後送 data: [DONE]
usage[DONE] 之前的最後一塊帶 usage,數字規則同對話
錯誤第一塊之前用 HTTP 狀態碼回報,不用 error 事件

長任務

檢查項通過條件
送出後的回應回任務編號:POST /videos/generations 與 POST /videos 用 id,POST /requests 用 request_id
送出後立刻查進度任務查得到;5 分鐘後仍回 404 就判失敗
狀態值成功與失敗用該介面列出的值
失敗原因失敗時帶原因,讀取位置見各介面
完成時間2 小時內完成或失敗

圖片與成品檔案

檢查項通過條件
一次回完的圖片data[].b64_json 有值,data 不是空陣列
輸入檔能在下載網址有效期內抓到(1 小時、6 小時或 15 分鐘)
成品網址公開 http(s),不重新導向(3xx 算失敗),不解析到私有位址
成品保存網址撐到我們下載完成
檔案大小不超過「輸入與成品檔案」列的單檔上限

全部通過,而且雙方確認模型與價格,才會上架。只有部分能力通過時,沒通過的能力不上架。

測試上架流程

  1. 1聯絡並交付資料依招商頁的八件事準備,檔案或文件網址都可以。
  2. 2對照規則自我檢查逐項跑完「驗收規則」。做法不符合規格的能力目前不支援,不列入這次上架。
  3. 3開帳號與測試金鑰開好 AppleToken 專用帳號與測試金鑰。金鑰存入時會打一次 GET /models,2xx 才算通過。
  4. 4登記並依驗收規則實測你的服務在平台上預設是關閉的,只在測試環境打開。我們依驗收規則逐項實測。
  5. 5確認模型與價格驗收全部通過後,雙方確認模型清單、單價、請求量上限與預告方式。
  6. 6上架上架後名稱與評比數據公開。

這份文件描述現況,不是合約,也不是服務水準承諾。實際條件以雙方確認的內容為準。

想接上 AppleToken?

自我檢查通過後,把資料寄給我們。文件階段不需要提供任何金鑰。

[email protected]