Getting Started with Marketo Engage APIs: Q&A Follow Up

Marketo Employee
Marketo Employee

As a follow up from the webinar APIs for Amateurs: Getting Started with Marketo Engage APIs on August 27, 2020, below are answers to questions that we couldn't get to during the Q&A portion. These answers were provided by webinar presenters @Corey_Bayless and @Amit_Jain . If you have further questions, feel free to post them in the comments section. You can watch the recording and other resources discussed in the webinar here.


Getting Started with Marketo Engage APIs: Q&A Follow Ups

How can you refresh the authentication token without using the custom LaunchPoint? You can't manually be creating authentication tokens every hour right? Corey: You are able to recreate the authentication token every hour or you can use the Github library and every time you make a call, the code will auto create one.  This removes the need to manually have to do it.

: Due to time constraints, we could not cover that in the webinar. Here is how you can do it:
HTTP Method: GET
URL: https://<Munchkin Account ID><Client Id>&client_secret=<Client Secret>

You can read more about it here:
I know it wasn't a focus point but can you talk about Marketo's response to GET requests? Amit: The GET response that you will receive will be in jSON format and the jSON body may vary based on which GET operation you are performing. But there are a few things that I would highlight here:
 1. The "Success" key in the response will tell you if that call was successful or not. If it's "True", it means it was done successfully.
2. In case the API call was not successful, you will get an Error code and message in the response body that will help you understand what was wrong with that API call. You can read more about these error codes here:

Corey: Marketo will return JSON data for the particular object you are trying to get information for.  GET calls only get target info, no updates are made, that is a Post call.
How do we track the impact on the API Limit? What type of impact does this have on your API limit when you start using this all the time? Amit: If you have multiple systems interacting with Marketo, you have to design your system in a way that no system overeat Marketo APIs. If you reach the API limit, your other systems will not be able to interact with Marketo, meaning no push/pull operation can be done. There will be no impact on the Marketo UI and how you use Marketo day to day. Even there will be no impact on SFDC<->Markto sync. For more best practices, please go through this doc:

Corey: API tracking can be done through cloud to understand how and what limits you're reaching.  If you hit the rate limit in the API you will start to see a particular error code show up and jobs will start to fail.  It usually tells you the rate limit is hit so the call will fail.  Consistent use of the API will need monitoring so you can spread out your calls and ensure it is being used evenly through out the day. Marketo support can definitely help here.
Can we restore the changes we made with the same time span we created? Corey: If you create backups then yes, if you only make changes with no backups then you won't be able to restore.  Marketo does not let you version templates, once the code is approved, the page will save that version of code.

There is no revert back API support. The only way to revert is, if you are taking backup before making any change, you can use that to update the asset to its previous state. 
How can I access reports that exceed 20k users and download to excel using bulk export? How can we create an automated way to pull information using Bulk API but get the data  periodically? If I want a whole database export, how can I do that using API? Amit: For the large data exports, I would suggest to use BULK APIs only. You can check the Bulk extract APIs here:

For an automated pull, you need support from a Developer who can write a program in any language like Python, Java etc and connect that with a database.

If you are planing to have a replica of your Marketo DB outside, I would suggest to:
1. Export all the existing records as one-time exercise
2. Schedule a jobs to export the daily new created records
3. Schedule a job to export the changes made in the existing records
4. Schedule a job to mark the records which were deleted from Marketo

For more detailed information, you can check out this Marketo DB reference Architecture:

Corey: Bulk APIs require 4 calls, you will need to create a program to initiate each call.  This will allow you to extract or import large data sets.  You can also do the export option that is made available in smart lists.  20k should still be in the range that the UI can handle.
How can we use APIs to solve the new data retention changes issue in order to store the data which will be disappear after 90 days? Amit: You must use Marketo Activity bulk APIs for that. You can read more about that here:
We will try if we can get a video/webinar out on that soon.
Is there any limitation in size of data (ex contact data) that we can call from Marketo using API? Corey: The Bulk API description in the developer documentation will provide this information.

Amit: There is no limitation in that way, you can export the whole database. But there are limitations on the API side.
1. If you are using the batch API, you can export max 300 leads in a single API call. You can calculate the records that you can export by multiplying 300 with your daily API limit, which is 10K by default.
2. If you are using the BULK APIs, you can export up to 500MB data on daily basis (this is default limit). The number of records in that file may very depending on the number of columns and the data in each column.
What are the topics in Python to focus on? Corey: How Python interacts with databases.  What lists, dictionaries and for loops are.  Learn how to write conditional statements when looking for a specific type of data.  Learn how to read and write JSON data.
How can we gather behaviour data from Marketo through API (like download somethings, click, open, etc)? Corey: Download Activity data out of Marketo will help here.  You can also use email insights and target by campaign.

Amit: Marketo offers both batch APIs and bulk APIs to export this kind of data. You can read more about those here:
1. Batch Activity export APIs:

2. Bulk Activity Export APIs:
How do I find out where are all the references of specific tokens are being used? Corey: Download Activity data out of Marketo will help here. You can also use email insights and target by campaign.

Amit: Marketo doesn't keep the reference of the tokens used inside the assets. 
Can you use the API to delete hidden fields? Amit: Currently Marketo only allow you to export the fields using API. No other operation like create/update/delete are not available through API. As of today, only Marketo support can help you deleting the fields.
For the token cloning can you set the token name from the API? Corey: Yes, you set the name and value for the token you are creating.
If I use Forms API to add an answer choice to an existing question (of type select), will the new choice show up on all the existing forms where we use the question? Corey: If you target by the field name then you will update what is currently there. If you use a new field name then you will get a new field type.
In Amit's example about extracting ... how can you throttle the amount of data you're pulling from Marketo?

Amit: If it's about extracting the data using Bulk APIs, Marketo has 500MB as the default export limit. When the export job is completed, Marketo tells you the file size you are exporting. You can use that to determine if you are reaching the daily export limit or not. 


Corey: you can set the amount of data in the API call.  Having your own built library is a recommended approach here. 

Can we use the API user instead of creating a new user? Corey: I would think so, just make sure you use the correct client secret, client id and munchkin code. The user should connect.

Amit: I would recommend you use separate API users per application. Marketo allows you to create unlimited API users so don't worry about the # user limit for your Marketo instance.
Do we have any reference place that we can understand how Marketo data architecture works and how we can create dashboard based on that? Amit: Yes, you can refer to this:
Using API: Can I get a list of landing page URLs,  and count of signs up which happened in the page? Corey: You are able to do this in Design Studio under landing pages. There is an option to export that data to a CSV.
If you want to clone a program into 50 different new programs, what do you put for the New Program Name? Corey: You just need to change one character for each program name.  For instance program name 1, program name 2, and so forth.
When you clone it can you also set it to synchronize and create a new campaign in Salesforce? Corey: That would be an API call into SFDC since the systems are separate.
How do we know what the key name is for each field (e.g. "description" is for the program description)? Is that list of items in the API documentation? Corey: You can get this by doing a GET call on a form field and looking at all the keys.   These keys will also be available in the developer documentation under assets.  You will be looking for form field controller.