Crea integraciones fiables con Giftpack mediante orientación clara sobre autenticación, errores, webhooks y flujos habituales.
Las API de Giftpack permiten que tu backend cree y opere flujos de recompensas, incentivos, productos promocionales y elección por parte del destinatario. Giftpack gestiona la disponibilidad del catálogo, las experiencias de los destinatarios, la preparación de pedidos y las actualizaciones de entrega, mientras que tu sistema controla el disparador de negocio y los datos del cliente.
La URL base de producción es:
https://developer.giftpack.ai
Consulta la Referencia de la API para ver todos los esquemas de solicitud y respuesta. Utiliza esta guía para elegir la familia de recursos adecuada y entender cómo evolucionan los recursos después de crearlos.
| Objetivo | Recursos principales | Eventos del ciclo de vida |
|---|---|---|
| Smart Gifting, recompensas programadas o reconocimiento automatizado | Campaigns y Giftees | giftee.* |
| Pedidos directos de Gift Mall o Merchandise Catalog | Marketplace Orders y Marketplace Order Receivers | marketplace_order_receiver.* |
| Mantener un saldo de recompensas para los miembros | Point Recipients y Point Histories | Seguir el marketplace order resultante cuando se canjeen los puntos |
Smart Gifting utiliza una campaign como contenedor del programa y un giftee para representar el ciclo de vida específico de cada destinatario:
Campaign -> Giftee -> Redemption -> Fulfillment -> Delivery
Los pedidos directos del catálogo utilizan un marketplace order como contenedor del pedido y un marketplace order receiver para representar el ciclo de vida específico de cada destinatario:
Marketplace Order -> Receiver -> Claim or Selection -> Fulfillment -> Delivery
No trates giftee y marketplace_order_receiver como conceptos intercambiables. Sus nombres de evento identifican familias de pedidos distintas, aunque sus estados de gestión logística puedan parecerse.
Las solicitudes de creación y actualización devuelven el estado actual del recurso. Las acciones del destinatario, la preparación, el envío y la entrega continúan de forma asíncrona.
Para crear integraciones fiables:
id del evento webhook como clave de deduplicación.Después de crear una clave API en Giftpack, verifica el acceso con el catálogo de eventos webhook:
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
La respuesta enumera los tipos de eventos webhook que admite actualmente la API. Este endpoint, y no una lista codificada en el cliente, es el catálogo de eventos de referencia.

