Documentation API

Intégrez Flowmerce
en quelques minutes

Deux façons d'intégrer Flowmerce à votre site e-commerce custom. Choisissez celle qui correspond à votre besoin.

Authentification

Toutes les requêtes API Flowmerce sont authentifiées via une clé API serveur. Deux formats sont acceptés selon l'endpoint :

HTTP headers
# Format Bearer (recommandé)
Authorization: Bearer flk_votre_cle_api

# OU format x-api-key (compatible /api/claims/create)
x-api-key: flk_votre_cle_api
⚠ Sécurité critique : votre clé API ne doit jamais apparaître côté navigateur (code source HTML, JavaScript client, DevTools). Gardez-la dans vos variables d'environnement serveur (FLOWMERCE_API_KEY). Aucun préfixe NEXT_PUBLIC_,VITE_, etc.

Générez et gérez vos clés depuis votre tableau de bord. Maximum 5 clés actives par compte. La valeur brute n'est affichée qu'une seule fois — copiez-la immédiatement.

Choisissez votre intégration

Deux scénarios selon que vous voulez garder la main sur le formulaire de retour ou que Flowmerce héberge tout pour vous.

Flux d'intégration

Le client remplit votre propre formulaire (sur votre site). Votre backend reçoit la demande, vérifie qu'elle est légitime, puis appelle Flowmerce. La clé API reste toujours côté serveur.

Flux serveur → serveur
[Navigateur client]
       │  POST /api/orders/return   (votre endpoint local)
       ▼
[Votre backend]
       │  1. Vérifie que la commande appartient bien à l'utilisateur
       │  2. Évite les doublons (claim déjà existant ?)
       │  3. Mappe les champs vers le format Flowmerce
       │
       │  POST /api/claims/create
       │  x-api-key: flk_xxx
       ▼
[Flowmerce]
       │  4. Validation, rate limit, vérification policy
       │  5. Création du claim + appel ML synchrone
       │  6. Auto-approve / auto-reject / pending
       │  7. Email automatique au client
       │
       │  201 { claim_id, status, message }
       ▼
[Votre backend]
       │  8. Sauvegarde claim_id pour traçabilité
       │
       │  200 OK
       ▼
[Navigateur client]
       9. Affiche "Demande enregistrée" au client

Endpoint

POSThttps://flowmerce.app/api/claims/create

Champs obligatoires

ChampTypeDescription
shop_idrequis
stringIdentifiant unique de votre boutique (libre, ex: ma-boutique)
order_idrequis
stringIdentifiant de la commande dans votre système
customer_namerequis
stringNom complet du client
customer_emailrequis
stringEmail du client (format vérifié)
product_namerequis
stringNom du produit concerné
reasonrequis
enumDEFECTIVE | WRONG_ITEM | DESCRIPTION | CHANGE_MIND
desired_resolutionrequis
enumEXCHANGE | REFUND | REPAIR (choix du client)
descriptionrequis
stringDescription du problème (10–2000 caractères, pas de HTML)

Champs optionnels (améliorent fortement la prédiction IA)

customer_phone
stringTéléphone client (renforce la détection de fraude)
customer_age
numberÂge du client
customer_gender
stringGenre du client
customer_wilaya
stringWilaya (région) du client
product_category
stringCatégorie produit (ex: Electronics, Clothing)
product_price
numberPrix unitaire en DA
product_quantity
numberQuantité commandée
order_total
numberMontant total de la commande en DA
shipping_cost
numberFrais de livraison en DA
payment_method
stringMode de paiement (Cash on Delivery, Card…)
shipping_method
stringMode de livraison (Home Delivery, Standard…)
order_date
stringDate de commande ISO-8601 (calcule les jours écoulés)
order_address
stringAdresse de livraison
source
stringMarquer la source ("hosted_page" si tunnel hébergé)

Réponse

201 Created
JSON
{
  "success":               true,
  "claim_id":              "clxxxxxxxxxxxxxx",
  "status":                "APPROVED",   // ou PENDING / REJECTED
  "customer_past_returns": 2,
  "message":               "Votre demande de retour a été enregistrée et approuvée automatiquement."
}

Exemple de code

cURL
# Appelé depuis VOTRE backend (jamais depuis le navigateur du client)
curl -X POST https://flowmerce.app/api/claims/create \
  -H "x-api-key: flk_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{
    "shop_id":            "ma-boutique",
    "order_id":           "CMD-123",
    "customer_name":      "Ahmed Benali",
    "customer_email":     "ahmed@exemple.com",
    "product_name":       "Nike Air Max",
    "reason":             "DEFECTIVE",
    "desired_resolution": "REFUND",
    "description":        "Produit reçu avec un défaut visible sur la semelle."
  }'

Codes d'erreur

StatusCodeQuandAction recommandée
400VALIDATIONChamp requis manquant, email invalide, HTML détecté, raison/résolution non reconnueCorriger le payload côté votre backend
401AUTHClé API invalide, désactivée, ou vendor non APPROVEDVérifier la clé dans /dashboard/api-keys
409DUPLICATEUn claim existe déjà pour (vendorId, order_id)Afficher "un retour existe déjà" au client
422DELAY_EXCEEDEDDélai de retour dépassé (selon return policy vendor)Afficher la raison au client (champ `extra.policy_days`)
422NON_REFUNDABLE_CATEGORYCatégorie produit configurée comme non remboursableProposer un échange à la place
429RATE_LIMIT3 demandes/client/jour ou trop de tentatives pour la même commandeDemander au client de réessayer plus tard
503ML_DOWNServeur ML temporairement indisponible (claim créé en PENDING)Le claim sera rejoué automatiquement par le cron

Checklist sécurité

FLOWMERCE_API_KEY uniquement dans vos variables d'env serveur

✓ Vérifier que la commande appartient à l'utilisateur connecté avant d'appeler Flowmerce

✓ Échapper / valider les inputs (longueur, pas de HTML — Flowmerce le fait aussi)

✓ Sauvegarder claim_id côté votre BDD pour le suivi

✓ Tester avec une clé de dev avant la prod ; révoquer si compromise

Intégrations natives

S

Intégration Shopify native

Bientôt disponible

Un plugin Shopify officiel Flowmerce est en cours de développement. Il permettra d'intégrer Flowmerce en un clic, sans écrire une seule ligne de code.

Prêt à démarrer ?

Créez votre compte et générez votre première clé API en moins de 2 minutes. Aucune carte bancaire requise.