fluyio.
Referencia de la APISuscriptores

Dar de baja de un canal

Retira el consentimiento de uno o todos los canales.

POST /v1/subscribers/:id/unsubscribe

Requiere el permiso subscribers:write o full. Los permisos se comprueban en el servidor. Las claves test se rechazan con 403 test_mode_unavailable; no existe un sandbox aislado.

Da de baja al suscriptor de un canal o de todos mediante channel: "all" y devuelve su estado actualizado.

Parámetro de ruta

id es el identificador sub_… del suscriptor. También se admite el UUID sin prefijo, con o sin guiones. Cualquier otro formato devuelve 400 invalid_param.

Cuerpo de la petición

Los campos desconocidos se rechazan con 400 invalid_param.

CampoTipoDescripción
channelstringObligatorio: email, sms, whatsapp o all.
reasonstringMotivo libre, hasta 500 caracteres; por defecto manual. Se conserva con la baja de WhatsApp y es informativo para los otros canales.

Efecto por canal

  • Email: registra la baja y su fecha; con email y sin supresiones previas devuelve unsubscribed.
  • SMS: registra la baja; con teléfono devuelve unsubscribed.
  • WhatsApp: con teléfono registra la baja, el motivo y la fecha; devuelve unsubscribed si no hay una supresión previa.
  • all: aplica la baja a los tres canales.

Las supresiones por rebote, queja o bloqueo se conservan; dar de baja no las elimina. Si el contacto no tiene email o teléfono, el objeto público puede mostrar never_subscribed para el canal sin destino, aunque se conserve internamente la baja que corresponda.

Respuesta

El suscriptor actualizado con 200 OK. Repetir la operación sobre el mismo estado no vuelve a cambiar su significado.

Ejemplo

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", "reason": "user_request" }'

Respuesta

{
  "id": "sub_9f1c2b3a4d5e6f708192a3b4c5d6e7f8",
  "object": "subscriber",
  "email": "[email protected]",
  "phone": "+34600000000",
  "first_name": "Ada",
  "last_name": "Lovelace",
  "external_id": "user_12345",
  "consent": {
    "email": "unsubscribed",
    "sms": "subscribed",
    "whatsapp": "subscribed"
  },
  "properties": {
    "company": "Analytical Engines",
    "plan": "pro",
    "country": "ES"
  },
  "lists": ["lst_0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f"],
  "tags": ["beta", "vip"],
  "created_at": "2026-05-11T12:34:56.000Z",
  "updated_at": "2026-05-11T19:01:00.000Z",
  "last_active_at": "2026-05-11T15:00:00.000Z"
}

Dar de baja de todos los canales

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": "all", "reason": "gdpr_request" }'

Conservar una baja y eliminar un registro son decisiones diferentes. Si después utilizas DELETE, no presupongas que conservarás la baja en ese registro eliminado.

Errores

HTTPcodeDescripción
401missing_api_key / invalid_api_keyFalta la clave, no es válida, ha caducado o está revocada.
403missing_scopeLa clave no permite esta operación.
403test_mode_unavailableEl modo de pruebas no está disponible.

| 400 | invalid_param | ID, canal, origen o motivo no válido, propiedad reservada o campo desconocido. | | 404 | resource_not_found | El suscriptor no existe en esta marca. |

En esta página