Documentation API
API Rephrase
Humanisez vos textes IA depuis vos scripts, vos produits, vos automatisations (n8n, Make, Zapier). Mêmes crédits qu’en web, pas d’abonnement supplémentaire.
TL;DR
- 1. Créez un compte et achetez un pack de crédits.
- 2. Générez une clé API depuis
/dashboard/api-keys. - 3. Envoyez votre texte en POST sur
/v1/api/humanizeavec le headerAuthorization: Bearer rph_live_.... - 4. Recevez le texte humanisé en JSON. Coût : 1 crédit par tranche de 100 mots.
1. URL de base
Toutes les requêtes publiques partent de :
https://api.rephrase.frTous les endpoints API sont préfixés /v1/api/. L’API est versionnée : la v1 est stable et engage un support d’au moins 12 mois après toute évolution breaking.
2. Authentification
L’API utilise des clés API Bearer. Créez-en une depuis votre espace, copiez-la une seule fois (elle ne sera plus jamais affichée), puis injectez-la dans chaque requête :
Authorization: Bearer rph_live_xxxxxxxxxxxxxxxxxxxxxxxxFormat des clés : rph_live_ suivi de 48 caractères hex. Les clés sont uniques et révocables à tout moment depuis votre espace.
Ne jamais exposer votre clé côté client. Toute requête vers l’API doit partir d’un backend que vous contrôlez. Une clé fuitée dans un bundle JavaScript doit être révoquée immédiatement.
3. Humaniser un texte
/v1/api/humanizeParamètres (body JSON)
| Champ | Type | Requis | Description |
|---|---|---|---|
inputText | string | requis | Texte à humaniser (3 à 8 000 mots). |
presetSlug | string | optionnel | Slug d’un preset. Voir GET /v1/public/presets. |
customVoiceId | number | optionnel | ID d’une plume personnalisée. Créez-la via POST /v1/api/voices. |
Exemple curl
curl -X POST https://api.rephrase.fr/v1/api/humanize \
-H "Authorization: Bearer rph_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"inputText": "Il est important de noter que...",
"presetSlug": "web_article_seo"
}'Exemple Node.js (fetch)
const res = await fetch('https://api.rephrase.fr/v1/api/humanize', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.REPHRASE_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
inputText: 'Votre texte IA ici...',
presetSlug: 'web_article_seo'
})
});
if (!res.ok) {
const err = await res.json();
throw new Error(err.error);
}
const data = await res.json();
console.log(data.output);Exemple Python (requests)
import os, requests
resp = requests.post(
'https://api.rephrase.fr/v1/api/humanize',
headers={
'Authorization': f'Bearer {os.environ["REPHRASE_API_KEY"]}',
'Content-Type': 'application/json'
},
json={
'inputText': 'Votre texte IA ici...',
'presetSlug': 'web_article_seo'
}
)
resp.raise_for_status()
print(resp.json()['output'])Réponse (200 OK)
{
"humanizationId": 12345,
"output": "Votre texte, humanisé et prêt à publier.",
"creditsUsed": 3,
"wordCount": 287,
"balance": 197,
"modelUsed": "gpt-4.1-mini"
}502 provider_error avec { refunded: 3 }.4. Gestion des plumes
Une plume (Custom Voice) est une signature stylistique extraite de 3 à 5 de vos textes. Une fois créée, réutilisez-la dans chaque humanisation via customVoiceId.
Créer une plume
/v1/api/voicescoût : 1 crédit d’analysecurl -X POST https://api.rephrase.fr/v1/api/voices \
-H "Authorization: Bearer rph_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "moi-linkedin",
"samples": [
"Premier texte que j\'ai écrit, 100+ mots...",
"Deuxième texte...",
"Troisième texte..."
]
}'Contraintes : 3 à 5 samples, 300 mots minimum au total. Les textes sont chiffrés au repos (AES-256-GCM) et ne sont jamais envoyés à un sous-traitant au-delà de l’analyse initiale.
Lister vos plumes
/v1/api/voices5. Consulter les crédits
/v1/api/me/credits{
"balance": 197,
"lifetime_purchased": 500,
"lifetime_used": 303,
"lifetime_gifted": 3
}6. Codes d’erreur
| Code HTTP | error | Signification |
|---|---|---|
| 400 | invalid_body | Body invalide ou manquant. |
| 400 | text_too_short | Texte de moins de 3 mots. |
| 400 | text_too_long | Texte de plus de 8 000 mots. |
| 401 | unauthorized | Clé API invalide, manquante ou révoquée. |
| 402 | insufficient_credits | Solde insuffisant pour cette requête. |
| 422 | content_filter | Contenu refusé par le filtre de modération du fournisseur. Pas de refund. |
| 429 | rate_limited | Trop de requêtes sur la clé. Attendez 60 secondes. |
| 502 | provider_error | Échec du fournisseur IA. Les crédits sont remboursés automatiquement. |
| 500 | internal_error | Erreur inattendue côté Rephrase. Signalez-nous. |
7. Rate limits
30 requêtes par minute et par clé API, tous endpoints confondus. En cas de dépassement, l’API renvoie 429 rate_limited.
Les headers de réponse standard RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset (draft IETF) sont exposés. Pour un usage à fort volume, parallélisez en plusieurs clés (1 par service/script).
8. Bonnes pratiques
- Stockez la clé dans une variable d’environnement, jamais dans le code source ou dans un dépôt git. Utilisez
process.env.REPHRASE_API_KEYou l’équivalent. - Une clé par service, pas une clé partagée. Si un service est compromis, vous révoquez seulement la sienne.
- Toujours vérifier le code HTTP avant de traiter la réponse. En cas de
502 provider_error, retry après 2-3 secondes (les crédits ont déjà été remboursés). - Batch vos requêtes en série, pas en parallèle massif. 30 req/min, c’est 1 toutes les 2 secondes. Pour 1000 textes, prévoyez ~35 minutes.
- Surveillez votre solde via
GET /v1/api/me/creditsdans vos jobs long-running, pour anticiper un402 insufficient_credits.
Prêt à intégrer Rephrase ?
3 crédits offerts à l’inscription pour tester votre intégration avant d’acheter.