Limity zapytań
Dokładamy starań, aby zapewnić wszystkim użytkownikom niezawodne i spójne korzystanie z API na najwyższym poziomie. Aby utrzymać wysoką jakość usługi i zapewnić jej optymalną wydajność, obowiązują następujące limity, które pomagają kontrolować wykorzystanie API i przepustowość:
- Limit złożoności
- Dzienny limit wywołań
- Limit na minutę
- Limit równoległych żądań
- Limit IP
- Limity ochrony zasobów
Podczas korzystania z API pamiętaj o tych limitach, aby uniknąć przerw w działaniu przepływów pracy i opóźnień.
🚧 Wszystkie limity i wyjątki mogą ulec zmianie. W przyszłości mogą zostać wprowadzone dodatkowe wytyczne.
Limity
Limit złożoności
Złożoność określa obciążenie, jakie każde wywołanie nakłada na API. Ten limit ogranicza złożoność każdego zapytania, aby zapobiegać nadmiernemu obciążeniu i utrzymać optymalną wydajność. Limit nie wpłynie na większość użytkowników - limit jest na tyle wysoki, że dotyczy tylko osób wysyłających żądania, które mogłyby zagrozić stabilności API.
Po przekroczeniu limitu otrzymasz błąd ComplexityException.
Limit zależy od sposobu wywołania API:
| Sposób użycia | Limit |
|---|---|
| Pojedyncze zapytanie | 5 000 000 (5M) punktów złożoności |
| Dostęp do API za pomocą tokenów aplikacji | Odczyty i zapisy są ograniczone do 5M punktów złożoności na minutę* każdy |
| Dostęp do API za pomocą API Playground | Odczyty i zapisy są ograniczone do 5M punktów złożoności na minutę* każdy albo do 1M w przypadku kont próbnych i bezpłatnych |
| Dostęp do API za pomocą osobistych tokenów API | Łączny limit odczytów i zapisów wynosi 10M punktów na minutę* albo 1M w przypadku kont próbnych, organizacji pozarządowych i bezpłatnych |
*Limity na minutę są obliczane w ruchomym oknie i resetują się 60 sekund po pierwszym wywołaniu API.
Obliczanie złożoności
Oblicz złożoność każdego zapytania z wyprzedzeniem, aby uniknąć przekroczenia limitu. Najprościej zrobić to, dodając do zapytań pole complexity. Zwraca ono pozostałą złożoność przed zapytaniem i po nim, złożoność samego zapytania oraz informację, kiedy limit zostanie zresetowany.
mutation {
complexity {
query
before
after
}
create_item(board_id:1234567890, item_name:"test item") {
id
}
}
Ograniczanie złożoności
Aby uniknąć przekroczenia limitu złożoności:
- Pobieraj tylko potrzebne dane.
- Ogranicz liczbę zagnieżdżonych zapytań.
- Korzystaj z argumentów
pageilimit.
Dzienny limit wywołań
Dzienny limit wywołań pomaga zapobiegać zakłóceniom spowodowanym nadmiernym obciążeniem ze strony pojedynczych kont, utrzymać dostępność API jako bezpłatnej funkcji we wszystkich planach oraz kontrolować koszty operacyjne, aby nadal dostarczać wartość wszystkim użytkownikom.
Do limitu wliczają się wszystkie wywołania API wykonane za pomocą tokenów osobistych oraz aplikacji prywatnych i publicznych. Nie dotyczy to aplikacji z marketplace ani aplikacji opracowanych przez monday.com.
📘 Wywołania realizowane przez hostowany serwer Platform MCP również wliczają się do tego limitu, ponieważ każde wywołanie narzędzia MCP jest wykonywane jako żądanie GraphQL API.
Po przekroczeniu limitu otrzymasz błąd DAILY_LIMIT_EXCEEDED.
Limit zależy od planu monday.com:
| Poziom | Dzienny limit wywołań (resetuje się o północy UTC) |
|---|---|
| Free/Standard/Basic | 1 000 |
| Pro | 10 000 |
| Enterprise | 25 000 |
Jeśli Twoje konto regularnie przekracza ten limit, możesz poprosić o jego zwiększenie za pomocą panelu analitycznego API.
Wyjątki
Pojedyncze żądanie API zwykle zmniejsza dzienny limit o jedno wywołanie. Niektóre żądania są jednak traktowane inaczej:
| Wywołanie API | Wkład w dzienny limit | Rozwiązanie |
|---|---|---|
| Żądania, które przekraczają limit (złożoności, liczby żądań na minutę, równoległych żądań itp.) | 0,1 wywołania | Każda odpowiedź z błędem limitu zawiera pole retry_in_seconds. Ponów wywołanie dopiero po odczekaniu wskazanego czasu, aby uniknąć niepotrzebnych prób. |
Zapytania o complexity, służące do sprawdzenia kosztu złożoności zapytania |
0,1 wywołania | Samodzielne zapytania complexity są liczone jako mniej niż jedno wywołanie. Aby ograniczyć ich zużycie, zalecamy dołączanie ich do innych żądań API. |
| Zapytania o wysokiej złożoności | 1 lub więcej wywołań | Każde wywołanie API wiąże się z kosztem złożoności, a niektóre wywołania dodatkowo obciążają dzienny limit. Aby ograniczyć dzienne wykorzystanie API, możesz zmniejszyć złożoność wywołania. |
Limit na minutę
Limit na minutę ogranicza liczbę żądań w danym przedziale czasu. Jest określany dla każdej minuty, ale nie zawsze musisz czekać pełną minutę, zanim ponowisz żądanie. Skorzystaj z nagłówka Retry-After, aby sprawdzić, kiedy możesz ponowić żądanie.
Po przekroczeniu limitu otrzymasz błąd Minute limit rate exceeded.
Limit zależy od planu monday.com:
| Poziom | Zapytania na minutę |
|---|---|
| Enterprise | 5 000 |
| Pro | 2 500 |
| Pozostałe | 1 000 |
Limity na minutę dla poszczególnych endpointów
Każdy endpoint podlega powyższym limitom, ale niektóre mają również dodatkowe ograniczenia:
| Endpoint | Limit |
|---|---|
| Mutacja tworząca tablicę | 40 mutacji na minutę |
| Mutacja duplikująca tablicę | 40 mutacji na minutę |
| Mutacja duplikująca grupę | 40 mutacji na minutę |
| Mutacja łącząca projekt z portfolio | 15 mutacji na minutę |
| Zapytanie o elementy | 100 elementów |
| Zapytanie o subskrypcje aplikacji | 120 razy na minutę |
Pole w implementacji
|
Limit równoległych żądań
Limit równoległych żądań ogranicza liczbę żądań obsługiwanych w tym samym czasie. Po przekroczeniu limitu otrzymasz błąd Concurrency limit exceeded.
Limit zależy od planu monday.com i typu żądania:
| Poziom | Maksymalna liczba równoległych żądań |
|---|---|
| Enterprise | 250 |
| Pro | 100 |
| Pozostałe | 40 |
Limit IP
Limit IP pomaga kontrolować ruch API pochodzący z danego adresu IP w krótkim przedziale czasu. Po przekroczeniu limitu otrzymasz błąd IP_RATE_LIMIT_EXCEEDED.
| Źródło | Limit |
|---|---|
| Pojedynczy adres IP | 5 000 żądań na 10 sekund |
Limit ochrony zasobów
W rzadkich przypadkach wewnętrzny zasób monday.com może odrzucić żądanie. W takiej sytuacji obowiązuje ta sama logika ponawiania prób.
Nagłówki limitów żądań
Każda odpowiedź API zawiera dwa nagłówki HTTP informujące o bieżącym stanie limitów żądań. Korzystaj z nich, aby monitorować pozostały limit i zapobiegać jego przekroczeniu. Nagłówki są zgodne z formatem pól strukturalnych nagłówków RateLimit grupy IETF.
RateLimit-Policy
Określa aktywne zasady limitowania żądań na serwerze, w tym limit (q), przedział czasu (w) i jednostkę (qu). Wartość tego nagłówka jest stała dla danego poziomu konta i informuje o maksymalnych dozwolonych wartościach.
RateLimit-Policy: "minuteRate";q=100;w=60, "concurrency";q=40;qu="concurrent-requests", "complexityMinute";q=1000000;w=60;qu="content-bytes"
RateLimit
Podaje bieżący stan każdego limitu, w tym pozostały limit (r) oraz - gdy limit został przekroczony lub dostępny jest czas resetowania - liczbę sekund do jego resetowania (t).
RateLimit: "minuteRate";r=90, "concurrency";r=35, "complexityMinute";r=800000;t=45
Zgłaszane zasady
Oba nagłówki mogą jednocześnie zawierać informacje o maksymalnie trzech zasadach. Każda z nich odpowiada jednemu z opisanych wyżej limitów:
| Nazwa zasady | Limit | Parametry | Opis |
|---|---|---|---|
minuteRate |
Limit na minutę | q = limit, w = 60 (sekund) |
Informuje o limicie żądań na minutę dla Twojego poziomu konta. Parametr r wskazuje liczbę żądań pozostałych w bieżącym oknie. Parametr t pojawia się tylko po przekroczeniu limitu i wskazuje liczbę sekund do zresetowania okna. |
concurrency |
Limit równoległych żądań | q = limit, qu = "concurrent-requests" |
Informuje o limicie równoległych żądań dla Twojego poziomu konta. Parametr r wskazuje liczbę dostępnych miejsc. Parametr t pojawia się tylko po przekroczeniu limitu i wskazuje sugerowany czas oczekiwania w sekundach przed ponowieniem żądania. |
complexityMinute |
Limit złożoności | q = limit, w = czas ważności limitu (sekundy), qu = "content-bytes" |
Informuje o limicie złożoności na minutę dla Twojego konta. Parametr r wskazuje liczbę pozostałych punktów złożoności. Parametr t wskazuje liczbę sekund do zresetowania limitu, jeśli ta informacja jest dostępna. |
👍 Wskazówka
Korzystaj z wartości
r(pozostały limit) w nagłówkuRateLimit, aby ograniczać liczbę żądań, zanim przekroczysz limit. Gdyrosiągnie0, przed ponowieniem żądania odczekaj liczbę sekund wskazaną przezt.
Przykładowe nagłówki odpowiedzi
Poniżej znajduje się przykład nagłówków, które mogą pojawić się wtedy, gdy aktywne są wszystkie trzy limity, a konto żadnego z nich nie przekroczyło:
RateLimit-Policy: "minuteRate";q=5000;w=60, "concurrency";q=250;qu="concurrent-requests", "complexityMinute";q=5000000;w=60;qu="content-bytes"
RateLimit: "minuteRate";r=4999, "concurrency";r=249, "complexityMinute";r=4950000;t=45
Po przekroczeniu limitu pozostała wartość spada do 0 i pojawia się parametr t:
RateLimit: "minuteRate";r=0;t=38, "concurrency";r=249, "complexityMinute";r=4950000;t=45
Wytyczne
- Wszystkie żądania wliczają się do podanych limitów, nawet te, które kończą się niepowodzeniem lub zwracają błąd. Aby uniknąć niepotrzebnego użycia API, przed ponowieniem wywołania odczekaj czas wskazany w polu
retry_in_seconds. - Korzystaj z nagłówków odpowiedzi
RateLimit, aby na bieżąco monitorować pozostały limit i ograniczać liczbę żądań, zanim go przekroczysz. - API SDK obsługuje odpowiedzi informujące o przekroczeniu limitu i przed automatycznym ponowieniem żądania czeka odpowiedni czas. Maksymalną liczbę prób ponowienia można skonfigurować.
- O ile nie zaznaczono inaczej, limity są mierzone osobno dla każdego konta i aplikacji. Wykorzystanie API za pomocą tokenu osobistego wlicza się do tego samego limitu.