所有 API 請求均爲發送至 REST 樣式 URL 的標準 HTTP 請求。 回應或者為 JSON,或者為圖像(正在擷取結果時)。
API 使用標準的 HTTP 基本存取驗證。 所有 API 請求均需要包含您的 API 憑證(使用者為 API ID,密碼為 API 機密)。 請注意,爲了不向您的使用者顯示您的 API 機密,ClippingMagic.js
僅使用您的 API ID。
所有請求必須使用 HTTP,並且您必須驗證所有請求。
您的 HTTP 用戶端程式庫必須支援伺服器名稱指示(SNI),方可成功提交要求。 若您收到奇怪的交握錯誤,很可能是這個原因。
請注意,所有上傳和下載操作均在後端發生,但所有審閲和編輯操作在智慧編輯器中發生。
此分割可保護您的 API 金鑰,同時實現您網站上的無縫終端使用者體驗。
API 使用速率限制寬鬆,無超出 API 點數的固定上限。
在標準終端使用者驅動型操作過程中,由於使用量呈服務可輕鬆應對的起伏傾向,您不太可能會遇到任何速率限制。
但我們建議您在批次工作時,最多以 5 個執行緒開始,每 5 分鐘增加 1 個新的執行緒,直至達到您想要的平行處理原則。 若您需要的並行執行緒超過 100 個,請在開始前與我們連絡。
若您提交的請求過多,會收到429 Too Many Requests
的回應。 這種情況下,您應當應用線性停止:第一次收到此回應時,等待 5 秒鐘,再提交下一個請求。 連續第二次收到 429 回應時,等待 2*5=10 秒鐘,再提交下一個請求。 第三次等待 3*5=15 秒鐘,依此類推。
您可以在一個成功請求后重設停止計數器,並且應當應用以每個執行緒為基礎的停止(亦即各執行緒應當相互獨立運作)。
我們使用常設 HTTP 狀態標示 API 請求成功與否,並在傳回的錯誤 JSON 物件中包含重要的錯誤資訊。
我們力圖為所有有問題的請求均返回錯誤 JSON 物件。 但理論上總是有可能出現内部伺服器失敗,從而導致非 JSON 錯誤回應。
屬性 |
|
---|---|
status | 在此處重複回應的 HTTP 狀態,以協助偵錯。 |
code | Clipping Magic internal error code. |
message | 人類看得懂的錯誤訊息,適合協助偵錯。 |
若您的請求的 HTTP 狀態為 200,則不會傳回錯誤 JSON 物件,並且您可安全無虞地假設此請求在廣義上已成功。
一些 HTTP 用戶端程式庫會為 400
599
範圍内的 HTTP 狀態引發例外。 您需要捕捉此類例外,並適當地處理。
HTTP Status | 含義 |
---|---|
200 -299
|
成功 |
400 -499
|
請求中提供的資訊有問題(例如缺失一個參數)。 請檢閲錯誤訊息,以瞭解如何修正此問題。 |
500 -599
|
There's been a Clipping Magic internal error. 請稍後再重試,若問題持續,請向我們發送電郵。 |
最近的 API 錯誤會列在您的帳戶頁面上,以便進行調試。
錯誤回應範例
{ "error" : { "status" : 400, "code" : 1006, "message" : "Failed to read the supplied image. " } }
圖像記錄以有 JSON 物件的統一方式代表,由數個 API 動作傳回。
屬性 |
|
---|---|
id |
圖像的唯一識別碼 用於讓使用者編輯圖像並下載結果。 |
secret |
用 |
resultRevision |
整數表示有可供下載的最新修訂(0 = 尚無結果)。 可讓您決定此圖像是否有比您已下載的結果更新的結果。 |
originalFilename |
包含上傳原始圖像時提供的檔案名的字串。 |
test |
|
範例
{ "id" : 2346, "secret" : "image_secret1", "resultRevision" : 0, "originalFilename" : "example_image1.jpg", "imageCategoryUser" : "Photo", "imageCategoryAi" : "Photo", "test" : false }
POST https://clippingmagic.com/api/v1/images
若想上傳圖像,請使用標準 HTTP POST 文件上傳。 此端點必須從您的後端呼叫,無法從您的網頁 JavaScript 呼叫。 請記住,上傳二進位檔案時内容-類型必須爲multipart/form-data
。
參數 |
|||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
輸入圖像必須以下列格式之一提供:
必須爲 .bmp、.gif、.jpeg、.png 或 .tiff 檔案。
上傳圖像大小的上限(=寬×高)為 33,554,432像素,會縮小為 4,194,404像素,除非由下方的 |
|||||||||||||||
test
布林值 true 、false
|
傳入
為生產圖像省略或傳入 測試圖像可免費處理,但結果會内嵌浮水印。 |
||||||||||||||
format
列舉 json 、result 、clipping_path_svg 、clipping_path_tiff 、alpha_mask_png
|
擷取非 JSON 結果時, 擷取圖像 JSON 物件不會向您的帳戶收取費用;僅當下載正式結果時才會向您收費。 |
||||||||||||||
maxPixels
整數 1000000 至 26214400
|
上傳后調整圖像大小時變更使用的圖像大小上限(=寬×高)。 預設:4,194,404像素 |
||||||||||||||
background.color
#RRGGBB #0055FF
|
省略以使用一個透明背景或者取得一個 PNG 結果。 包含以取得一個指定色彩的不透明背景和一個 output.opaqueFileFormat 結果(預設為 JPEG)。 請務必包含 '#'。 |
||||||||||||||
預設處理參數:
|
|||||||||||||||
預設色彩等級:
|
|||||||||||||||
預設從背景投射到前景上的色彩移除,例如使用綠屏:
|
|||||||||||||||
預設白平衡:
|
|||||||||||||||
預設最後修飾: |
|||||||||||||||
預設邊緣參數:
|
|||||||||||||||
|
|||||||||||||||
控制結果大小和外觀比例:
|
|||||||||||||||
控制輸出選項:
|
您無需訂閲,即可在測試模式中上傳圖像。 但儘管上傳無需點數,您仍然需要有效的 API 訂閲,方可透過 API 上傳正式圖像。
歡迎嘗試
使用者名稱 = API ID,密碼 = API 秘密
cURL
$ curl "https://clippingmagic.com/api/v1/images" \ -u 123:[secret] \ -F 'image=@example.jpg' \ -F 'test=true'
假設「example.jpg」已存在。適當取代。 「test=true」為可選行。
範例回應
{ "image" : { "id" : 2346, "secret" : "image_secret1", "resultRevision" : 0, "originalFilename" : "example_image1.jpg", "imageCategoryUser" : "Photo", "imageCategoryAi" : "Photo", "test" : false } }
GET https://clippingmagic.com/api/v1/images/[imageId]
如欲下載結果,請執行標準 HTTP GET。 必須先產生一個結果。
測試結果可免費下載,但會加入浮水印。 正式結果首次下載需要一個點數;重複下載為免費。
若無可用的結果,您則會收到錯誤回應。
參數 |
|
---|---|
imageId |
嵌入 URL
您需要插入此上傳呼叫傳回的 |
可選
format |
擷取圖像 JSON 物件不會向您的帳戶收取費用;僅當下載正式結果時才會向您收費。 |
回應標頭
當 |
|
---|---|
x-amz-meta-id
Example: 2346
|
您的圖像的 |
x-amz-meta-secret
Example: image_secret1
|
您的圖像的 |
x-amz-meta-resultrevision
Example: 1
|
您透過此要求正在擷取的 每次產生新結果時,此計數器均會遞增。 |
x-amz-meta-width
Example: 3200
(僅為 format=result 包含)
|
您透過此要求正在擷取的結果寬度(以像素爲單位)。 |
x-amz-meta-height
Example: 2400
(僅為 format=result 包含)
|
您透過此要求正在擷取的結果高度(以像素爲單位)。 |
Content-Disposition
Example: attachment; filename*=UTF-8''example_image1_clipped_rev_0.png
|
包含副檔名的結果檔案名。 |
歡迎嘗試
使用者名稱 = API ID,密碼 = API 秘密
cURL
$ curl "https://clippingmagic.com/api/v1/images/2346" \ -u 123:[secret] \ -LOJ
範例 JSON 回應
{ "image" : { "id" : 2346, "secret" : "image_secret1", "resultRevision" : 0, "originalFilename" : "example_image1.jpg", "imageCategoryUser" : "Photo", "imageCategoryAi" : "Photo", "test" : false } }
GET https://clippingmagic.com/api/v1/images
如欲擷取您的圖像 JSON 物件清單,請執行標準 HTTP GET。
參數 |
|
---|---|
可選
limit |
擷取的記錄數。預設為 20(下限為 1,上限為 100)。 |
可選
offset |
在記錄清單中使用的位移(預設為 0)。 |
回應屬性 |
|
---|---|
images |
圖像 JSON 物件陣列。 |
limit |
產生結果時實際使用的 |
offset |
產生結果時實際使用的 |
歡迎嘗試
使用者名稱 = API ID,密碼 = API 秘密
cURL
$ curl "https://clippingmagic.com/api/v1/images?limit=2&offset=0" \ -u 123:[secret]
範例回應
{ "images" : [ { "id" : 2346, "secret" : "image_secret1", "resultRevision" : 0, "originalFilename" : "example_image1.jpg", "imageCategoryUser" : "Photo", "imageCategoryAi" : "Photo", "test" : false }, { "id" : 2347, "secret" : "image_secret2", "resultRevision" : 0, "originalFilename" : "example_image2.jpg", "imageCategoryUser" : "Photo", "imageCategoryAi" : "Photo", "test" : false } ], "limit" : 2, "offset" : 0 }
POST https://clippingmagic.com/api/v1/images/[imageId]/delete
如欲刪除圖像,您需要對圖像刪除 URL 執行標準 HTTP POST。
這稍微偏離標準 REST 作法,用於處理許多 HTTP 用戶端程式庫不支援 HTTP DELETE 動詞命令的現實,同時避免用多個方法做同一件事的問題。
參數 |
|
---|---|
imageId |
嵌入 URL
您需要插入此上傳呼叫傳回的 |
回應屬性 |
|
---|---|
image |
刪除的圖像 JSON 物件。 |
歡迎嘗試
使用者名稱 = API ID,密碼 = API 秘密
cURL
$ curl "https://clippingmagic.com/api/v1/images/2346/delete" \ -u 123:[secret] \ -X POST
範例回應
{ "image" : { "id" : 2346, "secret" : "image_secret1", "resultRevision" : 0, "originalFilename" : "example_image1.jpg", "imageCategoryUser" : "Photo", "imageCategoryAi" : "Photo", "test" : false } }
GET https://clippingmagic.com/api/v1/account
擷取有關您帳戶的基本資訊,如您的訂閲狀態和剩餘點數。
參數 |
|
---|---|
無 |
回應屬性 |
|
---|---|
subscriptionPlan |
您目前的訂閲計劃,或「無」。 |
subscriptionState |
您目前的訂閲狀態(「生效中」或「逾期」),或者在無訂閲的情況下為「已結束」。 |
credits |
帳戶中剩餘的 API 積分數量。 如果目前尚未訂閱或訂閱非 API 計劃,則為 0。 |
使用者名稱 = API ID,密碼 = API 秘密
cURL
$ curl "https://clippingmagic.com/api/v1/account" \ -u 123:[secret]
範例回應
{ "subscriptionPlan" : "none", "subscriptionState" : "ended", "credits" : 0 }