Créez des intégrations Giftpack fiables grâce à des explications claires sur l’authentification, les erreurs, les webhooks et les principaux parcours.
Les API Giftpack permettent à votre backend de créer et d'exploiter des parcours de récompense, d'incitation, d'articles promotionnels et de sélection par le destinataire. Giftpack gère la disponibilité du catalogue, les expériences destinataires, l'exécution des commandes et les mises à jour de livraison, tandis que votre système reste responsable du déclencheur métier et des données client.
L'URL de base en production est :
https://developer.giftpack.ai
Consultez la référence de l'API pour connaître l'ensemble des schémas de requête et de réponse. Utilisez ce guide pour choisir la famille de ressources adaptée et comprendre l'évolution des ressources après leur création.
| Objectif | Ressources principales | Événements de cycle de vie |
|---|---|---|
| Smart Gifting, récompenses planifiées ou reconnaissance automatisée | Campaigns et Giftees | giftee.* |
| Commandes directes depuis Gift Mall ou le Merchandise Catalog | Marketplace Orders et Marketplace Order Receivers | marketplace_order_receiver.* |
| Gérer un solde de récompenses pour les membres | Point Recipients et Point Histories | Suivre la commande marketplace générée lors de l'utilisation des points |
Smart Gifting utilise une campagne comme conteneur du programme et un giftee pour représenter le cycle de vie propre à chaque destinataire :
Campaign -> Giftee -> Redemption -> Fulfillment -> Delivery
Les commandes directes du catalogue utilisent une marketplace order comme conteneur de commande et un marketplace order receiver pour représenter le cycle de vie propre à chaque destinataire :
Marketplace Order -> Receiver -> Claim or Selection -> Fulfillment -> Delivery
Ne considérez pas giftee et marketplace_order_receiver comme interchangeables. Leurs noms d'événements correspondent à des familles de commandes distinctes, même lorsque leurs états d'exécution se ressemblent.
Les requêtes de création et de mise à jour renvoient l'état actuel de la ressource. Les actions du destinataire, l'exécution, l'expédition et la livraison se poursuivent de manière asynchrone.
Pour garantir la fiabilité de votre intégration :
id de l'événement webhook comme clé de déduplication.Après avoir créé une clé API dans Giftpack, vérifiez l'accès avec le catalogue des événements webhook :
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
La réponse répertorie les types d'événements webhook actuellement pris en charge par l'API. Cet endpoint, et non une liste figée côté client, constitue le catalogue d'événements de référence.

