Automatisations
Faites travailler vos remboursements dans les outils que vous utilisez déjà.
Trois points d'entrée, un seul ensemble de règles. Votre assistant IA, vos applications et vos autres systèmes voient les mêmes dossiers, et rien ne contourne vos approbations.
Serveur MCP
Laissez un assistant IA lire les dossiers et proposer des décisions par le Model Context Protocol.
Configurer MCPAPI publique
Quatre opérations pour ouvrir, lister, lire et mettre à jour des dossiers de remboursement avec une clé d'API d'espace de travail.
Voir l'APIWebhooks
13 types d'événements signés envoyés à votre point de terminaison, avec nouvelles tentatives et relance possible.
Voir les webhooks
API publique
Ouvrez un dossier depuis votre code.
Une surface petite et stable pour les dossiers, authentifiée par une clé d'API d'espace de travail. La référence est servie par votre API à /public/v1/docs.
| Méthode | Chemin | Portée | Rôle |
|---|---|---|---|
POST | /public/v1/refund-cases | intake | Ouvre un dossier de remboursement. Une clé en double renvoie le dossier d'origine avec 200. |
GET | /public/v1/refund-cases | read | Liste les dossiers de votre espace de travail. |
GET | /public/v1/refund-cases/{id} | read | Lit un dossier avec son état et ses articles. |
POST | /public/v1/refund-cases/{id}/return-received | intake | Indique que le retour est arrivé. |
curl -X POST https://<api-host>/public/v1/refund-cases \
-H "Authorization: Bearer eqk_live_…" \
-H "Idempotency-Key: ord-10442-refund-1" \
-H "Content-Type: application/json" \
-d '{
"external_order_id": "10442",
"amount_minor": 4999,
"currency": "USD",
"reason": "Arrived damaged",
"line_items": [{ "line_id": "li_1", "quantity": 1 }],
"order_country": "US"
}'HTTP/1.1 201 Created
X-Correlation-ID: 7c1e9a52-3b0f-4d8e-9a61-2f5c0b7d4e13
X-RateLimit-Remaining: 1199
{
"refund_case_id": "01J9Z3K4M8Q2V6X0B5N7T1R3Y8",
"state": "RECEIVED",
"external_order_id": "10442",
"amount_minor": 4999,
"currency": "USD",
"created_at": "2026-09-24T14:02:11Z"
}Conventions
- Idempotency-Key sur chaque POST, conservée 24 heures. Une clé réutilisée avec un autre corps renvoie 409.
- X-Correlation-ID est renvoyé, ou généré pour vous, dans chaque réponse.
- Les erreurs partagent une seule forme : error.code, error.message et l'identifiant de corrélation.
- En-têtes X-RateLimit dans chaque réponse. Plafonds par forfait : Free 120, Starter 600, Growth 1 200 et Scale 2 400 requêtes par minute.
Webhooks
Chaque événement, signé et relancé.
Les propriétaires et administrateurs ajoutent les points de terminaison dans le tableau de bord. Chaque livraison est signée, numérotée et relancée après 1 minute, 5 minutes, 30 minutes, 2 heures et 12 heures, puis placée en file de rejet d'où elle peut être relancée.
Dossiers de remboursement
refund_case.createdrefund_case.state_changedrefund_case.approvedrefund_case.deniedrefund_case.refund_executedrefund_case.completedrefund_case.failedrefund_case.return_received
Approbations
approval.requestedapproval.decided
Étiquettes et agents
return_label.purchasedagent_run.finishedagent_task.updated
POST /hooks/lumtry HTTP/1.1
Content-Type: application/json
User-Agent: Equali-Webhooks/1
X-Equali-Delivery-Id: 01J9Z3N6W2D8H4K0P7S5V1X3C9
X-Equali-Event: refund_case.approved
X-Equali-Sequence: 42
X-Equali-Timestamp: 1790258531
X-Equali-Signature: v1=5f2b9d0e…c81e
{
"created_at": "2026-09-24T14:02:11Z",
"data": {
"amount_minor": 4999,
"currency": "USD",
"external_order_id": "10442",
"previous_state": "PENDING_APPROVAL",
"refund_case_id": "01J9Z3K4M8Q2V6X0B5N7T1R3Y8",
"state": "APPROVED"
},
"id": "01J9Z3N6W2D8H4K0P7S5V1X3C9",
"sequence": 42,
"type": "refund_case.approved"
}import crypto from "node:crypto";
// rawBody: the exact bytes received, before JSON parsing.
export function verifyLumtry(rawBody, headers, secret /* whsec_… */) {
const ts = headers["x-equali-timestamp"];
const sig = headers["x-equali-signature"] ?? "";
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected =
"v1=" + crypto.createHmac("sha256", secret).update(ts + "." + rawBody).digest("hex");
const a = Buffer.from(sig);
const b = Buffer.from(expected);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}Rejetez un horodatage de plus de 5 minutes, puis comparez le HMAC en temps constant.
Les webhooks entrants sont vérifiés avant toute écriture
Chaque fournisseur qui envoie un webhook à Lumtry est d'abord vérifié selon son propre schéma de signature. Une signature invalide reçoit un 401 et aucun traitement.
- Shopify
- Stripe
- PayPal
- WooCommerce
- BigCommerce
- Amazon SNS
- eBay
- Gorgias
- Zendesk
- EasyPost
- Shippo
- ShipBob
- ShipHero
- Twilio
- Telnyx
- Slack
Connectez votre assistant IA en quelques minutes.
Les outils de lecture fonctionnent avec toute clé d'API d'espace de travail. Commencez gratuitement, créez une clé et dirigez votre assistant vers votre espace de travail.