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

# Modération de contenu

> Vérifiez le contenu pour vous assurer qu'il n'est pas nuisible ou inapproprié

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/apis/overview#authorization">API Key</a> of the Primary Profile.
      <br />
      <br />
      Format: <code>Authorization: Bearer API_KEY</code>
    </ParamField>
    {!noProfileKey && (profileKeyRequired ? <ParamField header="Profile-Key" type="string" required>
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField> : <ParamField header="Profile-Key" type="string">
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

<PlansAvailable plans={["premium"]} maxPackRequired={false} />

L'API de modération de contenu est conçue pour aider les développeurs à identifier le contenu textuel potentiellement nuisible ou inapproprié.
Ce point de terminaison analyse l'entrée textuelle et la catégorise en fonction de différents types de contenu préoccupant.

## Fonctionnalités clés

<ul className="custom-bullets">
  <li>Détection automatique de contenu nuisible.</li>
  <li>Plusieurs catégories de texte problématique.</li>
  <li>Intégration facile pour le filtrage de contenu.</li>
</ul>

## Comment cela fonctionne

Lorsque vous soumettez du texte au point de terminaison de modération, il utilise des modèles OpenAI pour analyser le contenu. L'API retourne ensuite les résultats indiquant si le texte tombe dans l'une des catégories problématiques définies.

## Catégories de contenu nuisible

L'API classe le texte dans les catégories suivantes :

| CATÉGORIE              | DESCRIPTION                                                                                                                                                                                                                                                                                                |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| hate                   | Contenu qui exprime, incite ou promeut la haine fondée sur la race, le genre, l'origine ethnique, la religion, la nationalité, l'orientation sexuelle, le statut de handicap ou la caste. Le contenu haineux visant des groupes non protégés (par exemple, les joueurs d'échecs) constitue du harcèlement. |
| hate/threatening       | Contenu haineux qui inclut également de la violence ou des dommages graves envers le groupe ciblé en raison de la race, du genre, de l'origine ethnique, de la religion, de la nationalité, de l'orientation sexuelle, du statut de handicap ou de la caste.                                               |
| harassment             | Contenu qui exprime, incite ou promeut un langage de harcèlement envers toute cible.                                                                                                                                                                                                                       |
| harassment/threatening | Contenu de harcèlement qui inclut également de la violence ou des dommages graves envers toute cible.                                                                                                                                                                                                      |
| self-harm              | Contenu qui promeut, encourage ou décrit des actes d'automutilation, tels que le suicide, la coupure et les troubles alimentaires.                                                                                                                                                                         |
| self-harm/intent       | Contenu où le locuteur exprime qu'il pratique ou a l'intention de pratiquer des actes d'automutilation, tels que le suicide, la coupure et les troubles alimentaires.                                                                                                                                      |
| self-harm/instructions | Contenu qui encourage à commettre des actes d'automutilation, tels que le suicide, la coupure et les troubles alimentaires, ou qui donne des instructions ou des conseils sur la manière de commettre de tels actes.                                                                                       |
| sexual                 | Contenu destiné à susciter l'excitation sexuelle, comme la description d'activités sexuelles, ou qui promeut des services sexuels (à l'exclusion de l'éducation sexuelle et du bien-être).                                                                                                                 |
| sexual/minors          | Contenu sexuel qui inclut une personne de moins de 18 ans.                                                                                                                                                                                                                                                 |
| violence               | Contenu qui décrit la mort, la violence ou des blessures physiques.                                                                                                                                                                                                                                        |
| violence/graphic       | Contenu qui décrit la mort, la violence ou des blessures physiques avec des détails graphiques.                                                                                                                                                                                                            |

## Utilisation et bonnes pratiques

1. **Longueur de texte optimale** : pour de meilleurs résultats, nous vous recommandons de diviser les textes longs en petits fragments. Visez des segments de moins de 2 000 caractères chacun.
2. **Intégration** : utilisez cette API pour signaler automatiquement le contenu potentiellement problématique dans vos applications, forums ou plateformes de contenu généré par les utilisateurs.
3. **Action sur les résultats** : en fonction de la sortie de l'API, vous pouvez mettre en œuvre des actions appropriées telles que le filtrage de contenu, les avertissements aux utilisateurs ou des processus de révision supplémentaires.

## Paramètres d'en-tête

<HeaderAPI noProfileKey={true} />

## Paramètres du corps

<ParamField body="text" type="string">
  Le texte à analyser pour la modération.
</ParamField>

<ParamField body="imageUrl" type="string">
  L'URL de l'image. Doit commencer par `https://`.
</ParamField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl --location 'https://api.ayrshare.com/api/validate/moderation' \
  --header 'Authorization: Bearer API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
      "text": "Let'\''s kill '\''em all"
  }'
  ```

  ```javascript JavaScript theme={"system"}
  const url = "https://api.ayrshare.com/api/validate/moderation";
  const apiKey = "API_KEY"; // Replace with your actual API key

  const data = {
    text: "Let's kill 'em all",
  };

  fetch(url, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(data),
  })
    .then((response) => response.json())
    .then((result) => console.log(result))
    .catch((error) => console.error("Error:", error));
  ```

  ```python Python theme={"system"}
  import requests

  url = 'https://api.ayrshare.com/api/validate/moderation'
  api_key = 'API_KEY'  # Replace with your actual API key

  headers = {
      'Authorization': f'Bearer {api_key}',
      'Content-Type': 'application/json'
  }

  data = {
      'text': "Let's kill 'em all"
  }

  response = requests.post(url, json=data, headers=headers)

  if response.status_code == 200:
      result = response.json()
      print(result)
  else:
      print(f"Error: {response.status_code}")
      print(response.text)
  ```

  ```php PHP theme={"system"}
  <?php

  $url = 'https://api.ayrshare.com/api/validate/moderation';
  $apiKey = 'API_KEY';  // Replace with your actual API key

  $data = [
      'text' => "Let's kill 'em all"
  ];

  $headers = [
      'Authorization: Bearer ' . $apiKey,
      'Content-Type: application/json'
  ];

  $ch = curl_init($url);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

  $response = curl_exec($ch);

  if (curl_errno($ch)) {
      echo 'Error: ' . curl_error($ch);
  } else {
      $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      if ($httpCode == 200) {
          $result = json_decode($response, true);
          print_r($result);
      } else {
          echo "Error: HTTP Code " . $httpCode . "\n";
          echo $response;
      }
  }
  ```

  ```go Go theme={"system"}
  package main

  import (
  	"bytes"
  	"encoding/json"
  	"fmt"
  	"io/ioutil"
  	"net/http"
  )

  func main() {
  	url := "https://api.ayrshare.com/api/validate/moderation"
  	apiKey := "API_KEY" // Replace with your actual API key

  	// Create the request body
  	requestBody, err := json.Marshal(map[string]string{
  		"text": "Let's kill 'em all",
  	})
  	if err != nil {
  		fmt.Println("Error creating request body:", err)
  		return
  	}

  	// Create a new request
  	req, err := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))
  	if err != nil {
  		fmt.Println("Error creating request:", err)
  		return
  	}

  	// Set headers
  	req.Header.Set("Authorization", "Bearer "+apiKey)
  	req.Header.Set("Content-Type", "application/json")

  	// Send the request
  	client := &http.Client{}
  	resp, err := client.Do(req)
  	if err != nil {
  		fmt.Println("Error sending request:", err)
  		return
  	}
  	defer resp.Body.Close()

  	// Read the response
  	body, err := ioutil.ReadAll(resp.Body)
  	if err != nil {
  		fmt.Println("Error reading response:", err)
  		return
  	}

  	// Check the status code
  	if resp.StatusCode == http.StatusOK {
  		fmt.Println("Response:")
  		fmt.Println(string(body))
  	} else {
  		fmt.Printf("Error: Status Code %d\n", resp.StatusCode)
  		fmt.Println(string(body))
  	}
  }
  ```

  ```csharp C# theme={"system"}
  using System;
  using System.Net.Http;
  using System.Text;
  using System.Threading.Tasks;
  using System.Text.Json;

  class Program
  {
      static async Task Main(string[] args)
      {
          string url = "https://api.ayrshare.com/api/validate/moderation";
          string apiKey = "API_KEY";  // Replace with your actual API key

          var data = new
          {
              text = "Let's kill 'em all"
          };

          using (var client = new HttpClient())
          {
              client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

              var content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json");

              try
              {
                  HttpResponseMessage response = await client.PostAsync(url, content);

                  if (response.IsSuccessStatusCode)
                  {
                      string result = await response.Content.ReadAsStringAsync();
                      Console.WriteLine("Response:");
                      Console.WriteLine(result);
                  }
                  else
                  {
                      Console.WriteLine($"Error: {response.StatusCode}");
                      Console.WriteLine(await response.Content.ReadAsStringAsync());
                  }
              }
              catch (HttpRequestException e)
              {
                  Console.WriteLine($"Request error: {e.Message}");
                  Console.WriteLine($"InnerException: {e.InnerException?.Message}"); // Include inner exception details for more information
              }
          }
      }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Response theme={"system"}
  {
    "status": "success",
    "text": "Let's kill 'em all",
    "moderation": [
      {
        "flagged": true,
        "categories": {
          "sexual": false,
          "hate": false,
          "harassment": false,
          "self-harm": false,
          "sexual/minors": false,
          "hate/threatening": false,
          "violence/graphic": false,
          "self-harm/intent": false,
          "self-harm/instructions": false,
          "harassment/threatening": false,
          "violence": true
        },
        "categoryScores": {
          "sexual": 0.00002128273445123341,
          "hate": 0.027735227718949318,
          "harassment": 0.08523011207580566,
          "self-harm": 0.0000021838018255948555,
          "sexual/minors": 1.924875903114298e-7,
          "hate/threatening": 0.0063302298076450825,
          "violence/graphic": 0.00024857991957105696,
          "self-harm/intent": 7.833968993509188e-7,
          "self-harm/instructions": 8.686130570367823e-8,
          "harassment/threatening": 0.07459623366594315,
          "violence": 0.9833663702011108
        }
      }
    ]
  }
  ```

  ```json 400: Bad Request theme={"system"}
  {
    "action": "generate",
    "status": "error",
    "code": 331,
    "message": "There was an issue with the AI processing. Please try again and if the issue persists, contact us."
  }
  ```
</ResponseExample>
