> You are reading the Docusign Developer Documentation. For clean Markdown of any page, append .md to the page URL.
>
> Documentation indexes by section:
> - APIs and SDKs: https://docusign.docs.buildwithfern.com/docs/llms.txt
> - Platform 101: https://docusign.docs.buildwithfern.com/platform/llms.txt
> - Extension Apps: https://docusign.docs.buildwithfern.com/extension-apps/llms.txt
> - Docusign CLI: https://docusign.docs.buildwithfern.com/docusign-cli/llms.txt
>
> Authentication (OAuth, JWT Grant, M2M): https://docusign.docs.buildwithfern.com/platform/auth
> Webhooks and Connect: https://docusign.docs.buildwithfern.com/platform/webhooks
>
> OpenAPI specifications: https://docusign.docs.buildwithfern.com/openapi.json
> MCP server: https://docusign.docs.buildwithfern.com/_mcp/server

# Efficiency score factors

> Learn about the factors that affect your integration's efficiency score.

The [API Usage Center](/tools/api-usage-center)’s efficiency scores are based on an analysis that takes into account various aspects of API activity. The sections below describe each factor in the analysis and the corresponding recommendations for improving performance.

#### Blocked API calls

Your integration had some API calls blocked after exceeding the hourly (3,000 calls per hour, by default) or burst (500 calls per 30 seconds) limit. These limits apply to the total number of calls from all integrations associated with your account.

After exceeding either limit, you will be locked out of making API calls until the next window of time starts. Making more API calls after being blocked can decrease your efficiency score, especially if a high percentage of your total calls are blocked.

### Recommendations

Look for ways to reduce the number of API calls your app makes per 30 seconds or per hour:

* Do not repeat calls within the current window.
* Monitor your application’s API usage by checking the [X-RateLimit-Limit and X-BurstLimit-Limit](/platform/resource-limits) headers, included with most Docusign REST API responses. If you are approaching the limit for calls per hour or calls per 30 seconds, delay nonessential calls until the next window starts.
* After optimizing your apps, if your account still regularly exceeds the hourly limit, you may be able to increase it via the [API limit management](/tools/api-usage-center/limit-management) feature.

#### Exceeded API call burst limit

Your integration had some API calls blocked after exceeding the Docusign API call burst limit (500 calls per 30 seconds). The burst limit applies to the total number of calls from all integrations associated with your account.

Each time you exceed the limit, you will be locked out of making API calls until the next 30-second window starts. Making more API calls after being blocked can decrease your efficiency score.

### Recommendations

Look for ways to reduce the number of API calls your app makes per 30 seconds:

* Do not repeat calls within the current window.
* Monitor your application’s API usage by checking the [X-BurstLimit-Limit](/platform/resource-limits) headers included with most Docusign REST API responses. If you are approaching the limit of 500 calls per 30 seconds, delay nonessential calls until the next window starts.
* If you are implementing bulk sending scenarios, make sure that you are using the  [bulk send](/docs/esign-rest-api/esign101/concepts/envelopes/bulk-send) feature and, if you have a large number of bulk send recipients, make sure that they will not answer simultaneously.

#### Exceeded API call limit

Your integration had some API calls blocked after exceeding the hourly API call limit (3,000 calls per hour, by default). The call limit applies to the total number of calls from all integrations associated with your account.

Each time you exceed the limit, you will be locked out of making API calls until the next hour window starts. Making more API calls after being blocked can decrease your efficiency score.

### Recommendations

Look for ways to reduce the number of API calls your app makes per hour:

* Do not repeat calls within the current window.
* Monitor your application’s API usage by checking the [X-RateLimit-Limit](/platform/resource-limits) headers included with most Docusign REST API responses. If you are approaching the calls per hour limit, delay nonessential calls until the next window starts.
* Rather than repeatedly polling to track your envelope status, use [Docusign Connect](/platform/webhooks/connect) and a listener to subscribe to receive updates.
* After optimizing your apps, if your account still regularly exceeds the hourly limit, you may be able to increase it via the [API limit management](/tools/api-usage-center/limit-management) feature.

#### Excessive document retrieval requests

Your integration is making an excessive number of requests to retrieve documents from envelopes. This reflects calls to the eSignature REST API [EnvelopeDocuments:get](/docs/esign-rest-api/reference/envelopes/envelopedocuments/get) endpoint and corresponding SDK methods, which retrieve documents from an envelope.

### Recommendations

* As a best practice, try to make fewer API calls per envelope. This includes envelope creation, any updates, and tracking.
* Instead of making multiple calls to [EnvelopeDocuments:get](/docs/esign-rest-api/reference/envelopes/envelopedocuments/get) or a corresponding SDK method to retrieve all documents from an envelope, you can retrieve them all in a single call by setting the `documentId` parameter to `combined` or `archive`.

#### Excessive envelope API requests

Your integration is making an excessive number of requests to envelope APIs. This measures all envelope API calls except those to create, delete, get, or update templates.

### Recommendations

As a best practice, try to make fewer API calls per envelope. This includes envelope creation, any updates, and tracking. You can streamline your envelope process by:

