From d27f19ec014be4269ab8fffb21c072f6e960df85 Mon Sep 17 00:00:00 2001 From: dilucesr Date: Thu, 6 Aug 2026 12:05:00 -0700 Subject: [PATCH 1/3] Clarify SPE guidance on limits --- docs/embedded/plan/limits-calling-patterns.md | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/docs/embedded/plan/limits-calling-patterns.md b/docs/embedded/plan/limits-calling-patterns.md index a19ddafe2..091e06324 100644 --- a/docs/embedded/plan/limits-calling-patterns.md +++ b/docs/embedded/plan/limits-calling-patterns.md @@ -93,7 +93,15 @@ Use container membership and roles where possible. For permission concepts, see [Plan authentication and permissions](../plan/authentication-permissions.md). -## Throttling responses +## Throttling management + +Throttling is a mechanism to protect the SharePoint Embedded service and ensure fair usage. +Your application must handle throttling signals and react appropriately. + +> [!TIP] +> Read [Avoid getting throttled or blocked in SharePoint](../../general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online) to understand the best practices for your application. The limits for SharePoint Embedded are described in [API rate limits](#api-rate-limits). + +### Throttling responses When applications hit service limits, SharePoint Embedded can return: @@ -107,7 +115,7 @@ The header tells the app how long to wait before retrying or making a new reques > [!IMPORTANT] > Throttled requests count toward usage limits. If you ignore `Retry-After`, your app can cause more throttling. -## Retry guidance +### Retry guidance Implement retry logic that: @@ -120,7 +128,7 @@ Implement retry logic that: Use bounded retries and surface persistent failures to operations telemetry. For general guidance on handling throttling responses, see [Microsoft Graph throttling guidance](/graph/throttling). -## Concurrency guidance +### Concurrency guidance Reduce the number of concurrent requests when throttling occurs. @@ -157,9 +165,9 @@ SharePoint Embedded enforces these API rate limits. | Resource | Limit | | --- | --- | -| Requests per container | 3,000 resource units per minute | +| Requests per container | 3,000 resource units per minute* | | Requests per app per tenant | 12,000 resource units per minute* | -| Requests per user | 600 resource units per minute | +| Requests per user | 600 resource units per minute* | An asterisk (`*`) indicates a limit you can request to increase. @@ -206,6 +214,7 @@ Design for: - Separation of foreground and background work. - Tenant-level fairness for multitenant apps. - Monitoring of request rate, response codes, and latency. +- Spreading load across several containers. For billing impact of API transactions, see [Choose a billing model](../plan/choose-billing-model.md). @@ -214,6 +223,8 @@ For billing impact of API transactions, see [Choose a billing model](../plan/cho Track: - HTTP `429` and `503` response rates. +- `RateLimit-*` headers returned for both successful and throttled calls. +- `Retry-After` header for throttled calls. - Retry counts and wait durations. - Resource-intensive operations. - Requests by app, tenant, user, and container. @@ -227,6 +238,7 @@ Use these signals to tune concurrency and identify tenants or workflows that nee - Confirm current size limits before production launch. - Model containers instead of creating many container types. +- Design your architecture to spread load across as many containers as possible. - Estimate storage per container and per consuming tenant. - Estimate file and folder counts. - Avoid unnecessary additive permissions. From 1dd0f43b760dd729c507508b0d0df8a535b1df98 Mon Sep 17 00:00:00 2001 From: Diego Luces Date: Thu, 6 Aug 2026 12:21:01 -0700 Subject: [PATCH 2/3] Apply suggestion from @dluces --- docs/embedded/plan/limits-calling-patterns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/embedded/plan/limits-calling-patterns.md b/docs/embedded/plan/limits-calling-patterns.md index 091e06324..992bf3085 100644 --- a/docs/embedded/plan/limits-calling-patterns.md +++ b/docs/embedded/plan/limits-calling-patterns.md @@ -99,7 +99,7 @@ Throttling is a mechanism to protect the SharePoint Embedded service and ensure Your application must handle throttling signals and react appropriately. > [!TIP] -> Read [Avoid getting throttled or blocked in SharePoint](../../general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online) to understand the best practices for your application. The limits for SharePoint Embedded are described in [API rate limits](#api-rate-limits). +> Read [Avoid getting throttled or blocked in SharePoint](../../general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online.md) to understand the best practices for your application. The limits for SharePoint Embedded are described in [API rate limits](#api-rate-limits). ### Throttling responses From 5a63aff369a255c22694176240c830598d6e30ad Mon Sep 17 00:00:00 2001 From: dilucesr Date: Thu, 6 Aug 2026 12:36:05 -0700 Subject: [PATCH 3/3] Add limit of queryable and searchable custom columns --- docs/embedded/plan/limits-calling-patterns.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/embedded/plan/limits-calling-patterns.md b/docs/embedded/plan/limits-calling-patterns.md index 992bf3085..ac3ec51d0 100644 --- a/docs/embedded/plan/limits-calling-patterns.md +++ b/docs/embedded/plan/limits-calling-patterns.md @@ -56,6 +56,8 @@ SharePoint Embedded enforces the following size limits. | File size | 250 GB | | Version count per file | 500 (default automatic version history limit) | | Number of users shared per folder or file | 5,000 | +| Number of searchable columns per container | 40 | +| Number of indexed columns per container | 20 | An asterisk (`*`) indicates a limit you can request to increase.