Ces définitions décrivent les objets métier principaux utilisés dans les intégrations API Giftpack. Comprendre leurs relations est essentiel avant de construire des workflows. Giftpack fonctionne sur trois couches principales:
Couche d'Engagement (Engagement Layer)Couche Commerce (Commerce Layer)Couche Supply & Opérations (Supply & Operations Layer)Cette couche modélise le cycle de relation entre l'expéditeur et le destinataire. Elle est pilotée par événements (event-driven) et souvent asynchrone.
Une personne réelle (employé, client ou partenaire) susceptible de recevoir des cadeaux ou récompenses. En termes API, un Recipient est une identité persistante dans un workspace Giftpack. Les Recipients peuvent exister indépendamment des campagnes et participer à plusieurs campagnes dans le temps.
Un ensemble logique de destinataires utilisé pour le ciblage et l'affectation en masse. Les groupes sont des structures organisationnelles. Ils ne représentent pas des transactions.
Une campagne représente une intention d'engagement unique.
Elle définit:
Une campagne n'est pas une commande. Une campagne agit comme conteneur de cycle de vie où se produisent les événements de redemption et de fulfillment.
Un Recipient devient un Giftee lorsqu'il est rattaché à une Campaign. Giftee représente l'état de participation du destinataire dans une campagne spécifique. Cette distinction est importante:
Recipient = identitéGiftee = état lié à la campagneDéfinit la couche de présentation d'une campagne, incluant:
Les templates affectent la communication, pas la logique de fulfillment.
Redemption capture l'action du destinataire pour réclamer un cadeau. La redemption peut se produire via:
Redemption fait passer l'engagement de "invited" à "claimed".
Une URL unique permettant à un Giftee de réclamer son cadeau.
Un email qui délivre le lien de redemption via le campaign template.
Cette couche gère les opérations transactionnelles et liées au fulfillment. Elle peut fonctionner indépendamment des workflows de campagne.
Un article fixe et curaté sélectionné directement par l'expéditeur. Généralement fulfilled juste après la commande.
Une transaction d'achat directe pour un ou plusieurs destinataires. Les marketplace orders peuvent contourner la redemption de campagne et aller directement au fulfillment. Marketplace Order ≠ Campaign.
Un destinataire assigné comme cible de fulfillment pour une marketplace order.
Un produit personnalisable géré via l'inventaire et l'entrepôt Giftpack. Les produits swag peuvent nécessiter:
Un objet conteneur vendable dans les catalogues marketplace ou swag.
Une configuration achetable spécifique d'un produit, par exemple:
Les transactions se font toujours au niveau Product Variant.
Cette couche alimente le fulfillment et la gestion des vendors. Elle est souvent abstraite pour la plupart des intégrations, mais reste importante pour comprendre les transitions de statut.
Couche opérationnelle responsable de:
Un vendor qui fournit des produits dans l'écosystème Giftpack.
Un provider supervisé par un procurement office pour la qualité de catalogue, l'onboarding et le contrôle opérationnel.
Un identifiant unique utilisé pour référencer un provider dans les opérations API.
La structure suivante illustre les relations entre ces entités:
Recipient
└─ may belong to Recipient Group
└─ becomes Giftee when attached to Campaign
Campaign (Engagement Container)
├─ defines Redemption rules
├─ manages Giftee states
└─ may generate Fulfillment Orders
Commerce Layer
├─ Marketplace Order (direct transaction)
└─ Swag Order (inventory-based transaction)
Redemption
├─ Link-based
├─ Email-based
└─ Transitions state before fulfillment
Les principales opérations Giftpack sous /v1 utilisent une clé API limitée à un workspace, transmise dans l'en-tête X-API-KEY. Les clés API doivent être utilisées uniquement par des applications serveur de confiance.
La gestion des clés API est accessible depuis les paramètres développeur. Le workspace et l'utilisateur actuel doivent avoir accès à la fonctionnalité Giftpack Open API et disposer des autorisations requises pour les paramètres développeur.
Si la page Developer n'est pas accessible, demandez à un administrateur du workspace de confirmer l'offre souscrite et votre rôle avant de développer l'intégration.
Ne placez jamais une clé API dans du JavaScript exécuté dans le navigateur, une application mobile, des journaux, des captures d'écran, des tickets de support ou un dépôt de code source.
Utilisez des identifiants distincts pour les environnements de staging et de production. Révoquez immédiatement toute clé susceptible d'avoir été exposée.
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
La clé API identifie le workspace. L'autorisation d'accès aux ressources est appliquée côté serveur : disposer de l'identifiant d'une ressource appartenant à un autre workspace ne donne pas accès à cette ressource.
https://developer.giftpack.ai.Certaines opérations de connecteurs dans la référence de l'API utilisent des jetons bearer ou une authentification propre au fournisseur. Respectez le schéma de sécurité indiqué pour chaque opération ; ne supposez pas qu'une clé API Giftpack permet d'appeler un endpoint de connecteur.
X-API-KEY dans les journaux de requêtes et d'erreurs.Le contrat public ne garantit ni une limite de débit universelle ni une politique de nouvelle tentative unique pour toutes les opérations. Utilisez les en-têtes propres à l'endpoint et la référence de l'API lorsqu'ils sont disponibles, et contactez Giftpack avant de planifier des pics de trafic importants.
Les opérations Giftpack utilisent les codes de statut HTTP standard. Les réponses d'erreur documentées dans la référence de l'API utilisent application/problem+json.
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Property email is required but is missing.",
"instance": "https://developer.giftpack.ai/errors/example",
"errors": [
{
"location": "body.email",
"message": "The email field is required.",
"value": null
}
]
}
type : URI identifiant le type de problème. Sa valeur peut être about:blank.title : résumé stable et lisible du problème.status : statut HTTP associé à cette réponse.detail : explication de cet échec précis.instance : URI identifiant cette occurrence, lorsqu'elle est fournie.errors : informations facultatives au niveau des champs, avec location, message et value.La présence de tous les champs n'est pas garantie pour chaque erreur. Concevez des parseurs capables de gérer l'absence de champs facultatifs et l'ajout futur de champs inconnus.
| Famille de statuts | Signification | Action recommandée |
|---|---|---|
2xx | L'opération HTTP a réussi | Enregistrer les identifiants renvoyés ; utiliser les webhooks pour les changements de cycle de vie ultérieurs |
400 | Requête non valide ou échec de validation | Corriger la requête avant de réessayer |
401 | Authentification absente ou non valide | Vérifier la clé API côté serveur et l'environnement |
403 | Authentification valide, mais autorisation insuffisante | Vérifier l'appartenance au workspace, l'accès lié à l'offre et les autorisations de l'utilisateur |
404 | Ressource ou route introuvable | Confirmer l'endpoint et l'identifiant de ressource |
409 | La requête entre en conflit avec l'état actuel | Relire la ressource et déterminer si l'opération reste valide |
5xx | Giftpack ou un service en amont n'a pas pu terminer la requête | Conserver l'état actuel et ne réessayer que si l'opération peut l'être sans risque |
La référence de l'API fait autorité pour les réponses documentées de chaque opération.
Les requêtes GET peuvent normalement être relancées avec un backoff exponentiel plafonné. Les requêtes qui modifient l'état exigent davantage de précautions :
Un délai d'attente dépassé au niveau du transport signifie que le client n'a pas reçu de réponse ; cela ne prouve pas que le serveur n'a pas terminé la requête.
Lors de l'escalade d'un incident, fournissez l'endpoint, la méthode, l'horodatage UTC, le statut HTTP, les identifiants de ressource pertinents et une réponse de type problème dont les données sensibles ont été masquées. N'incluez jamais de clé API ni de données destinataire non masquées.
Les webhooks signalent les transitions liées aux destinataires et à l'exécution qui surviennent après la réponse à une requête API. Utilisez-les comme signal principal du cycle de vie et utilisez les opérations GET pour le rapprochement.
Récupérez le catalogue actuel au lieu de coder en dur une liste obsolète :
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
Le catalogue actuel comprend deux familles de ressources.
giftee
Événements du cycle de vie des destinataires pour les commandes Smart Gifting, notamment les campagnes lancées via des intégrations, les programmes planifiés et les parcours de récompense automatisés.
giftee.createdgiftee.launchedgiftee.preparinggiftee.shippedgiftee.deliveredgiftee.failedgiftee.returnedgiftee.reviewedgiftee.cancelgiftee.resumegiftee.deletemarketplace_order_receiver
Événements du cycle de vie des destinataires pour les commandes passées directement dans Gift Mall ou le Merchandise Catalog, en dehors des parcours de campagne Smart Gifting.
marketplace_order_receiver.createdmarketplace_order_receiver.launchedmarketplace_order_receiver.shippedmarketplace_order_receiver.deliveredmarketplace_order_receiver.failedmarketplace_order_receiver.returnedmarketplace_order_receiver.reviewedmarketplace_order_receiver.deleteChaque livraison est un objet JSON. data est un instantané structuré de la ressource, et non une chaîne JSON échappée.
{
"id": "123e4567-e89b-12d3-a456-426655440000",
"type": "giftee.shipped",
"data": {
"id": "23e4567-e89b-12d3-a456-426655440000",
"type": "giftee",
"email": "recipient@example.com",
"status": 12,
"delivery_status": 2,
"budget": 100,
"campaign": {
"id": "323e4567-e89b-12d3-a456-426655440000"
},
"recipient": {
"id": "423e4567-e89b-12d3-a456-426655440000"
},
"delivery_tracking_code": "TRACKING-CODE"
},
"created_at": "2026-09-01 15:23:33"
}
id est l'identifiant durable de l'occurrence de l'événement et doit servir de clé de déduplication.type identifie la famille de ressources et la transition.data capture l'état de la ressource au moment de l'événement. Les champs varient selon la famille de ressources et l'étape du cycle de vie.created_at indique l'heure de l'occurrence. Les livraisons pouvant arriver dans le désordre, utilisez cette valeur pour ordonner les transitions.Giftpack envoie dans X-Giftpack-Signature le condensat HMAC-SHA256 en hexadécimal minuscule calculé à partir du corps brut de la requête.
const crypto = require('crypto');
function verifyGiftpackWebhook(rawBody, signature, secret) {
if (!signature) return false;
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const actualBuffer = Buffer.from(signature, 'utf8');
const expectedBuffer = Buffer.from(expected, 'utf8');
return (
actualBuffer.length === expectedBuffer.length &&
crypto.timingSafeEqual(actualBuffer, expectedBuffer)
);
}
Vérifiez la signature avant d'analyser ou de traiter le payload. Stockez les secrets de webhook dans un gestionnaire de secrets côté serveur.
POST avec un corps JSON.2xx marque la livraison comme réussie.id de manière idempotente.Renvoyez rapidement une réponse 2xx après avoir validé et accepté durablement l'événement. Transférez les traitements coûteux vers une file d'attente.
Les journaux d'événements et de requêtes webhook utilisent les statuts numériques suivants :
-1 : échec0 : traitement en cours1 : réussiteLa réponse détaillée de l'événement comprend les données structurées webhook_event_data, le nombre de tentatives et les enregistrements de chaque requête, afin de faciliter le diagnostic.
X-Giftpack-Signature à partir du corps brut non modifié.id.created_at et acceptez les arrivées dans le désordre.2xx qu'après avoir accepté l'événement de manière sûre.Choisissez la famille de ressources correspondant à la manière dont le destinataire reçoit la récompense. La référence de l'API fait autorité pour chaque champ obligatoire et chaque modèle de réponse.
Utilisez ce parcours pour une intégration, un programme planifié ou une automatisation qui crée une expérience destinataire basée sur une campagne.
POST /v1/campaigns.POST /v1/giftees.POST /v1/giftees/{gifteeId}/redemptionlink.giftee.*.Utilisez l'identifiant du giftee renvoyé pour les opérations ultérieures. Ne construisez pas vous-même une URL d'utilisation.
Commencez par giftee.created, giftee.launched, giftee.preparing, giftee.shipped, giftee.delivered, giftee.failed et giftee.returned. Ajoutez les événements d'annulation, de reprise, de suppression et d'avis lorsque votre intégration doit suivre ces transitions.
Utilisez une marketplace order lorsque la commande provient directement de Gift Mall ou du Merchandise Catalog, et non d'une campagne Smart Gifting.
curl https://developer.giftpack.ai/v1/marketplaceorders \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"marketplace_order_name": "September employee rewards",
"marketplace_order_start_date": "2026-09-01",
"marketplace_order_end_date": "2026-09-30",
"marketplace_order_type": "Normal",
"submit": false,
"receivers": [
{
"member_id": "9a1232aa-238f-421c-82e7-45693d1b25b4",
"country": "US",
"gift_message": "Thank you for your contribution.",
"email_notification": true,
"sms_notification": false,
"marketplace_feature": false,
"donation_feature": false,
"products": [
{
"marketplace_product_id": "961be65a-88d8-4040-8808-843ccf5da624",
"marketplace_product_variant_id": "961be65a-a96a-412d-b22a-325f07d85647",
"product_quantity": 1
}
]
}
]
}'
Créez la commande en tant que brouillon si votre application doit la vérifier ou la mettre à jour. Soumettez-la avec POST /v1/marketplaceorders/{marketplaceOrderId}/submit lorsqu'elle est prête.
Suivez chaque destinataire avec les événements marketplace_order_receiver.*. Ces événements sont distincts de giftee.*, car le receiver appartient à une marketplace order et non à une campagne.
Utilisez les points lorsqu'un membre doit disposer d'un solde de récompenses et l'utiliser ultérieurement.
POST /v1/pointrecipients/{memberId}/enablepointfeature.PATCH /v1/pointrecipients/{memberId}/points.La mise à jour du solde requiert à la fois credits et points :
curl https://developer.giftpack.ai/v1/pointrecipients/MEMBER_ID/points \
--request PATCH \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"credits": 1,
"points": 100,
"expired_at": "2027-09-01",
"notes": "Annual recognition allocation"
}'
N'omettez pas credits, même lorsque votre logique métier s'exprime principalement en points. Vérifiez le point recipient et la point history renvoyés avant d'effectuer une nouvelle mise à jour du solde après un délai d'attente dépassé.