La API de Giftpack te permite programar flujos de regalos basados en relaciones (relationship-driven gifting workflows) a escala global, para regalos, artículos promocionales (swag) y recompensas.
En lugar de construir un portal de recompensas separado o coordinar proveedores manualmente, puedes orquestar eventos de regalo (gifting events) directamente desde tus sistemas empresariales existentes, como CRM, HRIS o plataformas internas de operaciones. La API permite que tu aplicación dispare, gestione y supervise estos momentos de engagement de forma programática, mientras Giftpack gestiona la ejecución logística (fulfillment), disponibilidad, logística y cumplimiento.
Giftpack no está estructurado como una API tradicional de e-commerce. En vez de centrarse en catálogos de productos y transacciones de checkout, el sistema modela los regalos (gifting) como eventos relacionales. La identidad del destinatario, el momento y el contexto de negocio se tratan como entradas de primer nivel junto con el artículo enviado. Esto permite que las integraciones se alineen de forma natural con disparadores reales, como onboarding, aniversarios, cierre de oportunidades, campañas de retención o hitos de engagement de clientes.
La API ofrece visibilidad del ciclo de vida en cada etapa del proceso, incluido el estado de redemption, el progreso de fulfillment y el seguimiento de entrega (delivery tracking). Estos endpoints permiten que tus sistemas midan resultados, automaticen acciones de seguimiento e incorporen los regalos (gifting) en flujos de reporting y operaciones.
A nivel de sistema, Giftpack sigue este modelo de ciclo de vida:
Intent → Campaign → Recipient → Redemption → Fulfillment → Tracking
Cada etapa representa una transición de estado en el ciclo de engagement:
Intent define el disparador de negocio o propósito.Campaign actúa como contenedor de engagement.Recipient representa la identidad que participa en la campaña.Redemption captura la acción del destinatario.Fulfillment gestiona el proceso operativo de ejecución logística.Tracking proporciona visibilidad posterior y analítica.EVENTO DE NEGOCIO
│
▼
[ Intent ]
│
│ (API síncrona)
▼
[ Campaign Created ]
│
│ (API síncrona)
▼
[ Recipient Attached ]
│
│ (API síncrona)
▼
[ Redemption Link Issued ]
│
│ ────── Acción del usuario (asíncrona) ──────
▼
[ Redemption Claimed ]
│
│ (Webhook: giftee.preparing)
▼
[ Shipment Processing ]
│
│ (Webhook: giftee.shipped)
▼
[ Tracking / Delivered ]
│
│ (Webhook: giftee.delivered / giftee.failed / giftee.returned)
▼
[ Final Tracking State ]
│
│ (Webhook: giftee.reviewed)
●
La primera mitad del ciclo se inicia de forma síncrona mediante llamadas API. La segunda mitad avanza de forma asíncrona mediante acciones del destinatario y eventos de ejecución logística (fulfillment). Las integraciones deben basarse en campos de estado y eventos webhook, en lugar de asumir una finalización inmediata.
Este modelo se aplica de forma consistente a campañas de regalos inteligentes (smart gifting) AutoMatch™, órdenes de marketplace (marketplace orders), flujos de artículos promocionales (swag workflows) y casos de automatización empresarial. Entender este modelo es clave para construir integraciones confiables en entornos asíncronos y orientados a eventos.

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

