AdWords API Concurrency Policy

Thursday, September 14, 2006

We’ve recently received several inquiries about our policy on concurrent connections, so we thought it would be a good time (especially with the holiday season approaching) to provide some more visibility into how we manage concurrent requests.

When we launched the AdWords API in early 2005, one of our goals was to minimize the number of API-specific policies and restrictions. Therefore, we decided not to set a fixed limit on the number of concurrent requests, and instead instituted a dynamic concurrency limit that takes effect only when total network resources fall below a certain threshold. We planned the system to operate in this way so we could provide developers maximum flexibility/scalability while still ensuring that enough network resources are always available to equitably support a broad ecosystem of developers.

To date, this system has worked well. And we’re happy to report that the limit has rarely been triggered. However, we feel it is important to let you know that if you reach this limit, the system will return one of two possible load-related errors. The first is HTTP status code ‘503’ which is accompanied by an HTTP header called "Retry-After" that contains an integer value for the number of seconds the client should wait before retrying the request. The second possible error returned is the AdWords API error code 87 ("This request is attempting to exceed the limit on the maximum number of outstanding requests allowed per developer token)." You can find this second error listed in the AdWords API Developer’s Guide.

If your application can (or already does) issue concurrent requests to the AdWords API, we recommend that you handle these errors in it, so that it gracefully adapts its behavior if the concurrency limit is reached.

We believe that allowing the limit to float provides our developers with maximum flexibility/scalability. However, we may need to implement a more predictable (e.g. fixed) limit should the AdWords API routinely become swamped with unusually large requests.

Finally, as a best practice, we encourage all developers to use list methods whenever possible (e.g. addCreativeList). These methods are the most efficient way to process large data sets.

As always, thank you for your support of the AdWords API.

-- Jon Diorio, Product Marketing