API de détection de texte IA
Documentation complète pour intégrer l'API de détection IA de TruthScan dans vos applications.
Essayez sans code en visitant notre endpoint FastAPI : https://detect-text.truthscan.com/docs
Authentification
TruthScan utilise des clés API pour autoriser l'accès à l'API. Vous pouvez obtenir votre clé API en haut de la page dans notre portail développeur.
TruthScan attend que la clé API soit incluse dans toutes les requêtes API au serveur dans un corps de requête qui ressemble à ceci :
{
"key": "YOUR API KEY GOES HERE"
}Vous devez remplacer YOUR API KEY GOES HERE par votre clé API personnelle.
Pour les scénarios web socket, vous devrez envoyer votre Organization ID comme partie de l'url. Vous pouvez obtenir votre Organization ID en haut de la page dans notre portail développeur.
TruthScan attend que votre Organization ID soit inclus dans l'url de toutes les requêtes web socket. La documentation ressemblera à ceci :
wss://detect-text.truthscan.com/ws/$ORG_IDVous devez remplacer $ORG_ID par votre Organization ID personnelle.
Détecteur IA
Détecter
Cet endpoint vous permet de soumettre du texte pour détection IA. Au moins 200 mots sont recommandés pour une meilleure précision.
POST https://detect-text.truthscan.com/detectSeuil
Cet endpoint renvoie un score "result" de 1-100. Pour une meilleure précision, tout score sous 50 est considéré définitivement humain. 50-60 est possible IA. Plus de 60 est définitif IA. C'est le résultat le plus précis, avec une précision de 99%+.
Les scores pour d'autres détecteurs, tels que Writer et Copyleaks, sont approximatifs et pas aussi précis que le score "result" principal.
Sauts de ligne
Si vous envoyez des données en JSON, les sauts de ligne doivent être encodés comme \n à l'intérieur de la chaîne.
Exemple de requête
curl -X 'POST' \
'https://detect-text.truthscan.com/detect' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"text": "On Citizen science\nCitizen science involves the public participating in scientific research. This can take many forms, collecting data on local wildlife populations to analyzing astronomical images. Citizen science projects allow researchers to gather large amounts of data and engage the public in the process. By participating, individuals contribute to valuable research while gaining a deeper understanding of the scientific world around them.",
"key": "YOUR-API-KEY-GOES-HERE",
"model": "xlm_ud_detector",
"retry_count": 0
}'Ici, l'entrée de requête doit être inférieure à 30 000 mots.
Exemple de réponse
{
"id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
"input": "Citizen science involves the public participating in scientific research. This can take many forms, collecting data on local wildlife populations to analyzing astronomical images. Citizen science projects allow researchers to gather large amounts of data and engage the public in the process. By participating, individuals contribute to valuable research while gaining a deeper understanding of the scientific world around them.",
"model": "xlm_ud_detector",
"result": null,
"result_details": null,
"status": "pending",
"retry_count": 0
}La réponse contient l'ID assigné par le serveur du document. À ce stade, le document est maintenant en file d'attente pour traitement. Vous pouvez utiliser l'endpoint API /query pour interroger le statut de la requête de détection IA. Le temps moyen pour compléter une vérification de détection IA est entre 2-4 secondes. Cela peut prendre plus longtemps selon le nombre de mots.
Interroger
Cet endpoint accepte un id de document renvoyé par la requête /detect. Et renvoie le statut de la soumission du document ainsi que le résultat de l'opération de détection IA telle que gérée par divers détecteurs IA tiers.
POST https://detect-text.truthscan.com/queryExemple de requête
curl -X 'POST' \
'https://detect-text.truthscan.com/query' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"id": "DOCUMENT-ID-GOES-HERE"
}'Exemple de réponse
{
"id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
"model": "xlm_ud_detector",
"result": 12.0,
"result_details": {
"scoreGptZero": 50.0,
"scoreOpenAI": 0.0,
"scoreWriter": 0.0,
"scoreCrossPlag": 0.0,
"scoreCopyLeaks": 50.0,
"scoreSapling": 0.0,
"scoreContentAtScale": 0.0,
"scoreZeroGPT": 50.0,
"human": 88.0
},
"status": "done",
"retry_count": 0
}Ici, "result": 12.0 indique l'humanité de l'entrée. Cela signifie que étant donné qu'il est inférieur au seuil de 50%, le texte est définitivement humain. De même, les valeurs sous result_details indiquent l'humanité de l'entrée. Par exemple "scoreZeroGPT": 50.0 signifie que le texte est probablement 50% écrit par l'humain selon ZeroGPT. Il en va de même pour le reste des autres détecteurs.
Vérifier les crédits utilisateur
Cet endpoint accepte l'apikey de l'utilisateur via l'en-tête. Et renvoie les détails de crédit de l'utilisateur.
GET https://detect-text.truthscan.com/check-user-creditsExemple de requête
curl -X 'GET' \
'https://detect-text.truthscan.com/check-user-credits' \
-H 'apikey: YOUR API KEY GOES HERE' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'Exemple de réponse
{
"baseCredits": 10000,
"boostCredits": 1000,
"credits": 11000
}Détection IA niveau phrase
Le détecteur IA niveau phrase fonctionne sur un protocole basé sur WebSocket.
Voici les étapes nécessaires pour obtenir des résultats niveau phrase pour votre texte :
- Se connecter au WebSocket
- Écouter tous les événements reçus du WebSocket
- Envoyer une requête document_watch
- Recevoir un événement document_id
- Prendre l'id généré par la réponse document_id et soumettre un document pour détection IA
- Commencer à recevoir des événements document_chunk. Les événements document_chunk renverront chaque phrase avec le résultat niveau phrase
- Lorsque le document termine le traitement, vous recevrez un événement document_done
Se connecter au WebSocket
Cet endpoint vous permet d'établir la connexion WebSocket
wss://detect-text.truthscan.com/ws/$ORG_IDExemple de code
ws = new WebSocket("wss://detect-text.truthscan.com/ws/1722238709737x2194626580942121212");Écouter tous les événements reçus du WebSocket
Une fois la connexion WebSocket établie, écoutez les événements envoyés via la connexion WebSocket.
Exemple de code
ws.addEventListener("message", (event) => {
console.log("Message from server ", event.data);
});Envoyer une requête document_watch
Envoyer l'intérêt d'envoyer un document en envoyant une requête document_watch sur le WebSocket
Exemple de code
ws.send(JSON.stringify({
"event_type": "document_watch",
"api_key": "$API_KEY",
}))Recevoir un événement document_id
Après avoir envoyé un événement document_watch, le serveur renvoie un événement document_id.
Exemple de réponse
{
"event_type": "document_id",
"success": true,
"document_id": "512da191-166926922-44cb-81c6-191ae3a807aa"
}Soumettre une requête de détection IA
Prendre l'id généré par la réponse document_id et soumettre un document pour détection IA
POST https://detect-text.truthscan.com/detectExemple de requête
curl -X 'POST' \
'https://detect-text.truthscan.com/detect' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"text": "Citizen science involves the public participating in scientific research. This can take many forms, collecting data on local wildlife populations to analyzing astronomical images. Citizen science projects allow researchers to gather large amounts of data and engage the public in the process. By participating, individuals contribute to valuable research while gaining a deeper understanding of the scientific world around them.",
"key": "YOUR-API-KEY-GOES-HERE",
"model": "xlm_ud_detector",
"id": "512da191-166926922-44cb-81c6-191ae3a807aa"
}'Recevoir résultats niveau phrase
Commencer à recevoir des événements document_chunk. Les événements document_chunk renverront chaque phrase avec le résultat niveau phrase
Exemples de réponses
{
"event_type": "document_chunk",
"document_id": "512da191-166926922-44cb-81c6-191ae3a807aa",
"model": "xlm_ud_detector",
"chunk": "Citizen science involves the public in scientific research.",
"result": 0.714
}Lorsque le document termine le traitement, vous recevrez un événement document_done.
Exemples de réponses
{
"event_type": "document_done",
"document_id": "512da191-166926922-44cb-81c6-191ae3a807aa",
"model": "xlm_ud_detector"
}Gérer circonstances exceptionnelles
Si pour une raison quelconque le serveur rencontre une erreur lors de l'exécution de la détection IA, un événement document_error sera envoyé au client websocket. Le client devrait agir de manière appropriée, par exemple une UI affichera un message d'erreur.
Par exemple, le serveur enverra un code d'erreur REQUEST_TIMEOUT lorsqu'il prend plus de 20 secondes à travers les événements chunk.
{
"event_type": "document_error",
"document_id": "512da191-166926922-44cb-81c6-191ae3a807aa",
"error_code": "REQUEST_TIMEOUT",
"message": "Request timeout. Took 20 seconds."
}Annulations
Il y aura des instances où l'UI voudrait annuler l'opération. L'utilisateur décide de fermer la fenêtre, ou annule l'événement explicitement
Lorsque cela se produit, vous devriez envoyer un événement document_halt
Exemples de réponses
{
"event_type": "document_halt",
"document_id": "512da191-166926922-44cb-81c6-191ae3a807aa"
}Erreurs
La plupart des erreurs proviendront de paramètres incorrects envoyés à l'API. Vérifiez doublement les paramètres de chaque appel API pour vous assurer qu'il est correctement formaté, et essayez d'exécuter le code d'exemple fourni.
Les codes d'erreur génériques que nous utilisons sont conformes à la norme REST :
| Code d'erreur | Signification |
|---|---|
| 400 | Requête invalide -- Votre requête est invalide. |
| 403 | Interdit -- La clé API est invalide, ou il n'y a pas suffisamment de crédits (0.1 par mot). |
| 404 | Non trouvé -- La ressource spécifiée n'existe pas. |
| 405 | Méthode non autorisée -- Vous avez essayé d'accéder à une ressource avec une méthode invalide. |
| 406 | Non acceptable -- Vous avez demandé un format qui n'est pas JSON. |
| 410 | Disparu -- La ressource à cet endpoint a été supprimée. |
| 422 | Corps de requête invalide -- Votre corps de requête est formaté incorrectement ou invalide ou a des paramètres manquants. |
| 429 | Trop de requêtes -- Vous envoyez trop de requêtes ! Ralentissez ! |
| 500 | Erreur serveur interne -- Nous avons eu un problème avec notre serveur. Réessayez plus tard. |
| 503 | Service indisponible -- Nous sommes temporairement hors ligne pour maintenance. Veuillez réessayer plus tard. |
Problèmes courants et solutions
Problèmes d'authentification
"Échec de vérification utilisateur" (403)
Cause: Clé API invalide ou expirée
Solution:
- Vérifiez que votre clé API est correcte
- Vérifiez si votre clé API est active dans votre compte
- Essayez de régénérer votre clé API
"Pas assez de crédits" (403)
Cause: Crédits insuffisants pour traitement texte
Solution:
- Vérifiez vos crédits restants en utilisant /check-user-credits
- Achetez des crédits supplémentaires si nécessaire
- Utilisez des entrées texte plus courtes pour consommer moins de crédits
Problèmes de validation d'entrée
"Le texte d'entrée ne peut pas être vide" (400)
Cause: Texte vide ou uniquement espaces soumis
Solution:
- Assurez-vous que votre entrée texte n'est pas vide
- Supprimez tout espace de début/fin
- Vérifiez si l'encodage texte est correct
"L'email d'entrée est vide" (400)
Cause: Email manquant pour traitement URL
Solution:
- Fournissez une adresse email valide lors de la soumission d'URL
- Vérifiez que le format email est correct
Problèmes de traitement
"Timeout de requête" (WebSocket)
Cause: Traitement document a pris trop de temps (>120 secondes)
Solution:
- Essayez avec une entrée texte plus petite
- Vérifiez si le service connaît une charge élevée
- Réessayez la requête
Statut document "failed"
Cause: Traitement a échoué pour diverses raisons
Solution:
- Vérifiez si le texte d'entrée répond aux exigences minimales
- Vérifiez que le texte est dans un format supporté
- Essayez avec un modèle différent
- Contactez le support si le problème persiste
Problèmes de connexion WebSocket
Déconnexions
Cause: Problèmes réseau ou déconnexions serveur
Solution:
- Vérifiez votre connexion réseau
- Implémentez logique de reconnexion
- Vérifiez que l'URL WebSocket est correcte
"Utilisateur non trouvé" (WebSocket)
Cause: Organization ID invalide dans connexion WebSocket
Solution:
- Vérifiez que l'Organization ID est correct
- Assurez-vous que le compte utilisateur est actif
- Ré-authentifiez si nécessaire
Besoin d'aide ?
Pour plus d'informations sur l'utilisation de notre API ou pour le support technique, veuillez nous contacter.
Questions fréquemment posées sur l'API
Trouvez des réponses aux questions les plus courantes sur notre API de détection IA.