---
title: "Batch-resolve messy vendor names to catalog ids"
method: POST
path: "/api/v1/vendors/resolve"
---

# Batch-resolve messy vendor names to catalog ids

`POST /api/v1/vendors/resolve`

## Request

- Base URL: `https://lvlupauto.com`
- URL: `https://lvlupauto.com/api/v1/vendors/resolve`
- Auth: HTTP bearer

Batch-resolve a pasted/messy vendor list (e.g. an AP-export column) to catalog vendor_ids in one call. A READ (it never mutates state — hence NOT consequential) that takes an array body. Per submitted name returns { submitted, status, confidence, resolved_vendor_id?, resolved_name?, candidates? } where status is 'resolved' (high-confidence — use the id directly), 'ambiguous' (several close matches — show the dealer the candidates), or 'unresolved' (no confident match — do NOT invent a vendor). Resolve the whole list, THEN POST /stack/vendors per resolved row with its vendor_id + monthly_cost. Conservative on purpose: a wrong auto-match is worse than unresolved, and the no-free-text moat holds on the write side regardless.

## Request body

- object

## Response `200`

Success

## Other responses

- `401`: Unauthorized — invalid or missing token
- `403`: Insufficient scope
- `422`: Validation error
- `429`: Rate limited or cap exceeded

---

[API](https://skmtc.dev/lvlupauto/apis/lvl-up-auto-headless-api.md) · [All operations](https://skmtc.dev/lvlupauto/apis/lvl-up-auto-headless-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lvlupauto/apis/lvl-up-auto-headless-api/revisions/805626b3a4ef?raw)
