---
title: "Ajoute un salon physique a l'annuaire (brouillon)"
method: POST
path: "/api/v1/directory/physical-salons"
tags: ["directory"]
---

# Ajoute un salon physique a l'annuaire (brouillon)

`POST /api/v1/directory/physical-salons`

## Request

- Base URL: `https://www.ultiplace.com`
- URL: `https://www.ultiplace.com/api/v1/directory/physical-salons`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://www.ultiplace.com/api/mcp/oauth/authorize`, token URL `https://www.ultiplace.com/api/mcp/oauth/token`, scopes: `salon:read`, `salon:write`, `salon:publish`, `stand:write`, `team:write`, `analytics:read`, `directory:read`, `directory:write`)
  - API key in header `X-Ultiplace-Key`
  - HTTP bearer

Cree un salon professionnel physique en brouillon. Idempotent via (name + city + dateStart). Si doublon, retourne le salon existant.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `salon` PhysicalSalon, required
    - `name` string, required
    - `slug` string
    - `description` string, required
    - `shortDescription` string
    - `dateStart` string, date-time, required
    - `dateEnd` string, date-time, required
    - `city` string, required
    - `country` string
    - `venue` string
    - `address` string
    - `postalCode` string
    - `website` string, uri
    - `organizerName` string
    - `organizerEmail` string, email
    - `organizerWebsite` string, uri
    - `expectedVisitors` integer
    - `expectedExhibitors` integer
    - `audienceType` 'B2B' | 'B2C' | 'B2B2C'
    - `sector` string
    - `thematic` string[], required
    - `tags` string[]
    - `imageUrl` string, uri
    - `logoUrl` string, uri
    - `isRecurring` boolean
    - `recurringFrequency` 'annual' | 'biennial' | 'quarterly' | 'monthly' | 'other'
    - `registrationUrl` string, uri
  - `sourceUrl` string, uri
  - `sourcePrompt` string

## Response `201`

Salon physique cree (ou retrouve si doublon)

- CreatePhysicalSalonResponse
  - `salonId` string, required
  - `slug` string
  - `status` 'draft' | 'pending_review' | 'published' | 'rejected' | 'archived', required
  - `qualityScore` integer, required
  - `requiresHumanReview` boolean
  - `duplicated` boolean
  - `publicUrl` string, uri, nullable

## Other responses

- `400`: Donnees invalides
- `401`: Authentification manquante
- `429`: Quota journalier annuaire atteint

---

[API](https://skmtc.dev/ultiplace/apis/ultiplace-public-api.md) · [All operations](https://skmtc.dev/ultiplace/apis/ultiplace-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ultiplace/apis/ultiplace-public-api/revisions/0eea140e095d?raw)