Todas las solicitudes a la Giftpack Integration API deben autenticarse con una API Key válida.
La autenticación es obligatoria en todos los endpoints y se aplica por límite de workspace. Las solicitudes no autorizadas o mal autenticadas se rechazan antes de ejecutar la lógica de negocio.
Cada workspace de Giftpack puede generar una o más API Keys desde el panel de Giftpack.
Las API Keys se usan para:
Las API Keys son workspace-scoped.
No pueden acceder a recursos fuera del workspace de origen.
Giftpack no comparte API Keys entre workspaces.
Aviso de seguridad: Las API Keys dan acceso a recursos a nivel de workspace. Trátalas como credenciales confidenciales.
Para generar una API Key:
Las API Keys se activan inmediatamente al crearse. Los eventos de creación de keys se registran para auditoría y trazabilidad.
Importante: Mantén tu API Key segura. No la expongas en código client-side ni en repositorios públicos.
Incluye tu API Key en el header X-API-KEY en cada solicitud.
GET /v1/recipients HTTP/1.1
Host: developer.giftpack.ai
X-API-KEY: YOUR_API_KEY
Las solicitudes sin API Key válida devolverán error de autenticación. La autenticación ocurre antes del procesamiento de la solicitud y la evaluación de recursos.
La autorización se aplica a nivel de workspace. Una API Key solo puede acceder a:
El acceso entre workspaces está estrictamente prohibido. Las decisiones de autorización se aplican en servidor y no pueden sobrescribirse con parámetros de cliente.
Las integraciones empresariales deben implementar controles adecuados del ciclo de vida de keys.
Prácticas recomendadas:
Si una API Key se revoca, todas las solicitudes posteriores con esa key serán rechazadas.
Giftpack no rota API Keys automáticamente. La gestión de keys es responsabilidad del integrador.
Todas las solicitudes API deben realizarse por HTTPS.
TLS 1.2Todos los datos en tránsito se cifran con TLS estándar de la industria.
Esto incluye:
Giftpack no soporta conexiones de transporte inseguras.
Las solicitudes API están sujetas a rate limiting para asegurar estabilidad y uso justo. Si se excede el límite, la API devolverá:
429RATE_LIMIT_EXCEEDEDLas integraciones deben:
Para cargas empresariales de alto volumen o picos, contacta a Giftpack para ajustar configuración de rate.
Las APIs de Giftpack pueden procesar información personal identificable (PII), incluyendo:
Responsabilidades del desarrollador:
Giftpack procesa datos únicamente para ejecutar flujos de gifting y rewards. Giftpack no usa datos de recipients para publicidad ni perfilado no relacionado.
Para entornos empresariales, las integraciones deben:
Giftpack mantiene logging interno de:
Los errores de autenticación y autorización siguen una estructura consistente.
{
"error_code": "UNAUTHORIZED",
"message": "Invalid or missing API key",
"action": "Verify your API key and include it in the X-API-KEY header"
}
Códigos de error comunes relacionados con autenticación:
UNAUTHORIZEDFORBIDDENRATE_LIMIT_EXCEEDEDPara despliegues de producción:
Si sospechas que una API Key está comprometida:

La Giftpack API usa códigos HTTP convencionales y devuelve payloads de error estructurados.
Todas las respuestas de error incluyen un código de error legible por máquina y un request_id.
Registra siempre el request_id al contactar soporte.
Todos los errores siguen esta estructura:
{
"error": {
"code": "invalid_request",
"message": "Recipient email is required.",
"request_id": "req_123"
}
}
code – Identificador de error legible por máquinamessage – Explicación legible para humanosrequest_id – Identificador único de trazabilidad para depuraciónEl request_id debe conservarse en tus logs para troubleshooting operativo.
Giftpack usa semántica estándar de estados HTTP:
200 / 201 – Solicitud exitosa400 – Validación fallida o solicitud mal formada401 – API Key ausente o inválida403 – Permisos insuficientes404 – Recurso no encontrado409 – Conflicto (ej. recurso duplicado o violación de estado)429 – Límite de tasa excedido5xx – Error interno del servidorNo todos los errores deben reintentarse.
Seguro para Reintentar
429 (Límite de tasa excedido)5xx (Errores del servidor)Usa exponential backoff al reintentar. Evita reintentos inmediatos y agresivos.
No Reintentar
400 (Errores de validación)401 / 403 (Fallas de autenticación o permisos)404 (Referencia de recurso inválida)409 (Conflictos de lógica de negocio)Estos errores indican problemas del lado cliente que deben corregirse antes de reenviar.
Una respuesta HTTP exitosa no garantiza que el fulfillment haya finalizado.
Por ejemplo:
201 Created confirma que se creó un campaignLas operaciones de Giftpack suelen progresar de forma asíncrona.
Para determinar el estado del lifecycle:
GETTrata siempre un HTTP exitoso como aceptación de solicitud, no como finalización de negocio.
Si tu integración realiza reintentos, asegúrate de que solicitudes duplicadas no generen efectos secundarios no deseados.
Cuando aplique:
Giftpack puede rechazar creación duplicada de recursos según la lógica del endpoint.
Cuando se exceden los límites de tasa:
429Las integraciones deben:
Si encuentras errores inesperados:
request_idrequest_id al contactar soporte de GiftpackEsto permite una trazabilidad rápida en logs de servidor.

