Open Source

Marketo REST APIPostman Collection

Postman v2.1360 requestsMIT licensedUnofficial

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.

360
Requests
43
Folders
4
API surfaces
v2.1
Collection schema
Setup

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.

munchkinId

Admin → Web Services. The 123-ABC-456 part of your REST endpoint.

client_id

Admin → Integration → LaunchPoint → your custom service → View Details

client_secret

Same place. Marked as a secret in the environment file.

You never fetch a token by hand. 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.
What it handles

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"
Troubleshooting

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.

Verified

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=...
Companion

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.

Reference

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