速率限制
速率限制是我們的 API 對使用者或用戶端在指定時間段內存取我們服務的次數所施加的限制。
為什麼會有限制
我們在 API 中設定速率限制,是為了替每個人創造最佳的使用體驗。以下是它們之所以重要的原因:
-
為了保障我們服務的安全穩定!可以把速率限制想像成友善的門衛——它們確保沒有人能夠用過多的請求壓垮我們的 API。這有助於保護我們的服務免受潛在濫用,並維持一切運作順暢。
-
為了確保每個人都能公平地共享資源。就像在遊樂場分享玩具一樣,我們希望確保所有使用者都能平等地存取 API。透過溫和地限制每位使用者可以發出的請求數量,我們確保沒有人需要等待太久才能輪到自己。
-
為了保持效能的靈敏與可靠。透過管理請求的整體流量,我們能夠為所有出色的使用者維持快速的回應時間與穩定的服務。這就像確保高速公路不會過於擁擠——當我們防止壅塞時,交通才會更加順暢!
限制的運作原理
速率限制透過兩種方式衡量:
- 每秒請求數:這是您每秒可以發出的網路請求數量。
- 佇列任務數:這是您在任意給定時刻可以在佇列中並行執行的生成任務數量。
佇列任務是指您帳戶中處於 PENDING 或 IN_PROGRESS 狀態的任務。每個會建立任務的 endpoint(例如 Text to 3D、Image to 3D、Multi-Image to 3D、Retexture、Remesh、Rigging、Animation、文字生成影像、3D 列印相關 endpoint 以及 Creative Lab)在接受新任務之前都會檢查此限制。不會建立任務的請求,例如 Balance、用量查詢,以及檢索、列出或串流取得任務,不計入此限制,但仍會計入每秒請求數。
此限制是以帳戶為單位套用的,因此會在您的所有 API 金鑰以及 Playground 之間共用。您在 Meshy 網頁應用程式中啟動的任務也會計入您的佇列任務數。
除了速率限制之外,任務處理的優先順序也會影響您任務的處理速度。
每個使用者等級都有專門設計的速率限制與優先順序層級,以符合其需求。以下是目前各等級的限制:
| 使用者等級 | 每秒請求數 | 佇列任務數 | 優先層級 |
|---|---|---|---|
| Pro | 20 | 10 | 預設 |
| Premium | 20 | 30 | 高於 Pro |
| Ultra | 20 | 100 | 最高 |
| Studio | 20 | 20 | 高於 Pro |
| Enterprise | 100 | 預設 100,可自訂 | 最高 |
如果您超出這些限制,將會收到我們 API 回傳的 429 Too Many Requests 回應。有兩種命中情況會觸發此回應,每種對應不同的回傳內容:
- 請求命中:當您每秒發出的請求過多時會發生這種情況。您會收到帶有
Rate limit exceeded訊息的429 Too Many Requests回應。 - 佇列命中:當您並行執行的生成任務過多時會發生這種情況。您會收到帶有
NoMorePendingTasks(或者當您的 credits 用盡時為NoMoreConcurrentTasks)訊息的429 Too Many Requests回應。此429不帶Retry-After:請等待其中一個任務完成後再建立新任務。
速率限制回應標頭
API 回應會攜帶以下回應標頭,以便您控制請求節奏:
| 回應標頭 | 說明 |
|---|---|
X-RateLimit-Limit | 您所在等級每秒允許的請求數。 |
X-RateLimit-Remaining | 當前這一秒內剩餘的請求數。 |
X-RateLimit-Reset | 距離您的配額恢復滿額還剩的秒數。 |
Retry-After | 在發送下一個請求之前需要等待的秒數。會隨請求命中的 429 一起發送,也會在您檢索的任務仍處於 PENDING 或 IN_PROGRESS 狀態時發送。 |
當出現 Retry-After 時,請等待相應的秒數後再發送下一個請求。