Estas definiciones describen los objetos de dominio principales usados en integraciones API de Giftpack. Entender cómo se relacionan es clave antes de construir workflows. Giftpack opera en tres capas principales:
Capa de Engagement (Engagement Layer)Capa de Comercio (Commerce Layer)Capa de Supply y Operaciones (Supply & Operations Layer)Esta capa modela el ciclo relacional entre remitente y destinatario. Es event-driven y con frecuencia asíncrona.
Una persona real (empleado, cliente o partner) que puede recibir regalos o recompensas. En términos API, Recipient es una identidad persistente dentro de un workspace de Giftpack. Los Recipients pueden existir de forma independiente a las campañas y participar en múltiples campañas con el tiempo.
Una colección lógica de destinatarios usada para segmentación y asignación masiva. Los grupos son estructuras organizativas. No representan transacciones.
Una campaña representa una intención de engagement única.
Define:
Una campaña no es una orden. Actúa como contenedor de ciclo de vida donde ocurren eventos de redemption y fulfillment.
Un Recipient se convierte en Giftee cuando se adjunta a una Campaign. Giftee representa el estado de participación del destinatario dentro de esa campaña. Esta distinción es clave:
Recipient = identidadGiftee = estado ligado a campañaDefine la capa de presentación de una campaña, incluyendo:
Las plantillas afectan comunicación, no la lógica de fulfillment.
Redemption captura la acción del destinatario para reclamar un regalo. Puede ocurrir mediante:
Redemption mueve el engagement de “invited” a “claimed”.
Una URL única que permite a un Giftee reclamar su regalo.
Un email que entrega el enlace de redemption usando el campaign template.
Esta capa maneja operaciones transaccionales y relacionadas con fulfillment. Puede operar de forma independiente de los workflows de campaña.
Un ítem fijo y curado seleccionado directamente por el remitente. Normalmente se fulfilled inmediatamente tras crear la orden.
Una transacción de compra directa para uno o más destinatarios. Puede omitir la redemption tipo campaña e ir directo a fulfillment. Marketplace Order ≠ Campaign.
Un destinatario asignado como objetivo de fulfillment para una marketplace order.
Un producto personalizable gestionado en el sistema de inventario y almacén de Giftpack. Puede requerir:
Un objeto contenedor vendible dentro de catálogos de marketplace o swag.
Una configuración comprable específica de un producto, por ejemplo:
Las transacciones siempre ocurren a nivel Product Variant.
Esta capa soporta fulfillment y gestión de vendors. Suele estar abstraída en la mayoría de integraciones, pero sigue siendo importante para entender transiciones de estado.
Capa operativa responsable de:
Un vendor que suministra productos al ecosistema Giftpack.
Un provider supervisado por una procurement office para calidad de catálogo, onboarding y control operativo.
Un identificador único usado para referenciar un provider en operaciones API.
La siguiente estructura muestra cómo se relacionan estas entidades:
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
Las operaciones principales de Giftpack bajo /v1 utilizan una clave API limitada a un workspace, enviada en la cabecera X-API-KEY. Las claves API solo deben utilizarse en aplicaciones de servidor de confianza.
La gestión de claves API está disponible en la configuración para desarrolladores. Tanto el workspace como el usuario actual deben tener acceso a la función Giftpack Open API y disponer de los permisos necesarios para la configuración de desarrolladores.
Si la página Developer no está disponible, pide a un administrador del workspace que confirme el plan contratado y tu rol antes de desarrollar la integración.
Nunca incluyas una clave API en JavaScript ejecutado en el navegador, una aplicación móvil, registros, capturas de pantalla, tickets de soporte ni en el control de versiones.
Utiliza credenciales distintas para staging y producción. Revoca de inmediato cualquier clave que pueda haber quedado expuesta.
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
La clave API identifica el workspace. La autorización de los recursos se aplica en el servidor, por lo que disponer de un ID perteneciente a otro workspace no concede acceso a ese recurso.
https://developer.giftpack.ai.Algunas operaciones de conectores en la Referencia de la API utilizan tokens bearer o autenticación específica del proveedor. Sigue el esquema de seguridad indicado en cada operación; no des por hecho que una clave API de Giftpack puede invocar un endpoint de conector.
X-API-KEY en los registros de solicitudes y errores.El contrato público no garantiza un límite de frecuencia universal ni una única política de reintentos para todas las operaciones. Utiliza las cabeceras específicas del endpoint y la Referencia de la API cuando estén disponibles, y ponte en contacto con Giftpack antes de planificar picos de tráfico de gran volumen.
Las operaciones de Giftpack utilizan códigos de estado HTTP estándar. Las respuestas de error documentadas en la Referencia de la API utilizan 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 que identifica el tipo de problema. Puede ser about:blank.title: resumen estable y legible del problema.status: estado HTTP asociado a esta respuesta.detail: explicación de este fallo concreto.instance: URI que identifica esta incidencia, cuando se proporciona.errors: información opcional de cada campo, con location, message y value.No se garantiza que todos los campos estén presentes en todos los errores. Crea analizadores que toleren campos opcionales omitidos y campos futuros desconocidos.
| Familia de estados | Significado | Acción recomendada |
|---|---|---|
2xx | La operación HTTP se ha completado correctamente | Guardar los ID devueltos; utilizar webhooks para los cambios posteriores del ciclo de vida |
400 | Solicitud no válida o error de validación | Corregir la solicitud antes de volver a intentarlo |
401 | Autenticación ausente o no válida | Comprobar la clave API del servidor y el entorno |
403 | Autenticación válida, pero sin permisos suficientes | Comprobar la pertenencia al workspace, el acceso del plan y los permisos del usuario |
404 | Recurso o ruta no encontrados | Confirmar el endpoint y el ID del recurso |
409 | La solicitud entra en conflicto con el estado actual | Volver a leer el recurso y decidir si la operación sigue siendo válida |
5xx | Giftpack o un servicio del que depende no ha podido completar la solicitud | Conservar el estado actual y reintentar solo cuando la operación sea segura |
La Referencia de la API es la fuente de autoridad para las respuestas documentadas de cada operación.
Por lo general, las solicitudes GET pueden reintentarse con un backoff exponencial limitado. Las solicitudes que modifican el estado requieren más precaución:
Un timeout de transporte significa que el cliente no recibió una respuesta; no demuestra que el servidor no completara la solicitud.
Al escalar un problema, proporciona el endpoint, el método, la marca de tiempo UTC, el estado HTTP, los ID de recursos relevantes y una respuesta de problema con los datos sensibles ocultos. Nunca incluyas una clave API ni datos del destinatario sin ocultar.
Los webhooks notifican las transiciones de los destinatarios y de la preparación que se producen después de que una solicitud a la API reciba respuesta. Utilízalos como señal principal del ciclo de vida y usa operaciones GET para conciliar el estado.
Obtén el catálogo actual en lugar de codificar una lista antigua:
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
El catálogo actual contiene dos familias de recursos.
giftee
Eventos del ciclo de vida de los destinatarios de pedidos de Smart Gifting, incluidas las campañas iniciadas mediante integraciones, los programas planificados y los flujos de recompensas automatizados.
giftee.createdgiftee.launchedgiftee.preparinggiftee.shippedgiftee.deliveredgiftee.failedgiftee.returnedgiftee.reviewedgiftee.cancelgiftee.resumegiftee.deletemarketplace_order_receiver
Eventos del ciclo de vida de los destinatarios de pedidos realizados directamente a través de Gift Mall o Merchandise Catalog, fuera de los flujos de campañas de 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.deleteCada entrega es un objeto JSON. data es una instantánea estructurada del recurso, no una cadena JSON escapada.
{
"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 es el ID permanente de la ocurrencia del evento y debe utilizarse como clave de deduplicación.type identifica la familia de recursos y la transición.data captura el estado del recurso cuando se produjo el evento. Los campos varían según la familia de recursos y la etapa del ciclo de vida.created_at indica el momento en que se produjo el evento. Las entregas pueden llegar desordenadas, por lo que debes utilizar este valor para ordenar las transiciones.Giftpack envía en X-Giftpack-Signature el resumen HMAC-SHA256 hexadecimal en minúsculas del cuerpo sin procesar de la solicitud.
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)
);
}
Verifica la firma antes de analizar o procesar el payload. Almacena los secretos de los webhooks en un gestor de secretos del lado del servidor.
POST con un cuerpo JSON.2xx marca la entrega como correcta.id de forma idempotente.Devuelve rápidamente una respuesta 2xx después de validar y aceptar el evento de forma persistente. Envía el trabajo costoso a una cola.
Los registros de eventos y solicitudes de webhook utilizan estos estados numéricos:
-1: fallido0: en proceso1: correctoLa respuesta detallada del evento incluye los datos estructurados de webhook_event_data, el número de intentos y los registros de cada solicitud para facilitar la resolución de problemas.
X-Giftpack-Signature con el cuerpo sin procesar y sin modificar.id del evento.created_at y admite llegadas desordenadas.2xx solo después de aceptar el evento de forma segura.Elige la familia de recursos que se corresponda con la forma en que el destinatario recibe la recompensa. La Referencia de la API sigue siendo la fuente de autoridad para todos los campos obligatorios y modelos de respuesta.
Utiliza este flujo para una integración, un programa planificado o una automatización que cree una experiencia del destinatario basada en campañas.
POST /v1/campaigns.POST /v1/giftees.POST /v1/giftees/{gifteeId}/redemptionlink.giftee.*.Utiliza el ID del giftee devuelto para operaciones posteriores. No construyas por tu cuenta una URL de canje.
Empieza con giftee.created, giftee.launched, giftee.preparing, giftee.shipped, giftee.delivered, giftee.failed y giftee.returned. Añade los eventos de cancelación, reanudación, eliminación y reseña cuando tu integración necesite esas transiciones.
Utiliza un marketplace order cuando el pedido se origine directamente en Gift Mall o Merchandise Catalog, y no en una campaña de 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
}
]
}
]
}'
Crea el pedido como borrador cuando tu aplicación necesite revisarlo o actualizarlo. Envíalo con POST /v1/marketplaceorders/{marketplaceOrderId}/submit cuando esté listo.
Sigue a cada destinatario con eventos marketplace_order_receiver.*. Estos eventos están separados de giftee.* porque el receiver pertenece a un marketplace order, no a una campaña.
Utiliza puntos cuando un miembro deba mantener un saldo de recompensas para canjearlo más adelante.
POST /v1/pointrecipients/{memberId}/enablepointfeature.PATCH /v1/pointrecipients/{memberId}/points.La actualización del saldo requiere tanto credits como 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"
}'
No omitas credits, aunque tu lógica de negocio se exprese principalmente en puntos. Comprueba el point recipient y el point history devueltos antes de realizar otra actualización de saldo después de un timeout.