Limits
A JMAP request can bundle many method calls, each of which can read or write many objects, so one request can ask the server for a great deal of work. The limits of the JMAP API protect the server from requests that would use excessive memory or time. They are set on the Jmap singleton (found in the WebUI under Settings › Network › JMAP › Limits, Settings › Network › JMAP › Push, Settings › Network › JMAP › WebSocket), and they take effect after a settings reload.
Clients are told about the limits in advance. The values are advertised in the urn:ietf:params:jmap:core capability of the session resource, so well-behaved clients split their requests to stay within them. A request that exceeds a limit is refused with the error that RFC 8620 defines for it, such as limit with the name of the limit, or requestTooLarge.
Requests
Section titled “Requests”Three limits bound each request as a whole. maxRequestSize is the largest request body accepted, in bytes, 10 MB unless changed. maxMethodCalls is the number of method calls that one request can contain.
The third limit concerns concurrency. maxConcurrentRequests is the number of requests that one account can have in progress at the same time, 4 unless changed, and leaving it unset removes the limit. Accounts with the unlimitedRequests permission are exempt from it.
Method results
Section titled “Method results”Each method call is also limited in the number of objects it reads or writes:
| Field | Limits |
|---|---|
maxGetResults | The objects returned by one /get call |
maxSetObjects | The objects created, updated or destroyed by one /set call |
maxQueryResults | The results returned by one /query call |
maxChangesResults | The changes returned by one /changes call |
maxSnippetResults | The search snippets returned by one SearchSnippet/get call |
parseLimitEmail, parseLimitEvent, parseLimitContact | The messages, iCalendar items and vCard items parsed by one /parse call |
Uploads
Section titled “Uploads”Uploads are limited in two ways: one upload at a time, and in what an account holds. maxUploadSize is the largest single upload, 50 MB unless changed, and accounts with the unlimitedUploads permission are exempt from it. maxConcurrentUploads is the number of uploads that one account can have in progress at the same time, and leaving it unset removes the limit.
An uploaded file does not become part of the account at once. It stays in temporary storage until it is used, for example as a message attachment, or until uploadTtl expires and it is deleted. While files wait there, uploadQuota limits their total size and maxUploadCount their number, per account.
The size of messages, mailboxes and attachments is limited separately, by the email settings described in Message and mailbox limits.