Los flujos de Giftpack son asíncronos.
Una respuesta API exitosa confirma que la solicitud fue aceptada. Las actualizaciones de lifecycle como redemption, fulfillment, shipping y delivery se comunican por eventos webhook.
Las integraciones de producción deben tratar webhooks como el mecanismo principal de actualización de estado. El polling de endpoints de estado debe usarse solo para reconciliación o recuperación.
Los tipos de evento webhook se gestionan y muestran en el dashboard de Giftpack. Para ver o configurar los triggers disponibles:
https://giftpack.ai/app/developer/webhooks
La UI del dashboard es la fuente de verdad sobre eventos disponibles en producción.
Ejemplos soportados actualmente:
giftee.createdgiftee.launchedgiftee.preparinggiftee.shippedgiftee.deliveredgiftee.failedgiftee.returnedgiftee.reviewedLa disponibilidad puede evolucionar. Revisa siempre el dashboard al configurar producción.
Los webhooks se configuran por workspace desde el dashboard. Cada configuración incluye:
nameendpointevent_typesactivesecret key con alcance de workspaceEjemplo:
{
"name": "Giftpack Delivery Updates",
"endpoint": "https://example.com/webhooks/giftpack",
"event_types": [
"giftee.created",
"giftee.shipped",
"giftee.delivered"
]
}
Puede haber múltiples configuraciones por workspace.
La entrega webhook sigue un modelo at-least-once.
Esto significa:
Una entrega se considera exitosa cuando tu endpoint responde con cualquier código HTTP 2xx.
Respuestas no-2xx provocarán intentos adicionales.
Tu endpoint webhook debe:
POST con payload JSON2xx para confirmar éxitoEjemplo de ack:
HTTP/1.1 200 OK
Content-Type: application/json
{"ok": true}
Usa el webhook event ID como clave de deduplicación.
Giftpack ofrece un log completo de eventos webhook en el dashboard. Cada evento incluye:
Estados en logs:
0 – failed1 – processing2 – successEl API de detalle de evento expone:
Ejemplo de detalle:
{
"webhook_event_id": "wev_01H...",
"webhook_setting_id": "whs_01H...",
"webhook_event_type": "giftee.shipped",
"webhook_event_resource_type": "giftee",
"webhook_event_resource_id": "gft_01H...",
"webhook_event_status": 2,
"webhook_event_attempts": 1,
"webhook_event_data": "{...raw payload...}",
"webhook_event_created_at": "2026-02-20T02:00:00.000Z",
"webhook_event_updated_at": "2026-02-20T02:00:01.000Z"
}
Cada intento incluye:
Este log habilita trazabilidad completa y facilita depuración.
Giftpack proporciona una consola de prueba integrada. Permite:
Esto habilita:
Ejemplo de respuesta:
{
"event_data": {
"type": "giftee.created",
"resource_type": "giftee",
"resource_id": "gft_01H..."
},
"response_http_status": "200",
"response_http_headers": {"content-type": "application/json"},
"response_http_body": "{\"ok\":true}"
}
La consola está pensada para desarrollo y validación previa a producción.
Aunque la UI actual pueda permitir http y https, en producción debes usar siempre HTTPS.
HTTPS garantiza:
Para un manejo webhook confiable:
La integración basada en webhook es la fuente autoritativa del lifecycle. No asumas que respuestas API síncronas representan estado final.
Para asegurar que los eventos vienen de Giftpack y no fueron alterados, cada request webhook se firma con un secret por workspace.
Las integraciones de producción deben verificar la firma.
Cada request incluye:
X-GIFTPACK-SIGNATURE: t=1708459200,v1=abcdef1234567890...
Componentes
t — timestamp Unix (segundos)v1 — firma HMAC SHA-256Generación:
HMAC_SHA256(secret, `${timestamp}.${raw_body}`)
Debe usarse el raw body exactamente como se recibe.
Pasos:
X-GIFTPACK-SIGNATUREt y v1expected_signature = HMAC_SHA256(secret, `${timestamp}.${raw_body}`)
Para prevenir replay attacks:
Ventana ejemplo:
current_time - timestamp <= 300 seconds
Ejemplo (Node.js)
const crypto = require('crypto');
function verifySignature(rawBody, signatureHeader, secret) {
if (!signatureHeader) return false;
const elements = signatureHeader.split(',');
const timestamp = elements.find(e => e.startsWith('t='))?.split('=')[1];
const signature = elements.find(e => e.startsWith('v1='))?.split('=')[1];
if (!timestamp || !signature) return false;
const payload = `${timestamp}.${rawBody}`;
const expected = crypto
.createHmac('sha256', secret)
.update(payload, 'utf8')
.digest('hex');
const isValid = crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
const currentTime = Math.floor(Date.now() / 1000);
const tolerance = 300;
if (Math.abs(currentTime - Number(timestamp)) > tolerance) {
return false;
}
return isValid;
}
Ejemplo Express:
app.post('/webhooks/giftpack',
express.raw({ type: 'application/json' }),
(req, res) => {
const signature = req.headers['x-giftpack-signature'];
const isValid = verifySignature(
req.body.toString(),
signature,
process.env.GIFTPACK_WEBHOOK_SECRET
);
if (!isValid) {
return res.status(400).send('Invalid signature');
}
const event = JSON.parse(req.body.toString());
// Process event safely
res.status(200).json({ ok: true });
});
Los webhook secrets:
Si rotas un secret, actualiza tu integración de inmediato.
Si falla la verificación:
2xxFallos repetidos pueden indicar:
La entrega webhook sigue at-least-once. Los eventos duplicados son posibles.

