> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bodyguard.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Guide Revendeur

> Champs de requête avancés réservés aux partenaires revendeurs de Bodyguard.

<Warning>
  Cette documentation s'applique exclusivement aux revendeurs et partenaires Bodyguard. Si vous êtes un client direct, vous pouvez ignorer cette page.
</Warning>

Les partenaires revendeurs utilisent les trois mêmes endpoints d'analyse que tout le monde (`/analyze/v1/text`, `/analyze/v1/image`, `/analyze/v1/username`). Seule différence : les clés API revendeur déverrouillent un ensemble de champs supplémentaires dans le corps de la requête qui ajustent le comportement de chaque endpoint.

Bodyguard configure un ensemble de paramètres par défaut pour chaque organisation et canal — secteur d'activité, préférences de langue, et de nombreux autres paramètres avancés adaptés à votre cas d'usage. Les clés API revendeur vous permettent de remplacer certains de ces paramètres par défaut à chaque appel, offrant un contrôle précis lorsque votre trafic le requiert. Les paramètres non remplacés dans une requête continuent d'utiliser les valeurs configurées par Bodyguard pour votre canal.

Cette page documente chaque champ revendeur. Tous les champs sont optionnels — ne passez que ce dont vous avez besoin.

<Note>
  Ces champs nécessitent une clé API revendeur. Les clés API standard qui les envoient recevront une erreur. Si vous n'êtes pas sûr du type de clé dont vous disposez, contactez votre account manager Bodyguard.
</Note>

## Où s'applique chaque champ

