fluyio.
Historial de cambios

2026-05-15 — Beta pública de la API v1

Entrada histórica en inglés sobre el lanzamiento de la API v1 y suscriptores.

Historial en inglés correspondiente al 2026-05-15. Se conserva el texto publicado y su contexto temporal; para implementar una integración, consulta la referencia actual.

API version: 2026-05-15

Beta

This is the first public version of the Fluyio API and it is in beta. It exposes one resource, Subscribers. Everything else is in development: see the hoja de ruta de la API. Send Fluyio-Version: 2026-05-15 on every request to pin your integration; it is also the default when the header is omitted.

Added

Subscribers resource

Seven endpoints under /v1/subscribers:

  • GET /v1/subscribers — cursor-paginated list with limit, sort and exact-match filters (filter[email], filter[external_id], filter[created_at_gte], filter[created_at_lte], filter[has_consent]).
  • GET /v1/subscribers/:id — retrieve.
  • POST /v1/subscribers — create with email and/or phone, names, external_id, properties and initial consent.
  • PATCH /v1/subscribers/:id — partial update; properties merged key by key.
  • DELETE /v1/subscribers/:id — delete.
  • POST /v1/subscribers/:id/subscribe and POST /v1/subscribers/:id/unsubscribe — consent per channel (email, sms, whatsapp, plus all for unsubscribe).

Ids are sub_ followed by 32 hexadecimal characters. Consent has three states per channel: subscribed, unsubscribed, never_subscribed. See the Subscribers reference.

API keys

Keys are created from the dashboard (API keys), with a name, a mode (live or test), scopes and an optional expiry. Only a SHA-256 hash is stored; the plaintext (fly_live_… or fly_test_…) is shown once. Requests authenticate with Authorization: Bearer <key>. See authentication.

Error envelope

Every error returns { "error": { "type", "code", "message", "param?", "request_id" } }, and every response carries a Fluyio-Request-Id header. See errors.

Cursor pagination

List responses return { "object": "list", "data": [...], "has_more", "next_cursor" }. Pass next_cursor back as cursor. See pagination.

Idempotency keys

POST and PATCH requests accept an Idempotency-Key header (8–128 characters). The response is cached for 24 hours per account, key, method and path; replays carry Idempotency-Replayed: true, and reusing a key with a different body returns 409 idempotency_key_reuse. See idempotency.

Date-based versioning

The Fluyio-Version header pins the schema. Malformed values return 400 invalid_version_header; unknown dates return 400 unknown_version with the list of supported_versions. See versioning.

Known limitations

  • Test mode is not isolated. fly_test_ keys are labelled as test (Fluyio-Mode: test) but operate on the same data as live keys.
  • Scopes are recorded but not enforced yet. Any valid key of the account can call every subscriber endpoint.
  • No lookup by email or external id in the path. Use filter[email] or filter[external_id] with limit=1.
  • No bulk endpoints, no SDKs, no OpenAPI document. Call the API over HTTP from your language; see HTTP & cURL.
  • Outgoing webhooks are not delivered yet, although endpoints can be registered from the dashboard. See webhooks.

Feedback

Public beta means we are listening. Write to [email protected] with the request_id of any surprising response, or with the resource you need next.

En esta página