Conectar tu tienda online con Radiate
Cotizá envíos en tiempo real, despachá pedidos automáticamente a la red de repartidores, seguí el estado de cada entrega y cancelá despachos si el cliente cancela la orden. Todo con una API key.
1Autenticación con API Key
Las peticiones de comercio requieren tu clave secreta, que se genera al registrar el comercio y queda en el portal (/merchant → "Desarrolladores & API"). Un administrador aprueba el alta del comercio antes de que pueda despachar. El rastreo público no requiere clave.
Authorization: Bearer rad_live_TU_API_KEYgpp_goodClaves rad_live_ (producción) y rad_test_ (sandbox). Cada clave tiene su límite de solicitudes por minuto y responde 429 + Retry-After al superarlo.
2Cotizar Envío en el CheckoutPOST /api/v1/shipments/quote
{
"pickup_address": "Av. Belgrano 450, Salta Capital",
"delivery_address": "B° Tres Cerritos, Los Eucaliptos 120",
"package_size": "small",
"declared_value": 15000
}Responde el costo total (total_cost), la ganancia del repartidor y la comisión de la plataforma. La cotización coincide siempre con el cargo final del despacho.
3Crear Despacho al Confirmar PagoPOST /api/v1/shipments/create
{
"external_order_id": "ORD-10948", // ID de la orden en tu tienda
"pickup_address": "Av. Belgrano 450, Salta",
"pickup_contact_name": "Mi Tienda Local Centro",
"pickup_contact_phone": "+54 9 387 500-1122",
"delivery_address": "B° Tres Cerritos, Los Eucaliptos 120",
"delivery_contact_name": "Mariana Gómez",
"delivery_contact_phone": "+54 9 387 455-6677",
"package_size": "small",
"declared_value": 24500,
"is_cod": false,
"cod_amount": 0
}La respuesta incluye el tracking_code, el security_pin (lo comunicás al comprador: el repartidor lo pedirá al entregar), el desglose de cobro (billing) y el tracking_url para el comprador. Se dispara el webhook shipment.requested.
Idempotencia: si reenviás el mismo external_order_id (timeout de red, reintento), Radiate no crea un duplicado: responde el despacho existente con "duplicate": true y sin generar un nuevo cargo. Es seguro reintentar.
Cobro: al crear, el costo se acredita a tu cuenta corriente. Si superás tu límite de crédito, el despacho se rechaza con 402 y no entra a la bolsa. Consultá tu saldo con GET /billing/balance.
4Rastreo PúblicoGET /api/v1/tracking
Sin API key: consultá el estado del envío por código de tracking y devolvés el link al comprador para que siga su pedido (con el repartidor asignado y la línea de tiempo). Límite: 60 consultas/minuto por IP.
GET /api/v1/tracking?code=RD-894102
{
"success": true,
"data": {
"tracking_code": "RD-894102",
"status": "in_transit",
"delivery_address": "B° Tres Cerritos, Los Eucaliptos 120",
"driver": { "name": "Carlos Gómez", "phone": "+54 9 387 512-3456" },
"events": [
{ "status": "requested", "label": "Pedido despachado por el comercio", "at": "2026-08-21T12:00:00Z" },
{ "status": "assigned", "label": "Repartidor asignado", "at": "2026-08-21T12:05:00Z" }
]
}
}5Webhooks en Tiempo RealFirma HMAC
Cada cambio de estado dispara un POST firmado a tu webhook_url (configurable en el portal). Eventos: shipment.requested, assigned, picked_up, in_transit, delivered y cancelled.
POST → tu webhook_url
Header: X-Radiate-Signature: sha256=<HMAC del body con tu webhook_secret>
{
"event": "shipment.delivered",
"timestamp": "2026-08-21T12:30:00Z",
"data": {
"tracking_code": "RD-894102",
"external_order_id": "ORD-10948",
"status": "delivered",
"driver": { "name": "Carlos Gómez", "phone": "+54 9 387 512-3456" },
"tracking_url": "https://www.radiate.com.ar/track?code=RD-894102"
}
}const crypto = require('crypto');
function verifySignature(rawBody, signature, secret) {
const expected = 'sha256=' +
crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature), Buffer.from(expected)
);
}Respondé 2xx para confirmar. Si tu endpoint falla, Radiate reintenta con backoff exponencial (hasta 5 intentos).
6Consultar Envíos y ReconciliarAPI Key
Consultá tus despachos y tu cuenta corriente sin depender de los webhooks (ideal para reconciliar tras un reintento o un webhook perdido). Todas requieren API key.
GET /api/v1/shipments?external_order_id=ORD-10948 GET /api/v1/shipments?status=in_transit&date_from=2026-09-01T00:00:00Z&limit=20 GET /api/v1/shipments?tracking_code=RD-894102 → billing, cod, security_pin, invoiced, timestamps y paginación (limit/offset)
GET /api/v1/shipments/:id → status, driver, events[] (timeline), proof_of_delivery, cancel_reason
GET /api/v1/billing/balance
{
"current_balance_ars": 123450,
"credit_limit_ars": 250000,
"credit_available_ars": 126550,
"pending_invoices_count": 1,
"uninvoiced_shipments_count": 8
}GET /api/v1/billing/invoices?status=pending → invoice_number, periodo, envíos, subtotal/impuestos/total, vencimiento
7Cancelar un DespachoPOST /api/v1/shipments/:id/cancel
Si el cliente cancela la orden, cancelá el despacho mientras sigue en la bolsa (sin repartidor asignado). Si el envío aún no está facturado, el costo se devuelve a tu cuenta corriente y se dispara el webhook shipment.cancelled.
curl -X POST https://www.radiate.com.ar/api/v1/shipments/ENVIO_ID/cancel \
-H "Authorization: Bearer rad_live_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "reason": "El cliente canceló la orden ORD-10948" }'
→ 200 { "refunded": true, "refund_amount_ars": 5075 }
409 (ya tiene repartidor o ya fue procesado)
404 (no existe o no es de tu comercio)8Ejemplos (cURL)
# 1. Cotizar
curl -X POST https://www.radiate.com.ar/api/v1/shipments/quote \
-H "Authorization: Bearer rad_live_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "pickup_address": "Av. Belgrano 450, Salta", "delivery_address": "B° Tres Cerritos 120", "package_size": "small" }'
# 2. Crear despacho
curl -X POST https://www.radiate.com.ar/api/v1/shipments/create \
-H "Authorization: Bearer rad_live_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "external_order_id": "ORD-10948", "delivery_address": "B° Tres Cerritos 120", "delivery_contact_name": "Mariana Gómez", "delivery_contact_phone": "+54 9 387 455-6677" }'
# 3. Consultar por tu order id
curl "https://www.radiate.com.ar/api/v1/shipments?external_order_id=ORD-10948" \
-H "Authorization: Bearer rad_live_TU_API_KEY"
# 4. Saldo y facturas
curl "https://www.radiate.com.ar/api/v1/billing/balance" -H "Authorization: Bearer rad_live_TU_API_KEY"
curl "https://www.radiate.com.ar/api/v1/billing/invoices" -H "Authorization: Bearer rad_live_TU_API_KEY"¿Listo para probar la API?
Registrá tu comercio y obtené tus claves Live y Sandbox al instante.