* When creating an envelope, use a single call to [Envelopes:create](/docs/esign-rest-api/reference/envelopes/envelopes/create) or a corresponding SDK method rather than creating a draft envelope, then creating objects within the envelope via additional API calls, and then making an API call to send it.
* Your application should not create unused or unnecessary objects within the Docusign system. For example, draft envelope objects should not be created unless they will be sent.
* Download multiple objects with a single API call, when possible. For example, use the `include` query parameter for a call to [Envelopes:listStatusChanges](/docs/esign-rest-api/reference/envelopes/envelopes/liststatuschanges) or a corresponding SDK method instead of making additional API calls for subsidiary objects.
* Rather than repeatedly polling to track your envelope status, use [Docusign Connect](/platform/webhooks/connect) and a listener to subscribe to receive updates. When the envelope status changes, Docusign Connect will send your listener a message letting you know and enabling your integration to respond immediately.

  Alternatively, you can improve polling efficiency by:

  * Decreasing the frequency that you poll for envelope status
  * Making sure that you don’t check status for envelopes that are already complete

#### Excessive envelope status requests

Your integration is making an excessive number of requests to get envelope status. This reflects calls to the eSignature REST API [Envelopes:get](/docs/esign-rest-api/reference/envelopes/envelopes/get) endpoint and corresponding SDK methods, which retrieve the status of an envelope.

### Recommendations

* As a best practice, try to make fewer API calls per envelope. This includes envelope creation, any updates, and tracking.
* Instead of making separate calls to [Envelopes:get](/docs/esign-rest-api/reference/envelopes/envelopes/get) to retrieve the status of multiple envelopes, you can make a single call to [Envelopes:listStatusChanges](/docs/esign-rest-api/reference/envelopes/envelopes/liststatuschanges) or a corresponding SDK method that returns statuses for all envelopes that match filters you specify.
* Rather than repeatedly polling to track envelope status, use [Docusign Connect](/platform/webhooks/connect) and a listener to subscribe to receive updates. When an envelope status changes, Docusign Connect will send your listener a message letting you know and enabling your integration to respond immediately.

  Alternatively, you can improve polling efficiency by:

  * Decreasing the frequency at which you poll for envelope status
  * Making sure that you don’t check status for envelopes that are already complete

#### Excessive recipient status requests

Your integration is making an excessive number of requests to get the status of envelope recipients. This includes calls to the eSignature REST API [EnvelopeRecipients:list](/docs/esign-rest-api/reference/envelopes/enveloperecipients/list) endpoint and corresponding SDK methods, which retrieve the status of all envelope recipients and identify the current recipient in the routing list.

### Recommendations

* As a best practice, try to make fewer API calls per envelope. This includes envelope creation, any updates, and tracking.
* Rather than repeatedly polling to track recipient status, use [Docusign Connect](/platform/webhooks/connect) or [Recipient Connect](/platform/webhooks/connect/recipient-connect) and a listener to subscribe to receive updates. When a recipient status changes, Docusign or Recipient Connect will send your listener a message letting you know and enabling your integration to respond immediately.

  Alternatively, you can improve polling efficiency by:

  * Decreasing the frequency at which you poll for recipient status
  * Making sure that you don’t check status for recipients who have completed their envelopes

#### Excessive requests for nonexistent envelopes

This measures all eSignature REST API calls from your integration that reference the ID of an envelope that does not exist. Calls to nonexistent envelope IDs can occur after a failed call to [Envelopes:create](/docs/esign-rest-api/reference/envelopes/envelopes/create) or a corresponding SDK method if the integration makes subsequent requests for that envelope.

### Recommendations

* Include logic in the integration to handle a failed request to [Envelopes:create](/docs/esign-rest-api/reference/envelopes/envelopes/create) or a corresponding SDK method, and ensure that no subsequent calls specify that envelope ID.
* For any request that receives an `ENVELOPE_DOES_NOT_EXIST` [error code](/docs/esign-rest-api/esign101/error-codes) in the response, ensure that no further calls include that envelope ID.

#### Excessive requests per envelope

Your integration is making an excessive number of API requests per envelope. This includes requests to create, update, and track an envelope. Reduce the number of calls made per envelope to increase your efficiency score.

### Recommendations

As a best practice, try to make fewer API calls per envelope. This includes envelope creation, any updates, and tracking. You can streamline your envelope process by:

* When creating an envelope, use a single call to [Envelopes:create](/docs/esign-rest-api/reference/envelopes/envelopes/create) or a corresponding SDK method rather than creating a draft envelope, then creating objects within the envelope via additional API calls, and then making an API call to send it.
* Your application should not create unused or unnecessary objects within the Docusign system. For example, draft envelope objects should not be created unless they will be sent.
* Download multiple objects with a single API call, when possible. For example, use the `include` query parameter for a call to [Envelopes:listStatusChanges](/docs/esign-rest-api/reference/envelopes/envelopes/liststatuschanges) or a corresponding SDK method instead of making additional API calls for subsidiary objects.
* Rather than repeatedly polling to track your envelope status, use [Docusign Connect](/platform/webhooks/connect) and a listener to subscribe to receive updates. When the envelope status changes, Docusign Connect will send your listener a message letting you know and enabling your integration to respond immediately.

  Alternatively, you can improve polling efficiency by:

  * Decreasing the frequency that you poll for envelope status
  * Making sure that you don’t check status for envelopes that are already complete

#### Low call activity

Your integration did not make enough calls in the past seven days for Docusign to analyze its efficiency. In this case, Docusign sets the efficiency score to zero.

### Recommendations

Increase the number of calls that the integration makes. When call volume over the previous seven days reaches a level that allows Docusign to analyze its efficiency, this factor will no longer appear in the [Negative Efficiency Factors](/tools/api-usage-center#factors) list for the integration.

## Next steps

* See [API resource limits](/platform/resource-limits) for more information about each API’s call limits.
* See [How to list envelope status changes](/docs/esign-rest-api/how-to/list-envelope-status-changes) for more information about retrieving status history.