---
title: "Crée une voix depuis tes vrais textes (100 mots au moins, provenance:\"human\") — l’entretien vient ensuite"
method: POST
path: "/api/v1/voices"
tags: ["Voix"]
---

# Crée une voix depuis tes vrais textes (100 mots au moins, provenance:"human") — l’entretien vient ensuite

`POST /api/v1/voices`

## Request

- Base URL: `https://kaneme.com`
- URL: `https://kaneme.com/api/v1/voices`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `text` string, required: Tes vrais textes, écrits par toi : 100 mots au moins. Un entretien ne les remplace pas.
  - `name` string: Nom de la voix.
  - `provenance` 'human', required: « human » exigé : une voix apprise sur du texte de machine n’apprend pas une voix. Le refus est le travail de la route, pas un défaut.
  - `language` 'fr' | 'en': Langue de la voix, choisie par l’auteur. Sans elle, la langue est lue sur les textes. Une voix = une langue : un texte de l’autre langue est refusé (422), avant tout débit.

## Response `200`

Succès.

- VoiceCreated
  - `profileId` string, required
  - `name` string, required
  - `fileName` string, required
  - `active` boolean, required
  - `filledPlaceholder` boolean, required
  - `aboutMeChars` number, required
  - `referenceWords` number, required
  - `referenceTier` 'insuffisant' | 'partiel' | 'chiffre' | 'haute', required
  - `referenceNote` string, required
  - `canVerify` boolean, required
  - `nextAction` string, required
  - `creditsUsed` number, required
  - `language` 'fr' | 'en', nullable, required: Language of the voice: every reference and every measured text must be written in it. null until a text or a choice sets it.
  - `languageSource` 'confirmed' | 'detected' | 'none' | 'mixed', required: confirmed: chosen by the author; detected: read on the corpus; none: no text yet; mixed: legacy corpus in both languages with no choice — references are refused until the author chooses.

## Other responses

- `400`: Requête invalide (champ manquant, borne dépassée, curseur illisible).
- `401`: Clé absente, invalide ou révoquée.
- `402`: Crédits insuffisants, OU surface non ouverte à ce compte. code = "subscription_required" : L’API et le MCP se paient en crédits, et ce compte n’en a plus. Recharge ton solde pour réactiver ta clé. code = "credits_exhausted" : lire `window` pour savoir quoi faire (recharger, attendre la période, demander à un admin de relever le budget, relever le plafond de la clé).
- `404`: Ressource introuvable.
- `409`: Conflit d’état ou de clé d’idempotence.
- `422`: Le moteur s’abstient ou le corpus est insuffisant.
- `429`: Cadence dépassée (code « rate_limited »). La réponse porte X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Window et Retry-After — attends la fenêtre indiquée : un retry immédiat la prolonge. Les plafonds appliqués sont dans x-kaneme-rate-limits. Quand le refus vient d’un plafond PAR OPÉRATION (générer, créer un document ou un projet, déposer une source), ces nombres sont ceux de CETTE opération, pas ceux de la surface.
- `500`: Erreur interne.
- `503`: Service ou compteur temporairement indisponible.

---

[API](https://skmtc.dev/kaneme/apis/kaneme-api.md) · [All operations](https://skmtc.dev/kaneme/apis/kaneme-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaneme/apis/kaneme-api/revisions/752895651cd0?raw)
