---
title: "Créer un article de catalogue"
method: POST
path: "/catalog"
tags: ["Catalog"]
---

# Créer un article de catalogue

`POST /catalog`

## Request

- Base URL: `https://api.swipify.fr/api/v1`
- URL: `https://api.swipify.fr/api/v1/catalog`
- Auth: API key in header `X-API-Key`

Ajoute une prestation/produit réutilisable au catalogue (pré-remplit ensuite les lignes de devis/factures). Aucun document légal. Scope requis : `catalog:write`.

## Headers

- `Idempotency-Key` string

## Request body

- CatalogItemCreate
  - `description` string, required
  - `unitPrice` number, required
  - `unit` string, nullable: Unité de l'article, enregistrée comme celle d'une ligne (voir LineInput).
  - `vatRate` number
  - `discountPercent` number
  - `isFavorite` boolean

## Response `201`

Article créé

- CatalogItem
  - `id` integer
  - `description` string
  - `unit` string, nullable
  - `unitPrice` string
  - `vatRate` string
  - `discountPercent` string, nullable
  - `isFavorite` boolean

## Other responses

- `400`: Données invalides
- `401`: Échec d'authentification : clé API manquante (`missing_api_key`) ou invalide/révoquée/expirée (`invalid_api_key`). Le client doit présenter une clé valide.
- `403`: Clé authentifiée mais non autorisée : scope insuffisant pour cette route (`scope_required`), ou organisation sans abonnement Pro actif (`pro_required`). `GET /me` reste accessible sans Pro pour diagnostiquer la clé.
- `409`: Conflit (ressource déjà existante, limite atteinte ; sur les routes idempotentes, Idempotency-Key déjà en cours)
- `422`: Idempotency-Key déjà utilisée pour une AUTRE requête (méthode/chemin divergents)
- `429`: Trop de requêtes (quota de la clé API, ou de l'organisation pour les analyses de document, dépassé pour la fenêtre courante)

---

[API](https://skmtc.dev/swipify/apis/swipify-api-publique.md) · [All operations](https://skmtc.dev/swipify/apis/swipify-api-publique/llms.txt) · [OpenAPI document](https://skmtc.dev/swipify/apis/swipify-api-publique/revisions/44c17201b479?raw)
