---
title: "Create and validate a catalog import"
method: POST
path: "/v1/supplier/catalog-imports"
tags: ["Supplier catalog"]
---

# Create and validate a catalog import

`POST /v1/supplier/catalog-imports`

## Request

- Base URL: `https://api.supplyslate.com`
- URL: `https://api.supplyslate.com/v1/supplier/catalog-imports`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://mcp.supplyslate.com/authorize`, token URL `https://mcp.supplyslate.com/oauth/token`)
  - HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- CatalogImportWrite
  - `source_type` 'csv' | 'xlsx' | 'json' | 'api' | 'feed' | 'document' | 'manual', required
  - `source_artifact_id` string
  - `source_url` string, uri
  - `mapping` object
  - `idempotency_key` string, required
  - `rows` object[]

## Response `201`

Created durably

- CatalogImportResponse
  - `catalog_import` CatalogImport, required
    - `id` string, required
    - `source_type` string
    - `status` string
    - `submitted_rows` integer
    - `accepted_rows` integer
    - `rejected_rows` integer
    - `errors` object[]
  - `request_id` string

## Other responses

- `400`: Invalid request
- `401`: Authentication required
- `403`: Scope or tenant boundary denied
- `404`: Resource not found
- `409`: State conflict or idempotency mismatch
- `429`: Rate limited

---

[API](https://skmtc.dev/supplyslate/apis/supplyslate-agent-native-supply-api.md) · [All operations](https://skmtc.dev/supplyslate/apis/supplyslate-agent-native-supply-api/llms.txt) · [OpenAPI document](https://skmtc.dev/supplyslate/apis/supplyslate-agent-native-supply-api/revisions/f7989551f167?raw)
