REST API · v1
Documentation de l’API
Envoyez des portraits via une API asynchrone, utilisez votre portefeuille de crédits existant et suivez chaque tâche et chaque débit.
Espace développeurConnectez votre application avec un assistant IA
Copiez cette invite dans ChatGPT, Claude, Cursor ou votre assistant de programmation. Il vous posera des questions sur votre environnement technique, puis vous guidera dans la configuration des identifiants, la vérification du solde, l’envoi d’une tâche et la vérification du résultat.
Vous n’avez pas besoin de communiquer votre clé API à l’IA. L’invite vous guidera pour la configurer dans l’environnement de votre propre serveur.
Lire l’invite complète / copier manuellement
Facturation
API : 1 crédit par test réussi. Site web : 10 crédits par test. Les deux utilisent le même portefeuille. La création d’une tâche API réserve 1 crédit ; un échec définitif le rembourse une seule fois.
Envoyez Authorization: Bearer avec l’autorisation requise. Pour réessayer d’envoyer les mêmes octets d’image, utilisez la même Idempotency-Key. Si vous la réutilisez avec des données différentes, la réponse sera HTTP 409. Les consultations ne consomment pas de crédits.
Points de terminaison
| HTTP | Autorisations |
|---|---|
| POST /api/v1/face-age/jobs | face-age:write |
| GET /api/v1/face-age/jobs/{id} | face-age:read |
| GET /api/v1/credits | credits:read |
| GET /api/v1/usage?page=1&pageSize=20 | usage:read |
Créer une tâche
Utilisez multipart/form-data avec un seul fichier image (JPEG, PNG ou WebP, jusqu’à 5 MB) et le champ de consentement ci-dessous. Seuls les adultes qui envoient leur propre photo avec leur consentement peuvent utiliser ce point de terminaison. Les URL distantes et les paramètres supplémentaires sont refusés. Générez une nouvelle clé d’idempotence uniquement pour un nouveau test logique.
# Générez et enregistrez une clé pour chaque nouveau test ; en cas de nouvelle tentative, exécutez uniquement la commande curl ci-dessous avec la clé et l’image d’origine.
IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST 'https://fahrface.org/api/v1/face-age/jobs' \
-H "Authorization: Bearer $FAHRFACE_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-F 'image=@portrait.jpg' \
-F 'consent=appearance-age-2026-10-21'{
"code": 0,
"message": "ok",
"data": {
"id": "JOB_ID",
"status": "queued",
"age": null,
"creditsCost": 1,
"billingStatus": "reserved"
}
}Consulter les résultats
La création renvoie HTTP 202 et un ID de tâche. Consultez le statut toutes les 10–15 secondes. queued, processing et retrying sont des états non définitifs ; succeeded et failed sont des états définitifs. Le réveil de HF peut prendre plusieurs minutes. Les tâches ont un délai limite de 20 minutes ; un bail de travailleur actif peut retarder la récupération finale de quatre minutes supplémentaires au maximum.
curl 'https://fahrface.org/api/v1/face-age/jobs/JOB_ID' \
-H "Authorization: Bearer $FAHRFACE_API_KEY"Erreurs et limites
Les réponses utilisent code/message/data. HTTP 400 : requête ou consentement invalide ; 401 : clé invalide/expirée ; 403 : autorisation manquante ; 402 : crédits insuffisants ; 404 : tâche inexistante ou non détenue par votre compte ; 409 : données modifiées ; 413/415 : taille/type d’image invalide ; 429 : limite de requêtes, de tâches simultanées ou de budget atteinte ; 503 : service indisponible. Respectez Retry-After, réutilisez la même clé d’idempotence et examinez message avant de réessayer.
Les clés expirent dans un délai maximal d’un an. Les budgets incluent les crédits réservés et utilisés avec succès ; les remboursements rétablissent le budget. Le compte autorise 60 requêtes/minute et au maximum deux tâches API actives.
Les portraits sont stockés temporairement dans un espace de stockage privé et supprimés après le traitement définitif, avec une suppression de secours au bout de 24 heures. HF traite la photo ; les estimations ne constituent ni un avis médical, ni une vérification d’identité, ni une preuve d’âge.