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

# Reseller Guide

> Advanced request fields available exclusively to Bodyguard reseller partners.

<Warning>
  This documentation applies exclusively to Bodyguard resellers and partners. If you are a direct customer, you can safely ignore this page.
</Warning>

Reseller partners use the same three analyze endpoints as everyone else (`/analyze/v1/text`, `/analyze/v1/image`, `/analyze/v1/username`). The only difference: reseller API keys unlock a set of additional fields in the request body that tune how each endpoint behaves.

Bodyguard configures a set of defaults for each organization and channel — industry vertical, language preferences, and many other advanced settings tailored to your use case. Reseller API keys let you override some of these defaults on a per-call basis, giving you fine-grained control when your traffic requires it. Settings not overridden in a request continue to use the values Bodyguard has configured for your channel.

This page documents every reseller field. All fields are optional — pass only what you need.

<Note>
  These fields require a reseller API key. Standard API keys that send them will receive an error. If you are not sure which type of key you hold, contact your Bodyguard account manager.
</Note>

## Where each field applies

| Field                                               | Text | Image | Username |
| --------------------------------------------------- | :--: | :---: | :------: |
| [`industry`](#industry)                             |  Yes |  Yes  |    Yes   |
| [`defaultLanguage`](#defaultlanguage)               |  Yes |  Yes  |    Yes   |
| [`customerContext`](#customercontext)               |   —  |  Yes  |    Yes   |
| [`classificationsEnabled`](#classificationsenabled) |   —  |  Yes  |     —    |
| [`ocrEnabled`](#ocrenabled)                         |   —  |  Yes  |     —    |

Fields passed on endpoints where they don't apply are ignored.

***

## `industry`

Sets the industry vertical of your platform. Bodyguard uses this to adapt the analysis model's thresholds and context — for example, weapon references in `GAMING` are treated very differently from weapon references in `MEDIA`.

| Value                      | Description                                |
| -------------------------- | ------------------------------------------ |
| `INDUSTRY_MEDIA`           | News, broadcasting, editorial platforms    |
| `INDUSTRY_SPORT`           | Sports clubs, leagues, fan communities     |
| `INDUSTRY_GAMING`          | Games, esports, streaming                  |
| `INDUSTRY_BRAND`           | Brand social accounts, product communities |
| `INDUSTRY_SOCIAL_PLATFORM` | General-purpose social networks            |
| `INDUSTRY_TECH_PROVIDER`   | SaaS and developer platforms               |
| `INDUSTRY_OTHER`           | Anything that doesn't fit the above        |

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

***

## `defaultLanguage`

An ISO 639-1 language code that tells Bodyguard which language your content is most likely in. This does **not** force the language — auto-detection still runs on every piece of content. When the detector is confident (for example, clearly Arabic text), it uses the detected language. When the signal is weak or ambiguous (short texts, emoji only, content that could plausibly be one of several languages), the `defaultLanguage` tips the decision in its favour.

Set it to the language your channel is predominantly in to improve detection accuracy on borderline cases.

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

***

## `customerContext`

A free-form English description of the context in which your content is being moderated. The model uses it as an extra hint to disambiguate content whose meaning depends on the surrounding platform, audience, or editorial conventions.

Applies to `/analyze/v1/image` and `/analyze/v1/username`.

Typical things worth mentioning:

* The type of platform and its audience (news site, sports club, gaming community, brand profile…).
* Whether content is expected to include specific visual elements or usernames patterns (weapons in a combat game, nudity in an art publication, alcohol in a bar-owner brand account…).
* Editorial or cultural conventions that would be surprising without context.

Keep it general and stable across requests — this is meant to describe your channel, not each individual piece of content. Aim for **512 to 1,024 characters** and write in **English** for best results.

```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`

Restricts image analysis to a subset of the [standard image taxonomy](/en/documentation/taxonomy/image-classifications). Only the classifications listed in this field are evaluated and returned — every other label is ignored, even if the image would otherwise match.

This field overrides, for a single call, the list of classifications Bodyguard has configured for your organization, source, or channel. When it is omitted, Bodyguard falls back to that configured list.

Each entry is the technical name of a standard image classification (for example `"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"]
}
```

With the settings above, the response will only ever contain `WEAPONS` and/or `EXTREME_VIOLENCE_AND_GORE` in its `classifications` array. Other classifications such as `ALCOHOL` or `QR_CODE` will not be evaluated.

Enabling the `CSAM` classification *may incur additional pricing.*

***

## `ocrEnabled`

Controls whether OCR (optical character recognition) runs on image inputs. When set to `true`, Bodyguard extracts all text from the image and runs a single text analysis on the full extracted content — the same analysis as the `/analyze/v1/text` endpoint. *Additional pricing may apply.*

The OCR result is returned in the `ocrAnalysis` object of the image analysis response. It contains the extracted `text` and a `textAnalysis` object.

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

**Example response with OCR results:**

```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"
      }
    }
  }
}
```

***

## Full example

Combining all reseller fields on the image endpoint:

```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."
  }'
```
