Inicio rápido
Crea una clave API, da de alta un suscriptor con consentimiento y consulta tu audiencia.
API v1 en beta
La API pública expone suscriptores. El resto de recursos sigue en desarrollo; consulta la hoja de ruta.
Esta guía recorre la creación de una clave, un suscriptor mediante POST /v1/subscribers y una consulta paginada reutilizable.
Antes de empezar
Necesitas una cuenta de Fluyio con una marca y una terminal con cURL, Node.js 18+, Python 3.9+ o PHP 8.1+. No hay SDKs oficiales; la API utiliza JSON sobre HTTPS.
Crea una clave API
Abre Claves API en el panel y crea una clave para la marca que vas a utilizar.
- Nombre:
quickstart. - Modo:
live. - Permisos:
subscribers:readysubscribers:write; utilizafullsolo si necesitas todos los permisos.
La clave completa se muestra una vez. El formato es fly_live_ seguido de 48 caracteres hexadecimales; el panel conserva un prefijo de 15 caracteres para identificarla.
No existe un sandbox aislado. Las claves test se rechazan con 403 test_mode_unavailable. Usa una marca y contactos aislados para esta prueba, con una clave live dedicada. Protege la clave como una contraseña: no la publiques en código del navegador, repositorios ni capturas; revócala si se expone.
Guarda la clave en el entorno
export FLUYIO_API_KEY="fly_live_..."Cada petición la envía en Authorization: Bearer …. Aunque Fluyio-Version es opcional con la única versión actual 2026-05-15, enviarla de forma explícita fija el contrato de la integración.
Crea un suscriptor
El ejemplo registra un consentimiento de email ya obtenido. Omitir consent.email o enviar never_subscribed conserva el estado pendiente y devuelve never_subscribed; no da de alta automáticamente a la persona.
curl -X POST https://fluyio.com/api/v1/subscribers \
-H "Authorization: Bearer $FLUYIO_API_KEY" \
-H "Fluyio-Version: 2026-05-15" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: quickstart-ada-0001" \
-d '{
"email": "[email protected]",
"first_name": "Ada",
"last_name": "Lovelace",
"external_id": "user_12345",
"consent": { "email": "subscribed" },
"properties": { "company": "Analytical Engines", "plan": "pro" }
}'Respuesta: 201 Created
{
"id": "sub_9f1c2b3a4d5e6f708192a3b4c5d6e7f8",
"object": "subscriber",
"email": "[email protected]",
"phone": null,
"first_name": "Ada",
"last_name": "Lovelace",
"external_id": "user_12345",
"consent": {
"email": "subscribed",
"sms": "never_subscribed",
"whatsapp": "never_subscribed"
},
"properties": { "company": "Analytical Engines", "plan": "pro" },
"lists": [],
"tags": [],
"created_at": "2026-05-11T14:32:08.421Z",
"updated_at": "2026-05-11T14:32:08.421Z",
"last_active_at": null
}Encontrarás a Ada en los suscriptores de la marca. Guarda su id para las operaciones posteriores.
Reutiliza la misma Idempotency-Key y el mismo cuerpo para una operación. Una respuesta completada se reproduce durante 24 horas. Si una operación ya reservada devuelve un 5xx o tiene resultado incierto, la clave permanece reservada 24 horas y no reejecuta automáticamente la escritura. Revisa el estado antes de iniciar otra operación con una clave distinta. Consulta idempotencia.
Un 503 idempotency_unavailable indica que no se inició la operación; no garantiza una reserva creada. Reintenta la misma operación con la misma clave, sin generar otra para eludir la protección.
Consulta los suscriptores
curl -g "https://fluyio.com/api/v1/subscribers?limit=25&filter[has_consent]=email" \
-H "Authorization: Bearer $FLUYIO_API_KEY" \
-H "Fluyio-Version: 2026-05-15"La respuesta incluye has_more y next_cursor. Envía este último como cursor para la siguiente página. Conserva filtros y orden durante el recorrido; consulta paginación.
Cambia el consentimiento
El consentimiento se gestiona por canal mediante operaciones explícitas. Este ejemplo da de baja el email:
# Opt Ada out of email
curl -X POST https://fluyio.com/api/v1/subscribers/sub_9f1c2b3a4d5e6f708192a3b4c5d6e7f8/unsubscribe \
-H "Authorization: Bearer $FLUYIO_API_KEY" \
-H "Fluyio-Version: 2026-05-15" \
-H "Content-Type: application/json" \
-d '{ "channel": "email" }'Para un alta con consentimiento nuevo utiliza subscribe. SMS y WhatsApp requieren teléfono; WhatsApp exige E.164. Las supresiones por rebote, queja o bloqueo no se eliminan con una nueva llamada de alta.
Errores frecuentes
401 missing_api_keyoinvalid_api_key: revisa la cabecera, la caducidad y la revocación.403 missing_scope: la clave no tiene el permiso de lectura o escritura necesario.403 test_mode_unavailable: utiliza una clave live dedicada; no hay sandbox.400 unknown_version: usa2026-05-15u omite la cabecera.409 resource_already_exists: localiza el email confilter[email]y usa PATCH.403 profile_limit: revisa el límite de perfiles aplicable antes de continuar.429 rate_limit_exceeded: respetaRetry-After. Los límites por clave son 150 peticiones cada 10 segundos y 600 por minuto.