---
title: "match_contacts"
method: POST
path: "/match_contacts"
tags: ["contacts"]
---

# match_contacts

`POST /match_contacts`

## Request

- Base URL: `https://app.podmule.com/api/v1`
- URL: `https://app.podmule.com/api/v1/match_contacts`
- Auth: HTTP bearer

Bulk-resolve many contacts in ONE call by a known set of values — instead of looping get_contact N times. Supply filters of {field, values[], mode}: exact (IN, case-sensitive — for ids/emails) or contains (case-insensitive literal substring — for names/company; LIKE metacharacters are treated as literal text). Contains-eligible fields: email, first_name, last_name, company, job_title. Guest-geography filters with UK/US alias expansion belong on search_contacts (country / country_not / city), not here. Combine filters with 'any' (OR, default) or 'all' (AND). detail:'full' adds socials/phone plus batched recent notes (capped at 5/contact) and attached media for every match in one query-set (no N+1). Returns matches (each with matched_by reporting which supplied value hit it), unmatched (supplied values that hit nothing), and truncated. Caps: ≤50 values/filter, ≤5 filters, ≤200 summary rows / ≤50 full rows. Use this for reconciliation against a caller-supplied set — not for large scans (use search_contacts to browse/relevance-rank).

## Request body

- unknown

## Response `200`

Capability output wrapped in `{ data }`.

- object
  - `data` unknown, required

## Other responses

- `400`: Invalid input — Zod validation failed.
- `401`: Missing, malformed, or audience-mismatched bearer token.
- `403`: Token is valid but lacks the required scope.
- `404`: Capability not registered, or referenced resource not found.
- `429`: Rate limit exceeded. Retry after the period in `Retry-After`.
- `500`: Internal error.

---

[API](https://skmtc.dev/podmule/apis/podmule-api.md) · [All operations](https://skmtc.dev/podmule/apis/podmule-api/llms.txt) · [OpenAPI document](https://skmtc.dev/podmule/apis/podmule-api/revisions/844ae61495fa?raw)
