Marketo REST APIPostman Collection
An unofficial Postman collection covering all 360 endpoints of the Adobe Marketo Engage REST API — generated from the OpenAPI definition so the two never drift apart.
Two files, three values
Import both files into Postman (Import → Files), select the Marketo Engage environment, then fill in three values and send any request.
munchkinIdAdmin → Web Services. The 123-ABC-456 part of your REST endpoint.
client_idAdmin → Integration → LaunchPoint → your custom service → View Details
client_secretSame place. Marked as a secret in the environment file.
access_token and token_expires_at appear in your active environment after the first call — leave them alone. The Identity folder is there if you want to watch the exchange yourself.The parts you would otherwise write yourself
Auth, handled
You never fetch a token by hand. A collection-level pre-request script gets one on the first call, caches it, and refreshes it 60 seconds before it expires. Every request inherits Bearer auth from the collection; the two Identity requests are set to No Auth, since that is where the token comes from.
Real error checking
Marketo returns HTTP 200 even when a call fails, so a green status code means almost nothing. The collection test script fails the request when the envelope reports success: false and surfaces the Marketo code — which is what makes the Collection Runner trustworthy. It also logs per-record failures hiding inside a success: true batch response.
Paging, pre-wired
Any nextPageToken in a response is saved to a collection variable of the same name, and the 30 requests that accept one are already pointed at {{nextPageToken}} — re-send to walk to the next page. Asset endpoints page with offset and maxReturn instead.
Sensible defaults
Placeholder values look like <string> or <integer>; replace them before sending. Optional query parameters ship disabled — tick the ones you want. Asset writes are already set to form-encoded, Lead Database writes to JSON, and bulk imports to multipart/form-data.
A failing call reads like this in the Collection Runner — the Marketo error code, and the folder path of the request that produced it:
1. Error Response envelope reports success
[606] Max rate limit exceeded
inside "Lead Database & Marketing Activities / Usage / Get Daily Errors"Three things that go wrong
No Authorization header is sent, and everything 401s
Something is shadowing access_token. Postman resolves placeholders local → data → environment → collection → global, so an environment variable named access_token — even an empty one — beats the collection variable. Clear it from your environment, or re-import both files.
“set client_id and client_secret” in the Postman console
The pre-request script found no credentials. Check that an environment is selected (top-right in Postman) and that client_id and client_secret are filled in on it.
Every request refetches a token
Harmless but wasteful, and it eats into the 100-calls-per-20-seconds rate limit. It means token_expires_at is not being read back — the same scope problem as above.
Run end to end before release
The collection validates against the Postman v2.1 schema with zero errors, both scripts pass node --check, and the whole thing runs under Newman against a mock Marketo server in three configurations.
Environment file selected
Token fetched once, Authorization: Bearer … on every request
Stale empty access_token already in the environment
Overwritten in environment scope; auth still correct
No environment at all
Falls back to collection scope; auth still correct
npx newman run Marketo-REST-API.postman_collection.json \
-e Marketo-Engage.postman_environment.json \
--folder Usage \
--env-var client_id=... --env-var client_secret=...Reading the API rather than calling it?
This collection is generated from the OpenAPI 3 definition — browse all 360 operations, their parameters, schemas, and responses in the spec explorer, then come back here to run them.
Source, license, and regenerating
The collection and its build script are MIT licensed. Your use of the Marketo Engage API itself is governed by Adobe's API License Agreement, not by this one.
git clone https://github.com/jdarring/marketo-openapi.git \
../marketo-openapi
python3 build-collection.py jdarring/marketo-postman