Giftpack API está diseñado alrededor de workflows de negocio reales.
En lugar de navegar endpoints directamente, elige primero el caso de negocio que vas a implementar. Cada caso describe:
La verificación de firma webhook se documenta en Webhooks y Eventos Asíncronos.
Escenario de Negocio
Quieres:
Este es un flujo de Giftee basado en Campaign.
Resumen del Lifecycle
Create Campaign
↓
Add Giftee
↓
Generate Redemption Link
↓
Recipient Claims
↓
Order Processing
↓
Shipped
↓
Delivered / Failed / Returned
POST /v1/campaigns
Define:
POST /v1/giftees
Cada giftee representa un recipient dentro del campaign.
POST /v1/campaigns/{campaignId}/giftees/{gifteeId}/redeemlink
Retorna:
share_claim_linkPuedes:
Para este caso, suscríbete al lifecycle de giftee:
giftee.created
giftee.launched
giftee.preparing
giftee.shipped
giftee.delivered
giftee.failed
giftee.returned
giftee.reviewed
Estos eventos representan el estado operativo de cada giftee. Consulta Webhooks y Eventos Asíncronos para:
Escenario de Negocio
Quieres:
Este es un flujo Direct Marketplace Order.
Resumen del Lifecycle
Select Product
↓
Create Marketplace Order
↓
Preparing
↓
Shipped
↓
Delivered / Failed / Returned
GET /v1/providers/{providerCode}/products
Usa este endpoint para listar productos disponibles. Luego, si hace falta, consulta detalle:
GET /v1/providers/{providerCode}/products/{productId}
Selecciona:
POST /v1/marketplaceorders
Proporciona:
La orden se acepta de forma asíncrona y comienza fulfillment.
Marketplace fulfillment se resuelve en eventos de lifecycle de giftee:
giftee.preparing
giftee.shipped
giftee.delivered
giftee.failed
giftee.returned
Consulta Webhooks y Eventos Asíncronos para:
Escenario de Negocio
Quieres:
Este es un flujo de gifting basado en puntos.
Resumen del Lifecycle
Enable Points
↓
Allocate Points
↓
Recipient Redeems
↓
Giftee Created
↓
Fulfillment Lifecycle
POST /v1/pointrecipients/{memberId}/enablepointfeature
Esto habilita al recipient para mantener y canjear puntos.
PATCH /v1/pointrecipients/{memberId}/points
Proporciona:
El saldo se actualiza inmediatamente.
Cuando un recipient canjea puntos:
El canje de puntos termina en eventos de lifecycle de giftee:
giftee.created
giftee.preparing
giftee.shipped
giftee.delivered
giftee.failed
giftee.returned
Consulta Webhooks y Eventos Asíncronos para: