---
title: "Relevé d’automatismes et écarts locaux — score historique, aucune probabilité d’attribution"
method: POST
path: "/api/v1/score"
tags: ["Mesure"]
---

# Relevé d’automatismes et écarts locaux — score historique, aucune probabilité d’attribution

`POST /api/v1/score`

## Request

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

## Request body

- object
  - `text` string, required: Texte à mesurer.
  - `profileId` string: Voix visée. Par défaut, la voix active du compte.

## Response `200`

Succès.

- VoiceScore
  - `writingMarkers` object
    - `total` number, required
    - `wordCount` number, required
    - `findings` object[], required
      - `kind` 'robot' | 'emDash' | 'placeholder' | 'emojiBullet' | 'hashtag', required
      - `label` string, required
      - `count` number, required
      - `terms` string[], required
      - `why` string, required
  - `authorTerms` object
    - `explicitRefusalsPresent` string[], required
    - `characteristicFormulas` string[], required
    - `optionalFormulas` string[], required
  - `profileId` string, required
  - `score` object, required
    - `score` number, required
    - `scored` boolean, required
    - `confidence` 'none' | 'low' | 'medium' | 'high', required
    - `wordCount` number, required
    - `version` string, required
    - `language` string, required
    - `markerLanguage` string, required
    - `inDomain` boolean, required
    - `robotWords` number, required
    - `signatureHits` number, required
    - `emDashes` number, required
    - `templateMarkers` number, required
    - `penalties` object, required
      - `robot` number, required
      - `emDash` number, required
      - `monotony` number, required
      - `template` number, required
      - `style` number, required
      - `signatureBonus` number, required
    - `avgSentenceLength` number, required
    - `sentenceVariety` number, required
    - `label` string, required
    - `drivers` object[]
      - `metric` 'avgSentenceLen' | 'sentenceLenStdev' | 'avgWordLen' | 'typeTokenRatio' | 'questionRate' | 'exclamationRate' | 'ellipsisRate' | 'emojiRate' | 'firstPersonRate' | 'listRate' | 'emphasisRate' | 'hedgeRate' | 'certaintyRate' | 'formalityRate' | 'connectorRate' | 'jargonRate', required
      - `label` string, required
      - `gap` number, required
  - `measures` string, required
  - `authorshipVia` 'verify', required
  - `labelUnavailable` 'too_short' | 'unsupported_language' | 'band_not_discriminating' | 'band_never_measured'
  - `dimensions` object[], required: Sur quoi le texte s’écarte de la voix : rythme, lexique, structure, signature. Ce n’est PAS la décomposition de score : corriger les quatre dimensions à 100 ne produit pas un score de 100.
    - `passages` object[]
      - `start` number, required
      - `end` number, required
      - `quote` string, required
      - `observation` string, required
      - `basis` 'reference' | 'preference' | 'observation', required
    - `id` 'rythme' | 'lexique' | 'structure' | 'signature', required
    - `label` string, required
    - `measured` boolean, required
    - `score` number, nullable, required
    - `detail` string, required
  - `dimensionsVersion` string, required

## 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)
