Référence APICréer un coffre
POST/v1/coffres

Créer un coffre

Crée un coffre, avec protection par mot de passe, NDA et vérification e-mail optionnelles.

2 min de lectureTélécharger en PDF

Requête exemple

"{\"title\":\"Data Room Levée Série A\",\"description\":\"Documents financiers et juridiques pour les investisseurs.\",\"cover_color\":\"#5d50ec\",\"cover_emoji\":\"📊\",\"status\":\"draft\",\"password\":\"acces-investisseurs-2026\",\"expires_at\":\"2026-09-30T23:59:59Z\",\"watermark_enabled\":true,\"watermark_text\":\"Confidentiel - Ne pas diffuser\",\"require_nda\":true,\"nda_text\":\"En accédant, vous acceptez les termes de confidentialité.\",\"require_email_verification\":true,\"allowed_emails\":[\"partner@vc-fund.com\",\"analyst@vc-fund.com\"]}"

Réponse exemple

"{\"id\":\"c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d\",\"slug\":\"data-room-levee-serie-a-9f3a\",\"title\":\"Data Room Levée Série A\",\"description\":\"Documents financiers et juridiques pour les investisseurs.\",\"cover_color\":\"#5d50ec\",\"cover_emoji\":\"📊\",\"status\":\"draft\",\"view_count\":0,\"unique_viewers\":0,\"expires_at\":\"2026-09-30T23:59:59Z\",\"created_at\":\"2026-06-05T10:30:00Z\"}"

Crée un nouveau coffre (espace de partage de documents) au sein du workspace authentifié. L'endpoint accepte au minimum un title et renvoie le coffre créé avec le statut HTTP 201. Comportement notable : si vous ne fournissez pas de slug, il est généré automatiquement à partir du titre (translittéré, mis en minuscules, tronqué à 48 caractères, suffixé d'un identifiant aléatoire) ; l'unicité du slug est garantie au sein du workspace, et en cas de collision un suffixe court de 4 caractères est ajouté. Le coffre est créé en statut draft par défaut, sauf si vous passez explicitement status: "active". Si un password est fourni, il est haché en SHA-256 côté serveur (jamais stocké en clair) et le coffre est automatiquement marqué comme protégé par mot de passe.

Authentification

Cet endpoint requiert une clé API valide (en-tête Authorization: Bearer cof_live_... ou cof_test_...) portant le scope transfers:write. Le coffre est rattaché au workspace et à l'utilisateur résolus à partir de la clé : les champs workspace_id et user_id sont déduits du contexte d'authentification et ne peuvent pas être surchargés via le corps de la requête. Une clé sans le scope requis reçoit une erreur 403 scope_missing.

Corps de la requête

Le corps doit être un objet JSON. Seul title est obligatoire ; tous les autres champs sont optionnels et appliquent des valeurs par défaut ou une validation stricte.

ChampTypeRequisDescription
titlestringOuiTitre du coffre. Ne doit pas être vide (espaces ignorés). Sert aussi de base au slug auto-généré.
slugstringNonSlug personnalisé. Normalisé en minuscules, espaces convertis en tirets, caractères non alphanumériques retirés, tronqué à 60 caractères. Si absent, généré depuis le titre. Rendu unique dans le workspace.
descriptionstringNonDescription libre. Espaces de début/fin retirés ; une chaîne vide est convertie en null.
cover_colorstringNonCouleur de couverture au format hexadécimal #RRGGBB. Toute valeur invalide est remplacée par la valeur par défaut #5d50ec.
cover_emojistringNonEmoji de couverture. Par défaut 🗄️ si absent ou vide.
statusstringNonStatut initial. Seule la valeur active est prise en compte ; toute autre valeur (ou absence) donne draft.
passwordstringNonMot de passe d'accès. Haché en SHA-256 côté serveur. Sa présence force is_password_protected à true.
is_password_protectedbooleanNonActive la protection par mot de passe. Mis automatiquement à true si password est fourni.
expires_atstring (ISO 8601)NonDate/heure d'expiration du coffre. Stockée telle quelle si fournie.
watermark_enabledbooleanNonActive le filigrane sur les documents. Pris en compte uniquement si booléen.
watermark_textstringNonTexte du filigrane.
require_ndabooleanNonExige l'acceptation d'un NDA avant l'accès.
nda_textstringNonTexte du NDA présenté au visiteur.
require_email_verificationbooleanNonExige une vérification de l'e-mail du visiteur avant l'accès.
allowed_emailsstring[]NonListe d'adresses e-mail autorisées à accéder au coffre. Prise en compte uniquement si c'est un tableau.

Réponse

En cas de succès, l'API renvoie 201 Created avec l'objet coffre créé. La réponse contient un sous-ensemble de champs : id (UUID du coffre), slug (slug final, éventuellement suffixé), title, description, cover_color, cover_emoji, status (draft ou active), view_count et unique_viewers (initialisés à 0), expires_at et created_at. Les champs sensibles comme password_hash ne sont jamais renvoyés. L'en-tête X-Request-Id est inclus pour le traçage, ainsi que les en-têtes X-RateLimit-*.

Erreurs

CodeStatut HTTPQuandComment résoudre
validation_error400Le corps n'est pas un objet JSON, ou title est absent / vide / non-chaîne.Envoyez un corps JSON valide avec un title non vide.
missing_api_key401En-tête Authorization absent.Ajoutez Authorization: Bearer cof_live_... (ou cof_test_...).
invalid_api_key401Clé API malformée, inconnue ou révoquée.Vérifiez le préfixe et la validité de la clé dans la console.
scope_missing403La clé ne porte pas le scope transfers:write.Régénérez une clé incluant le scope transfers:write.
rate_limited429Quota de requêtes par minute du workspace dépassé (classe write).Respectez l'en-tête Retry-After puis réessayez ; voir la doc rate limits.
internal_error500Erreur d'insertion en base de données.Réessayez ; si le problème persiste, contactez le support avec le request_id.

Voir aussi

GET/v1/coffresListe les coffres du workspace (jusqu'à 200, triés du plus récent au plus ancien). Scope requis : transfers:read.POST/v1/coffres/{id}/sectionsAjoute une section organisationnelle à un coffre existant.POST/v1/coffres/{id}/itemsAjoute un document ou élément à un coffre existant.