Avoid making concurrent API calls if your use case does not benefit from it.

Acceptable Latency

Determining your latency tolerances, or the maximum amount of time that may pass before submitting an API call, will inform many, if not most, of the decisions that you make when designing your integration to Marketo. Marketo provides many different methods and configuration options which are suitable for different use cases, and different latency classes. For example, a real-time integration to notify a salesperson of a user signing up for a trial might only submit batches of one if immediate follow-up is required. However, most cases don’t require this and can tolerate additional latency and can be managed more efficiently through queuing and batching calls.

Acceptable Latency

Preferred Methods

Notes

Low (<10s)

Synchronous APIs (Batched or Unbatched)

Take care to ensure that your use case requires this. Sending immediate and synchronous calls for high volume use cases can quickly consume a daily API quota, and potentially exceed both rate and concurrency limits.

Medium(10s – 60m)

Synchronous APIs (Batched)

For inbound data integrations to Marketo, using a queue with both an age and a size limit is highly recommended. When either limit is reached, flush the queue and submit your API request with the accumulated records. This is a strong compromise between speed and efficiency, ensuring that your requests occur at the required cadence, while batching as many records as the queue’s age allows for.

Daily Limits

Each API-enabled instance of Marketo has a daily allocation of at least 10,000 REST API calls per day, but more commonly 50,000 or more, and 500MB or more of Bulk Extract capacity. While additional daily capacity may be purchased as part of a Marketo subscription, your application design should consider the common limits of Marketo subscriptions.

As capacity is shared among all API services and users in an instance, best practice is to eliminate redundant calls, and to batch records into as few calls as possible. The most call efficient way to import records is using Marketo’s bulk import APIs, which are available for Leads/Persons and Custom Objects. Marketo also provides Bulk Extract for Leads and Activities.

Caching

Caching certain asset types, like programs, emails and folders, is also appropriate for certain use cases, such as data enrichment for lead or activity records.

Rate Limit

Each Marketo instance has a rate limit of 100 calls per 20 seconds, which is shared among all third-party API services. If this limit is exceeded the API will respond with a 606 error code indicating that the rate limit has been exceeded. In general, third-party integrations should limit their utilization to 50 calls per 20 seconds or fewer to allow for fair usage of the rate limits by multiple API integrations and users. Though it may be appropriate to saturate this limit in certain cases, in general, applications which use batching and target their throughput to less than this limit are more responsive and consistent in their operation, at a small cost of increased latency.

Concurrency Limit

Each Marketo instance has a shared limit of 10 concurrently executing REST API calls. Like the daily quota and rate limits it is shared, so you should not assume that your application with the exclusive consumer of this limit. Marketo’s counts the number of calls as those which are processing and have not yet returned, so when a call returns, it is no longer counted against the concurrent calls limit.

Most integration use cases do not benefit from making concurrent calls, so consider whether your application will benefit before deciding to submit concurrent requests to Marketo. If you do wish to implement concurrency, you should cap the number of concurrent requests at five or fewer in your initial design, and only increase this after determining that your application requires more.

Latest Blog Posts

Keep up with what's new in the developer world

Important Change to Activity Records in Marketo APIs March 1, 2017 Note: This post will be updated to reflect changes made to activity records returned by the API due to migration to new infrastructure.
With the rollout of Marketo’s next-generation Activity Service beginning in Septmeber, we will be unable to enforce the uniqueness or presence of the integer “id” field in activities, data value changes, or lead deletion ... Read More >

Internet of Things for Marketers with IFTTT and Zapier June 20, 2017 The Internet of Things (IoT) is the inter-networking of connected devices, appliances, wearables, vehicles, etc. with embedded electronics, software, sensors, and network connectivity that enable these objects to collect and exchange data with cloud information systems. These technologies are growing and trending so fast that they will impact how we live, how we work and ... Read More >

Spring 2017 Updates June 16, 2017 In the Spring 2017 release, we are adding the ability to bulk extract lead and activity object data asynchronously, and to manipulate named account lists. See the full list of updates below.
Lead Database APIs
Bulk Extract of Leads
New endpoints to support extraction of leads in bulk. Specify record selection criteria using a variety of options. Details can ... Read More >