Hoe werken de API limieten van Exact Online?

De Exact Online API-limieten (“Exact Online API rate limits”) zijn zoals beschreven door @sda (thanks) terug te vinden op de Exact Online site.

De limiet die vaak als restrictief ervaren wordt is de daglimiet van 5.000 API calls per dag, administratie en per client ID. Voor enkele Invantive SQL gebruikers is deze limiet problematisch, maar 99% heeft hier weinig last van ondervonden. De limieten zijn gaandeweg over 2021 steeds verlaagd; meer informatie over de Exact Online API aanpassingen in 2021 zijn te vinden op Impact Exact Online API aanpassingen 1 juli 2021.

Bij 100 administraties is het maximum dus 500.000 calls, maar er mogen per administratie maximaal 5.000 per dag gebruikt worden.

Een ophoging is te realiseren met meer gekoppelde apps en/of door een tijdelijke extensie bij Exact Online Support aan te vragen met een ticket.

Overschrijding van de Exact Online daglimiet zorgt er voor dat rest van de dag onder die client ID geen API requests meer afgevuurd kunnen worden. Er treedt dan onder HTTP 429 error op: Too many requests (het aantal verzoeken overschrijdt de daglimiet). Invantive SQL toont dan een itgeneor229 foutmelding zoals beschreven in Geleidelijke verlaging van Exact Online API-limieten leidt tot "Too many requests" en itgeneor229 foutmeldingen.

Er is geen sprake van een limiet die op een centrale administratie terugslaat en rapportages schalen lineair in het aantal Exact Online administraties.

Het gebruik op Exact Online maar ook andere API’s is eenvoudig op te vragen via de Invantive SQL Editor met een paar SQL-statements:

--
-- Selecteer alle administraties.
--
use all@eol

--
-- Zorg dat alle Exact Online administraties geraakt zijn met een simpele API-call
-- zodat de administratie ook statistieken teruggeeft.
--
select 1 c
from   exactonlinerest..journals 
where  code = 'BESTAATNIET'

--
-- Haal lijst van huidige rate limit waardes op per administratie.
--
select provider_data_container_id
,      code
,      daily_limit
,      daily_used
,      daily_remaining
,      daily_reset_date_utc
,      minutely_limit
,      minutely_remaining
,      minutely_reset_date_utc
,      last_measurement_utc
,      first_daily_remaining
,      first_measurement_utc
from   systempartitions@datadictionary

Het plaatje toont dat er bijvoorbeeld op 10523 al 7 Exact Online API-calls gemeten zijn volgens de Exact Online API server:

Het resterende aantal API calls is te vinden onder DAILY_REMAINING. Het deze minuut resterende aantal API calls (de zogenaamde “minutely limit”) is te vinden onder MINUTELY_REMAINING. Per minuut kunnen 60 API-calls gemaakt worden naar Exact Online.

Binnen een downloadsessie kunnen de aantallen API-verzoeken en details API-calls opgevraagd worden door de view SessionIOs@DataDictionary uit te lezen (voor in dit geval NMBRS):

Dezelfde gegevens zullen enkele minuten later verschijnen in het scherm “Sessie I/O’s” op Invantive Cloud. Deze lijst met API-calls is tegenwoordig redelijk vlot op te openen en bevat alle sessie I/O’s van vandaag. Sessie I/O’s ouder dan een dag zijn hier niet online zichtbaar, alhoewel totalen bewaard blijven.

Meer informatie over Exact Online rate limits is te lezen in Itgeneor229 Verkrijg meer API-aanroepen per dag dan de huidige limiet van 15.000-aanroepen of probeer het morgen opnieuw. The remote server returned an error: (429) Too Many Requests.

Voor gebruikers van on-premises producten staan de extra mogelijkheden beschreven in Welke API calls heeft Invantive SQL daadwerkelijk uitgevoerd?.

Optimalisatietips zijn te vinden vanaf onder bijvoorbeeld: