---
title: Sequin Stream API Integration on Truto
slug: sequinstream
category: Database
canonical: "https://truto.one/integrations/detail/sequinstream/"
---

# Sequin Stream API Integration on Truto



**Category:** Database  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 27 tools for Sequin Stream that AI agents can call directly.

- **create_a_sequin_stream_backfill** — Create a new backfill for a Sequin sink, starting it in the active state. Returns: id, state, sink_consumer, rows_initial_count, rows_processed_count, rows_ingested_count, inserted_at, updated_at, canceled_at, completed_at, table, sort_column. Required: sink_id_or_name. Specify table when the sink is configured to stream all tables in a schema.
- **delete_a_sequin_stream_backfill_by_id** — Delete a Sequin backfill by id. Returns: id, deleted. Required: sink_id_or_name, id.
- **get_single_sequin_stream_backfill_by_id** — Get details of a specific Sequin backfill by id. Returns: id, state, sink_consumer, rows_ingested_count, rows_processed_count, rows_initial_count, inserted_at, updated_at, canceled_at, completed_at, table, sort_column. Required: sink_id_or_name, id.
- **list_all_sequin_stream_backfills** — List all backfills for a Sequin sink. Returns: id, state, sink_consumer, rows_ingested_count, rows_processed_count, rows_initial_count, inserted_at, updated_at, canceled_at, completed_at, table, sort_column. Required: sink_id_or_name.
- **update_a_sequin_stream_backfill_by_id** — Update the state of a Sequin backfill, for example to cancel an active backfill. Returns: id, state, sink_consumer, rows_ingested_count, rows_processed_count, rows_initial_count, inserted_at, updated_at, canceled_at, completed_at, table, sort_column. Required: sink_id_or_name, id.
- **create_a_sequin_stream_http_endpoint** — Create a new HTTP endpoint in Sequin (regular HTTP, webhook.site, or local type). Returns: id, name, url, headers, encrypted_headers (response fields vary by endpoint type). Required: name.
- **delete_a_sequin_stream_http_endpoint_by_id** — Delete an HTTP endpoint in Sequin by id. Returns: id, deleted.
- **get_single_sequin_stream_http_endpoint_by_id** — Get details for a specific HTTP endpoint in Sequin by id. Returns: id, name, url, headers, encrypted_headers (fields vary by endpoint type: regular, webhook.site, or local).
- **list_all_sequin_stream_http_endpoints** — List all HTTP endpoints in Sequin. Returns: id, name, url, headers, encrypted_headers per endpoint (fields vary by type: regular, webhook.site, or local).
- **update_a_sequin_stream_http_endpoint_by_id** — Update an existing HTTP endpoint in Sequin by id. Returns: id, name, url, headers, encrypted_headers (fields vary by endpoint type: regular, webhook.site, or local).
- **create_a_sequin_stream_postgres_database** — Create a Sequin Postgres database connection with a replication slot. Returns: id, name, hostname, port, database, ssl, ipv6, use_local_tunnel, replication_slots. Required: name, replication_slots (exactly one slot). Supply either url or individual connection params (hostname, database, username, password).
- **delete_a_sequin_stream_postgres_database_by_id** — Delete a Sequin Postgres database connection and its associated replication slot by id. Returns: success, id. Required: id. Fails with a validation error if the database has associated sink consumers or WAL pipelines.
- **get_single_sequin_stream_postgres_database_by_id** — Get a single Sequin Postgres database connection by id. Returns: id, name, hostname, port, database, username, ssl, ipv6, use_local_tunnel, pool_size, queue_interval, queue_target, replication_slots. Required: id.
- **list_all_sequin_stream_postgres_databases** — List all Sequin Postgres database connections in your account. Returns: id, name, hostname, port, database, username, ssl, ipv6, use_local_tunnel, pool_size, queue_interval, queue_target, replication_slots.
- **update_a_sequin_stream_postgres_database_by_id** — Update an existing Sequin Postgres database connection by id. Returns: id, name, hostname, port, database, ssl, ipv6, use_local_tunnel, replication_slots. Required: id. When updating replication_slots, supply exactly one slot object including its id.
- **create_a_sequin_stream_sink_consumer** — Create a new sink consumer in Sequin. Returns: id, name, status, database, source, destination, actions, batch_size, load_shedding_policy, health, and more. Required: name, database, destination.
- **delete_a_sequin_stream_sink_consumer_by_id** — Delete a Sequin sink consumer by id. Returns an empty 204 response on success.
- **get_single_sequin_stream_sink_consumer_by_id** — Get a single Sequin sink consumer by id. Returns: id, name, status, database, source, destination, actions, batch_size, load_shedding_policy, message_grouping, health, and more.
- **list_all_sequin_stream_sink_consumers** — List all Sequin sink consumers. Returns per record: id, name, status, database, source, destination, actions, batch_size, load_shedding_policy, and health.
- **update_a_sequin_stream_sink_consumer_by_id** — Update an existing Sequin sink consumer by id. Returns: id, name, status, database, source, destination, actions, batch_size, load_shedding_policy, message_grouping, health, and more.
- **update_a_sequin_stream_http_pull_consumer_by_id** — Acknowledge messages in a Sequin http_pull_consumer, marking them as processed and removing them from the stream. Returns: success. Required: ack_ids.
- **list_all_sequin_stream_http_pull_consumers** — Receive next messages from a Sequin http_pull_consumer stream. Returns: ack_id, record, action, changes, and metadata per message. Use batch_size to request multiple messages at once and wait_for to enable long polling.
- **create_a_sequin_stream_postgres_database_table_refresh** — Trigger a table refresh for a Sequin PostgreSQL database, causing Sequin to re-sync its internal list of available tables from the upstream database. Returns an empty 204 response on success. Required: database_id_or_name.
- **create_a_sequin_stream_postgres_database_connection_test** — Test the connection for an existing Sequin Postgres database, verifying network reachability, authentication, connect permissions, and replication slot validity. Returns an empty 204 response on success. Required: database_id_or_name.
- **list_all_sequin_stream_http_pull_consumer_messages** — Receive pending messages from a Sequin HTTP pull consumer. Returns messages including ack_id and data (the record payload with metadata). Required: consumer_id_or_name.
- **create_a_sequin_stream_http_pull_consumer_ack** — Acknowledge one or more messages for a Sequin HTTP pull consumer, marking them as successfully processed and removing them from redelivery. Required: consumer_id_or_name, ack_ids. Returns an empty 204 response on success.
- **create_a_sequin_stream_http_pull_consumer_nack** — Negatively acknowledge (nack) messages for a Sequin HTTP pull consumer, signaling that they should be requeued for redelivery. Returns an empty 204 response on success. Required: consumer_id_or_name.

## How it works

1. **Link your customer's Sequin Stream account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Sequin Stream.** The Proxy API is a 1-to-1 mapping of the Sequin Stream API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Offer Bring-Your-Own-Database sync to customers** — Let your users connect their own Postgres database so your SaaS can ingest their operational data in real time, without asking them to build or maintain CDC pipelines on their end.
- **Power real-time search and index synchronization** — Search and discovery platforms can keep customer-managed indexes perfectly in sync with the source-of-truth Postgres tables by consuming inserts, updates, and deletes as they happen.
- **Capture audit trails for compliance products** — Security, governance, and SOC2 audit tools can subscribe to changes on sensitive tables in customer databases and stream immutable change events into their own ledger.
- **Replace brittle client-side tracking in CDPs** — Customer Data Platforms and marketing automation tools can ingest user, order, and event data directly from the customer's database rather than depending on unreliable JavaScript or webhook glue code.
- **Stream OLTP data into analytics warehouses** — Embedded analytics and reverse-ETL products can move customer transactional data into their pipeline with sub-second latency, eliminating batch ETL lag for their end users.

## What you can build

- **One-click Postgres source onboarding** — Programmatically register a customer's Postgres database, validate credentials with a connection test, and configure replication slots before any data flows.
- **Automated backfill-to-live cutover** — Trigger a historical backfill on selected tables when a customer first connects, then seamlessly continue ingesting live WAL changes without manual orchestration.
- **Managed webhook destinations per tenant** — Create and manage dedicated HTTP endpoints for each customer so change events land on isolated ingest URLs you control.
- **Long-polling consumer workers with exactly-once processing** — Build worker pools that pull batches of changes, process them in your pipeline, and ack or nack messages to guarantee no events are lost or double-processed.
- **Tenant-aware sink routing and load shedding** — Provision per-table sink consumers with configurable batch sizes and load shedding policies so a noisy customer database can't overwhelm your ingestion API.
- **Self-serve sync controls in your dashboard** — Expose UI for customers to start, pause, or delete backfills on specific tables, giving them visibility and control over what gets synced into your product.

## FAQs

### How does authentication work for Sequin Stream through Truto?

Truto handles credential storage and request signing on behalf of your end users, so your application doesn't manage Sequin API tokens directly. End users connect their Sequin account once and Truto brokers all subsequent API calls.

### Can we both push (webhook) and pull (long-poll) change events?

Yes. You can create sink consumers that push changes to HTTP endpoints, or use HTTP pull consumers to fetch batches of messages on your own schedule and acknowledge them with ack or nack.

### How are historical records handled when a customer first connects?

Use the backfill endpoints to seed historical rows from selected tables. Sequin automatically transitions from backfill to live WAL streaming without gaps or duplicate processing.

### What delivery guarantees does Sequin Stream provide?

Sequin guarantees strict in-order, exactly-once processing through its ack/nack model. Messages that aren't acknowledged are redelivered, and ack'd messages are not sent again.

### Can we validate a customer's database credentials before going live?

Yes. The Postgres database connection test endpoint lets you verify host, credentials, and replication slot configuration before activating any sinks or consumers.

### How do we prevent a customer's traffic spike from overwhelming our ingestion API?

Sink consumers expose batch size and load shedding policy configuration, letting you tune throughput per tenant and shed load gracefully under heavy write volume.
