API
從您自己的網站、商店或程式訂購服務:列出服務與價格、連同任務下訂單、追蹤訂單並取得成果。這與網站上提供的是同一項服務,因此透過 API 下的訂單也會顯示在您的帳戶中。
快速入門
- 登入並開啟餘額與 API 金鑰。
- 建立金鑰。金鑰只會顯示一次:請複製並像密碼一樣妥善保密。您可以隨時撤銷金鑰。
- 為餘額儲值。透過 API 下的訂單以餘額支付,幣別為美元。
每個請求都要附上金鑰:
Authorization: Bearer dlx_your_key
API 位址:https://dleex.com/api/v1。請求與回應均為 JSON。價格與金額皆為整數的美分:1500 代表 $15.00。
服務
GET /services 列出可訂購的服務。
curl https://dleex.com/api/v1/services -H "Authorization: Bearer dlx_your_key"
[
{
"service": "seo-article",
"category": "seo",
"title": { "en": "SEO article", "ru": "SEO-статья" },
"linkRequired": false,
"files": null,
"script": null,
"briefQuestions": [
{ "q": { "en": "What is the article about?", "ru": "О чём статья?" }, "hint": { "en": "The topic, or a link to the page.", "ru": "..." } },
{ "q": { "en": "Who will read it?", "ru": "..." } }
],
"packages": [
{ "tier": "basic", "title": { "en": "...", "ru": "..." }, "priceUsdCents": 1500, "days": 2, "revisions": 1 },
{ "tier": "standard", "...": "..." },
{ "tier": "premium", "...": "..." }
],
"addons": [
{
"id": 7,
"title": { "en": "Express delivery", "ru": "Срочное выполнение" },
"description": null,
"priceUsdCents": 1000,
"extraDays": -1,
"tiers": ["standard", "premium"]
}
]
}
]
days 是工作所需的天數;revisions 是您可以提出修改請求的次數。addons 是可與 tiers 中的方案一起訂購的加購服務:其價格會加到方案價格上,extraDays 則加到方案的交付期限上(負數代表更快,但絕不少於 1 天)。briefQuestions 是服務針對任務提出的問題,部分附有 hint;下訂單時請在 answers 中回答。若服務沒有任何問題,此清單為空。對於依據連結所開啟的內容來完成的服務(例如個人檔案或貼文,或需要上字幕的錄音),linkRequired 為 true:訂購這類服務時需要提供 link。
不接受隨需求說明附加檔案的服務,其 files 為 null。否則會說明接受哪些檔案,例如 {"accept": ["image"], "maxFiles": 3, "maxMb": 5, "required": true, "insteadOfLink": false}:檔案類型(image、audio、video、document:PDF、DOCX、XLSX)、每份需求說明或修改請求可附的檔案數、每個檔案的大小上限(MB)、需求說明是否至少需要一個檔案,以及檔案能否取代 link(此時對於未附檔案送出的訂單,linkRequired 仍為 true)。請參閱檔案。
不朗讀文字的服務,其 script 為 null。配音服務會列出各方案可朗讀的最長文字(以字元計),例如 {"maxChars": {"basic": 1000, "standard": 3000, "premium": 9000}}:其訂單需要提供 script,即要逐字朗讀的文字。錄音以合成語音朗讀:無論在何處發布,都請告知聽眾該語音為合成語音(請參閱服務條款)。
餘額
GET /balance
{ "balanceUsdCents": 10000, "currency": "USD" }
下訂單
POST /orders。價格(方案與加購服務,扣除任何折扣)會從餘額中扣除,工作隨即開始。
| 欄位 | ||
|---|---|---|
service | 必填 | /services 中的服務 |
tier | 必填 | basic、standard 或 premium |
text | 未提供 answers、script 或 awaitBrief 時必填 | 任務:要做什麼,最多 10,000 個字元。搭配 script 時:如何朗讀(語氣、速度、名稱的唸法) |
link | 選填 | 頁面、個人檔案或貼文的連結,或錄音的連結:檔案的直接連結,或 Dropbox 或 Yandex Disk 連結。linkRequired 為 true 時必填 |
answers | 選填 | 對服務 briefQuestions 的回答:[{"q": "question", "a": "answer"}],最多 8 則,每則回答最多 5,000 個字元 |
script | /services 中的 script 不為 null 時必填,其他情況會被拒絕 | 要逐字朗讀的文字,上限為方案的 maxChars(最多 20,000 個字元,換行算一個字元)。段落之間請空一行 |
locale | 選填 | 成果的語言,en 或 ru。預設為您帳戶的語言 |
addons | 選填 | /services 中此方案提供的加購服務 id,例如 [7] |
promoCode | 選填 | 優惠碼;若不適用,訂單不會成立(請參閱錯誤) |
awaitBrief | 選填 | 設為 true 可在上傳檔案後再送出需求說明:訂單已付款並以 awaiting_brief 狀態等待。此時請省略 text、link、answers 和 script。請參閱檔案 |
curl https://dleex.com/api/v1/orders -H "Authorization: Bearer dlx_your_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: <your-order-id>" \
-d '{"service":"seo-article","tier":"basic","text":"An article about trail running shoes, 5 keywords: ..."}'
Idempotency-Key 為選填,可讓您安全地重送請求;每筆新訂單都需要新的金鑰。請參閱下方的冪等性。
請提供 text 或至少一則回答,或兩者皆提供;配音服務只需提供 script 即可。在 q 中填寫每個問題時,請依 briefQuestions 中的原文、以訂單的語言填寫,沒有答案的問題可省略:
{
"service": "seo-article",
"tier": "basic",
"answers": [
{ "q": "What is the article about?", "a": "Choosing trail running shoes" },
{ "q": "Who will read it?", "a": "Runners moving from road to trail" }
]
}
回應即為訂單(狀態 201):
{
"id": 1042,
"status": "in_progress",
"service": "seo-article",
"tier": "basic",
"priceUsdCents": 1500,
"addons": [],
"discountUsdCents": 0,
"promoCode": null,
"locale": "en",
"text": "An article about trail running shoes...",
"link": null,
"answers": [],
"script": null,
"fileIds": [],
"files": [],
"revisionsLeft": 1,
"createdAt": "2026-10-16T11:00:00.000Z",
"dueAt": "2026-10-18T11:00:00.000Z",
"deliveredAt": null,
"autoAcceptAt": null,
"completedAt": null,
"results": []
}
檔案
部分服務需要客戶的檔案才能進行,例如要打字輸入的頁面圖片或要上字幕的錄音:這些服務在 /services 中的 files 不為 null。檔案要上傳到正在等待需求說明的訂單:
- 以
"awaitBrief": true下訂單,且不帶text、link、answers和script。訂單會立即付款,狀態為awaiting_brief;交付期限自需求說明送出時起算。 - 針對每個檔案,以
{"name": "page-1.png", "size": 482113, "mime": "image/png"}呼叫POST /orders/{id}/files:size為以位元組計的確切大小,mime為選填。回應(201)為該檔案及其上傳位置:
{
"file": { "id": 77, "name": "page-1.png", "mime": "application/octet-stream", "size": 482113, "status": "pending", "used": false, "uploadExpiresAt": "2026-10-16T12:00:00.000Z", "createdAt": "2026-10-16T11:00:00.000Z" },
"upload": { "url": "https://...", "headers": { "content-type": "application/octet-stream" }, "expiresAt": "2026-10-16T12:00:00.000Z" }
}
- 在
upload.expiresAt(一小時)之前,將檔案的位元組以PUT傳送到upload.url,並完全使用所提供的headers,不附 API 金鑰:
curl -X PUT "$url" -H "content-type: application/octet-stream" --data-binary @page-1.png
- 呼叫
POST /orders/{id}/files/{fileId}/complete。大小與size不符,或位元組不屬於accept中類型的檔案,會以422拒絕並刪除:檔名與mime不列入判斷。否則回應為該檔案,狀態變為checking。幾秒後(較長的錄音則需幾分鐘),狀態會變為ready,或變為rejected並在reason中說明原因,例如recording_no_sound或file_unreadable。訂單的files會顯示各檔案的狀態。 - 以
text、link、answers和script呼叫POST /orders/{id}/brief,用法與POST /orders相同。尚未送出的就緒檔案會一併送出,您也可以在fileIds中列出要送出的檔案。若其中仍有檔案為checking,需求說明會以409 files_not_ready被拒絕:請稍後再送一次。回應(200)為訂單,狀態變為in_progress。
DELETE /orders/{id}/files/{fileId} 可撤回尚未送出的檔案。每筆訂單最多可接受 5 個檔案、總計 4 GB;已開始上傳的檔案在完成或撤回前都會列入計算,而自開始上傳起一天內,撤回或被拒絕的檔案會與訂單的檔案合併計入 12 GB 的上限:超過此上限時,上傳會以 409 upload_quota 被拒絕,並附上 retryAt,即恢復接受上傳的時間。已交付的訂單也接受修改請求所需的檔案:以相同方式上傳,再隨請求送出 fileIds。
未使用 awaitBrief 時,若服務的檔案為 required,訂單會以 400 files_required 被拒絕;若服務允許以檔案取代連結,而訂單未附連結送出,則會以 400 link_required 被拒絕。
在訂單中,files 會列出您的檔案及其 status,fileIds 則列出隨需求說明送出的檔案。就緒的檔案有一個 url,可使用至 expiresAt 為止,與成果檔案相同。檔案會在訂單結案後保留 30 天。
冪等性
請求可能在訂單已成立後才逾時。若要重送 POST /orders 而不重複付款,請隨請求傳送 Idempotency-Key 標頭:這是一個由 1 到 255 個可列印 ASCII 字元組成的字串,每筆訂單由您選定一次,例如 UUID 或您自己的訂單編號。重送請求時,請傳送相同的金鑰與相同的內容。
curl -i https://dleex.com/api/v1/orders -H "Authorization: Bearer dlx_your_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: shop-order-981" \
-d '{"service":"seo-article","tier":"basic","text":"An article about trail running shoes, 5 keywords: ..."}'
若已有訂單以此金鑰成立,回應即為該訂單的目前狀態,狀態碼為 201,並多一個標頭。不會再次扣款:
HTTP/1.1 201 Created
Idempotent-Replayed: true
- 金鑰屬於首次隨其送出的請求。以相同金鑰搭配不同內容(例如其他加購服務或其他優惠碼)的請求,會以
422 idempotency_key_reused被拒絕,且不會扣款。 - 若同時收到多個使用同一金鑰的請求,只會成立一筆訂單,其他請求會以該訂單回應。等待過久的請求會回應
409 idempotency_key_in_progress且不會扣款:請稍後再重送。 - 失敗的請求(例如回應
400、402、404,或加購服務或優惠碼錯誤)不會用掉其金鑰:修正後可用相同金鑰再次送出。 - 金鑰會保留 24 小時。之後使用相同金鑰會成立新訂單。
- 各帳戶的金鑰互相獨立。不帶此標頭時,每個請求都會成立一筆新訂單。
驗收、需求說明與修改請求不使用金鑰。驗收可安全地重複:訂單完成後,重複的請求會回應 409 order_not_delivered。需求說明也是如此:送出成功後,重複的請求會回應 409 brief_not_expected,訂單狀態為 in_progress。修改請求則不同:在工作重做期間,重複的請求會回應 409 order_not_delivered,但重做的成果交付後,重複的請求會再提出一次修改。重送修改請求前,請先以 GET /orders/{id} (status 和 revisionsLeft) 檢查訂單。
追蹤訂單
GET /orders/{id} 傳回單筆訂單,GET /orders 傳回您的訂單,最新的排在最前面。清單接受 status、limit(1 到 100,預設 20)和 before(訂單 id,用於取得較舊的訂單)。
訂單狀態:
| 狀態 | 說明 |
|---|---|
awaiting_brief | 以 awaitBrief 下單:等待 POST /orders/{id}/brief |
in_progress | 工作進行中 |
quality_check | 工作已完成,交付前正在檢查 |
delivered | 成果已就緒,請見 results。請在 autoAcceptAt 之前驗收或提出修改請求 |
revision | 正在依您的要求進行修改 |
completed | 您已驗收成果,或成果已自動驗收 |
refunded | 款項已退回您的餘額 |
每隔幾分鐘檢查一次即可,不需要更頻繁地查詢。訂單為 delivered 時,results 中包含工作成果:kind 為 text(Markdown)、report(社群媒體訂單的交付報告)或 files(供下載的檔案,body 中可附說明)。每項成果都有一個 files 清單,文字與報告的清單為空:每個檔案都有 name、mime、以位元組計的 size,以及可使用至 expiresAt(約一小時)的 url。重新讀取訂單即可取得新的連結。連結可能會重新導向至檔案儲存空間,因此請跟隨重新導向,例如 curl -L -o result.png "$url",且不要附上 API 金鑰:僅憑連結即可開啟檔案。
驗收與修改
POST /orders/{id}/accept驗收成果並完成訂單。POST /orders/{id}/revision搭配{"text": "what to change"}可在revisionsLeft大於零時提出修改請求。若服務接受檔案,fileIds列出為此請求上傳的檔案;若未提供,尚未送出的就緒檔案會一併送出。
若您對已交付的訂單既不驗收也不提出修改,訂單會在交付後 3 天、於 autoAcceptAt 所示時間自動驗收(其他狀態下為 null)。修改後的新交付會重新起算 3 天。您也可以在網站上驗收工作。若您在交付後於網站上的訂單聊天室留言,訂單將不會自動驗收,且 autoAcceptAt 會維持 null,直到您驗收,或我們重做工作或退款為止。回覆您的訊息後,我們也可能重新起算 3 天:此時 autoAcceptAt 會顯示新的時間。
錯誤
錯誤會附上 HTTP 狀態碼與錯誤代碼:
{ "code": "insufficient_balance" }
| 狀態 | 代碼 | 說明 |
|---|---|---|
| 400 | validation | 欄位缺漏或有誤;fields 會列出這些欄位 |
| 400 | link_required | 此服務需要 link |
| 400 | files_required | 此服務需要檔案:請以 awaitBrief 下訂單並上傳檔案 |
| 400 | script_required | 此服務會朗讀文字:請在 script 中傳送 |
| 400 | script_too_long | script 超過方案可朗讀的長度;回應中的 maxChars 為可接受的上限。未扣款 |
| 400 | script_not_accepted | 此服務不朗讀文字(其在 /services 中的 script 為 null):請省略 script。未扣款 |
| 400 | files_not_accepted、file_too_large | 此服務不接受檔案,或檔案超過其 maxMb |
| 400 | invalid_idempotency_key | Idempotency-Key 為空、超過 255 個字元,或不是可列印的 ASCII |
| 401 | invalid_api_key | 未提供金鑰、金鑰錯誤或金鑰已撤銷。當帳戶未確認的電子郵件透過 Google 登入或設定新密碼而獲得確認時,金鑰也會被撤銷 |
| 402 | insufficient_balance | 餘額不足;未扣款 |
| 404 | package_not_found、order_not_found、file_not_found | 找不到該服務、方案、訂單或檔案 |
| 409 | order_not_delivered、no_revisions_left | 訂單目前的狀態無法執行此操作 |
| 409 | brief_not_expected | 訂單並未在等待需求說明:下單時未使用 awaitBrief,或需求說明已送出 |
| 409 | uploads_closed | 僅在訂單等待需求說明或已交付時接受檔案 |
| 409 | files_limit | 檔案數超過服務每份需求說明或每次請求可接受的數量,或訂單超過 5 個檔案或 4 GB |
| 409 | upload_quota | 加上此檔案後,訂單的檔案(包括已送出的檔案及未完成的上傳)與過去一天內開始上傳後被撤回或拒絕的檔案合計超過 12 GB:請在 retryAt 之後再試 |
| 409 | files_not_ready、file_rejected | 要送出的檔案仍在檢查中,或已被拒絕 |
| 409 | upload_incomplete | 尚未有任何內容上傳到該連結:請完成 PUT 後再次完成上傳 |
| 409 | file_in_use、file_busy | 該檔案已隨需求說明或請求送出並保留在訂單中,或正因檢查而移動中:請稍後再試 |
| 409 | addon_unavailable | 此服務與方案不提供該加購服務 |
| 409 | promo_not_found、promo_inactive、promo_used_up、promo_already_used、promo_first_order_only、promo_min_order | 優惠碼不存在、目前未啟用、已用完、您已使用過、僅限首筆訂單,或需要更高的訂單金額。未扣款 |
| 409 | idempotency_key_in_progress | 使用此 Idempotency-Key 的請求仍在處理中;請稍後再重送 |
| 410 | upload_expired、file_removed | 上傳連結在上傳任何內容前已過期,或您已撤回該檔案:請重新開始上傳 |
| 415 | file_type_not_accepted | 提供的 mime 不屬於服務接受的類型 |
| 422 | idempotency_key_reused | 此 Idempotency-Key 已用於不同的請求 |
| 422 | upload_size_mismatch、file_type_not_accepted | 上傳的檔案大小與 size 不符,或其位元組不屬於服務接受的類型;檔案已刪除 |
| 422 | file_unreadable、recording_no_sound、check_failed、document_no_text、document_protected | 完成上傳的檔案未通過檢查:無法開啟、錄音沒有聲音,或無法檢查。請重新上傳該檔案或改傳其他檔案。文件沒有可讀取的文字,例如掃描檔(document_no_text),或受密碼保護(document_protected)。 |
| 429 | rate_limited | 單一金鑰每分鐘超過 120 個請求;請等待 Retry-After 所示的秒數 |
退款
若我們將訂單退款,款項會退回餘額,訂單狀態變為 refunded。