Every input-bearing method accepts dry_run=True. It validates your input and
returns the exact request that would be sent — without touching the
network:
Great for checking a batch is well-formed (record limits, allowed
match_condition_fields, record shape) before spending a call.
What gets validated locally
The local validation enforces the same constraints the server does:
- Record counts —
enrich and resolve cap at 500 records per call
- Required fields —
record_id on every record, etc.
- Field types — strings where strings expected, lists where lists expected
- Allowed values —
match_condition_fields capped at 3, only allowed values
What it doesn’t check (server-only):
- Billing eligibility (whether your plan covers this endpoint)
- Whether matches will actually be found
- Per-row business rules
Use dry_run for shape; trust the server for substance.
The request models directly
Every method has an underlying pydantic request model — you can construct +
validate it yourself if you want:
Useful when you want to drive the validation from your own dict-based
pipeline, generate a JSON Schema, or pre-validate before queueing the call.
mc.api.call(...) does not take dry_run — there’s nothing for the SDK to
validate (the SDK doesn’t know the schema of the path you’re calling).