| Champ                                               | Texte | Image | Nom d'utilisateur |
| --------------------------------------------------- | :---: | :---: | :---------------: |
| [`industry`](#industry)                             |  Oui  |  Oui  |        Oui        |
| [`defaultLanguage`](#defaultlanguage)               |  Oui  |  Oui  |        Oui        |
| [`customerContext`](#customercontext)               |   —   |  Oui  |        Oui        |
| [`classificationsEnabled`](#classificationsenabled) |   —   |  Oui  |         —         |
| [`ocrEnabled`](#ocrenabled)                         |   —   |  Oui  |         —         |

Les champs passés à des endpoints auxquels ils ne s'appliquent pas sont ignorés.

***

## `industry`

Définit la verticale industrielle de votre plateforme. Bodyguard s'en sert pour adapter les seuils et le contexte du modèle d'analyse — par exemple, les références aux armes dans `INDUSTRY_GAMING` sont traitées très différemment de celles dans `INDUSTRY_MEDIA`.

| Valeur                     | Description                                        |
| -------------------------- | -------------------------------------------------- |
| `INDUSTRY_MEDIA`           | Presse, radiodiffusion, plateformes éditoriales    |
| `INDUSTRY_SPORT`           | Clubs sportifs, ligues, communautés de fans        |
| `INDUSTRY_GAMING`          | Jeux vidéo, esport, streaming                      |
| `INDUSTRY_BRAND`           | Comptes sociaux de marques, communautés produit    |
| `INDUSTRY_SOCIAL_PLATFORM` | Réseaux sociaux généralistes                       |
| `INDUSTRY_TECH_PROVIDER`   | Plateformes SaaS et pour développeurs              |
| `INDUSTRY_OTHER`           | Tout ce qui ne rentre pas dans les cases ci-dessus |

```json theme={null}
{
  "channelId": "__YOUR_CHANNEL_ID__",
  "text": "get rekt noob",
  "publishedAt": "2026-04-23T10:30:00.000Z",
  "industry": "INDUSTRY_GAMING"
}
```

***

## `defaultLanguage`

Un code de langue ISO 639-1 qui indique à Bodyguard dans quelle langue se trouve probablement votre contenu. Cela **ne force pas** la langue — la détection automatique continue de s'exécuter sur chaque contenu. Quand le détecteur est confiant (par exemple, un texte clairement en arabe), il utilise la langue détectée. Quand le signal est faible ou ambigu (textes courts, emojis seuls, contenus qui pourraient plausiblement relever de plusieurs langues), le `defaultLanguage` fait pencher la décision en sa faveur.

Réglez-le sur la langue majoritaire de votre canal pour améliorer la précision de détection dans les cas limites.

```json theme={null}
{
  "channelId": "__YOUR_CHANNEL_ID__",
  "text": "lol",
  "publishedAt": "2026-04-23T10:30:00.000Z",
  "defaultLanguage": "fr"
}
```

***

## `customerContext`

Une description libre, en anglais, du contexte dans lequel votre contenu est modéré. Le modèle s'en sert comme indication supplémentaire pour lever l'ambiguïté sur des contenus dont le sens dépend de la plateforme, de l'audience ou des conventions éditoriales environnantes.

S'applique à `/analyze/v1/image` et `/analyze/v1/username`.

Choses utiles à mentionner :

* Le type de plateforme et son audience (site d'actualités, club sportif, communauté de jeu, profil de marque…).
* Si le contenu est censé inclure des éléments visuels ou des patterns de noms d'utilisateur spécifiques (armes dans un jeu de combat, nudité dans une publication artistique, alcool sur le compte d'un bar…).
* Des conventions éditoriales ou culturelles qui seraient surprenantes sans contexte.

Gardez-le général et stable d'une requête à l'autre — il est destiné à décrire votre canal, pas chaque contenu individuel. Visez **512 à 1 024 caractères** et rédigez en **anglais** pour de meilleurs résultats.

```json theme={null}
{
  "channelId": "__YOUR_CHANNEL_ID__",
  "imageUrl": "https://cdn.example.com/uploads/screenshot.jpg",
  "publishedAt": "2026-04-23T10:30:00.000Z",
  "customerContext": "The provided images come from a peer-to-peer handyman marketplace where users share photos of their workspaces before, during, and after a service. Expect visual elements that are typical of manual work: construction and DIY tools such as utility knives, saws, and nail guns."
}
```

***

## `classificationsEnabled`

Restreint l'analyse d'image à un sous-ensemble de la [taxonomie d'image standard](/fr/documentation/taxonomy/image-classifications). Seules les classifications listées dans ce champ sont évaluées et renvoyées — toute autre étiquette est ignorée, même si l'image aurait sinon correspondu.

Ce champ remplace, pour un seul appel, la liste des classifications que Bodyguard a configurée pour votre organisation, source ou channel. Lorsqu'il est omis, Bodyguard utilise cette liste configurée.

Chaque entrée est le nom technique d'une classification d'image standard (par exemple `"WEAPONS"`, `"CSAM"`, `"GRAPHIC_NUDITY"`).

```json theme={null}
{
  "channelId": "__YOUR_CHANNEL_ID__",
  "imageUrl": "https://cdn.example.com/uploads/screenshot.jpg",
  "publishedAt": "2026-04-23T10:30:00.000Z",
  "classificationsEnabled": ["WEAPONS", "EXTREME_VIOLENCE_AND_GORE"]
}
```

Avec les paramètres ci-dessus, la réponse ne contiendra jamais que `WEAPONS` et/ou `EXTREME_VIOLENCE_AND_GORE` dans son tableau `classifications`. D'autres classifications telles que `ALCOHOL` ou `QR_CODE` ne seront pas évaluées.

Activer la classification `CSAM` *peut entraîner une tarification supplémentaire.*

***

## `ocrEnabled`

Contrôle l'exécution de l'OCR (reconnaissance optique de caractères) sur les images en entrée. Lorsqu'il est défini à `true`, Bodyguard extrait tout le texte de l'image et exécute une analyse de texte unique sur l'ensemble du contenu extrait — la même analyse que l'endpoint `/analyze/v1/text`. *Une tarification supplémentaire peut s'appliquer.*

Le résultat d'OCR est renvoyé dans l'objet `ocrAnalysis` de la réponse d'analyse d'image. Il contient le `text` extrait et un objet `textAnalysis`.

```json theme={null}
{
  "channelId": "__YOUR_CHANNEL_ID__",
  "imageUrl": "https://cdn.example.com/uploads/screenshot.jpg",
  "publishedAt": "2026-04-23T10:30:00.000Z",
  "ocrEnabled": true
}
```

**Exemple de réponse avec résultats d'OCR :**

```json theme={null}
{
  "imageAnalysis": {
    "classifications": ["GRAPHIC_VIOLENCE"],
    "ocrAnalysis": {
      "text": "you're going to regret this",
      "textAnalysis": {
        "type": "HATEFUL",
        "classifications": ["THREAT"],
        "severity": "HIGH",
        "directedAt": "USER",
        "language": "en",
        "recommendedAction": "REMOVE"
      }
    }
  }
}
```

***

## Exemple complet

Combinant tous les champs revendeur sur l'endpoint image :

```bash cURL theme={null}
curl -X POST https://api.bodyguard.ai/analyze/v1/image \
  -H "Authorization: ApiKey <your-reseller-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "channelId": "__YOUR_CHANNEL_ID__",
    "imageUrl": "https://cdn.example.com/uploads/photo.jpg",
    "publishedAt": "2026-04-23T10:30:00.000Z",
    "industry": "INDUSTRY_GAMING",
    "defaultLanguage": "en",
    "ocrEnabled": true,
    "classificationsEnabled": ["WEAPONS", "HATE_SPEECH_AND_SYMBOLS"],
    "customerContext": "Peer-to-peer handyman marketplace. Expect construction tools, messy rooms, and bathroom interiors — these must not be flagged as WEAPONS, VISUALLY_DISTURBING, or NUDITY. Flag only genuine policy violations. Audience is adults aged 25 to 55 in North America and Western Europe."
  }'
```
