Estuary

Estuary builds Estuary Flow, a real-time data movement platform for streaming ETL and change data capture (CDC). Flow captures data from databases, warehouses, and SaaS systems into durable collections and materializes those collections back out to destinations. The Flow control plane exposes a Supabase/PostgREST-based REST API (Bearer refresh/access tokens) covering captures, materializations, collections, catalog drafts and publications, connectors, and tenants/billing, while the data plane is driven declaratively via the flowctl CLI and a Gitops model.

8 APIs 0 Features
Data IntegrationStreaming ETLChange Data CaptureCDCReal-Time DataData Pipelines

APIs

Estuary Captures API

Manage capture task specifications that continuously ingest data from source databases, warehouses, and SaaS systems into Flow collections, modeled as live_specs of catalogType ...

Estuary Materializations API

Manage materialization task specifications that push Flow collections out to destination systems (databases, warehouses, queues), modeled as live_specs of catalogType 'materiali...

Estuary Collections API

Read and manage collections - durable, schematized, real-time datasets of JSON documents keyed and stored in cloud object storage - exposed as live_specs of catalogType 'collect...

Estuary Catalog Drafts API

Create and edit drafts and their draft_specs - the staging area where proposed changes to captures, materializations, and collections are assembled and tested before being publi...

Estuary Publications API

Submit a draft for publication, validating and promoting its specs into the running data plane as live_specs; asynchronous jobs recorded in the publications table with a job sta...

Estuary Connectors API

Browse the catalog of available capture and materialization connectors and their tagged image versions (connectors, connector_tags), and run schema discovery against a configure...

Estuary Tenants & Billing API

Read tenant configuration, catalog usage statistics (catalog_stats - bytes and docs captured/materialized), and monthly billing estimates via the billing_report_202308 RPC used ...

Estuary Auth & Tokens API

Manage long-lived refresh_tokens and exchange a refresh token for a short-lived access token via the generate_access_token RPC; inspect roles and capability grants (user_grants,...

Collections

Pricing Plans

Estuary Plans Pricing

3 plans

PLANS

Rate Limits

Estuary Rate Limits

5 limits

RATE LIMITS

FinOps

Resources

🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
📰
Blog
Blog

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Estuary Flow Control Plane API
  version: '1.0'
request:
  auth:
    type: bearer
    token: '{{accessToken}}'
items:
- info:
    name: Auth
    type: folder
  items:
  - info:
      name: Exchange a refresh token for a short-lived access token.
      type: http
    http:
      method: POST
      url: https://api.estuary.dev/rpc/generate_access_token
      body:
        type: json
        data: '{"refresh_token":{"id":"","secret":""}}'
    docs: PostgREST RPC that exchanges a refresh token id + secret for a signed access token used as the Authorization Bearer
      credential.
  - info:
      name: List refresh tokens.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/refresh_tokens
    docs: List the long-lived refresh tokens owned by the authenticated user.
  - info:
      name: Create a refresh token.
      type: http
    http:
      method: POST
      url: https://api.estuary.dev/refresh_tokens
      body:
        type: json
        data: '{"detail":"","multi_use":true,"valid_for":"90 days"}'
    docs: Create a new long-lived refresh token; the secret is returned once.
  - info:
      name: Revoke a refresh token.
      type: http
    http:
      method: DELETE
      url: https://api.estuary.dev/refresh_tokens?id=eq.:id
      params:
      - name: id
        value: ''
        type: path
        description: The refresh token id to revoke.
    docs: Revoke a refresh token.
  - info:
      name: List user grants.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/user_grants
    docs: List capability grants from users to catalog prefixes.
  - info:
      name: List role grants.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/role_grants
    docs: List capability grants between catalog prefixes (roles).
- info:
    name: Live Specs
    type: folder
  items:
  - info:
      name: List live specifications (captures, materializations, collections).
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/live_specs?spec_type=eq.capture
    docs: List published, running catalog entities. Filter by spec_type (capture, materialization, collection, test) and catalog_name
      using PostgREST operators.
  - info:
      name: Get a single live specification.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/live_specs?id=eq.:id
      params:
      - name: id
        value: ''
        type: path
        description: The live spec flowid.
    docs: Get a single live spec by id.
  - info:
      name: List data-flow lineage edges.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/live_spec_flows
    docs: List source-to-target edges between live specs.
- info:
    name: Drafts
    type: folder
  items:
  - info:
      name: List drafts.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/drafts
    docs: List drafts owned by the user.
  - info:
      name: Create a draft.
      type: http
    http:
      method: POST
      url: https://api.estuary.dev/drafts
      body:
        type: json
        data: '{"detail":""}'
    docs: Create a new empty draft.
  - info:
      name: Delete a draft.
      type: http
    http:
      method: DELETE
      url: https://api.estuary.dev/drafts?id=eq.:id
      params:
      - name: id
        value: ''
        type: path
        description: The draft id to delete.
    docs: Delete a draft and its draft specs.
  - info:
      name: List draft specs.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/draft_specs?draft_id=eq.:draft_id
      params:
      - name: draft_id
        value: ''
        type: path
        description: The parent draft id.
    docs: List the capture/materialization/collection specs staged within a draft.
  - info:
      name: Upsert a draft spec.
      type: http
    http:
      method: POST
      url: https://api.estuary.dev/draft_specs
      body:
        type: json
        data: '{"draft_id":"","catalog_name":"acmeCo/source","spec_type":"capture","spec":{}}'
    docs: 'Add or replace a spec in a draft. Send Prefer: resolution=merge-duplicates to update in place.'
- info:
    name: Publications
    type: folder
  items:
  - info:
      name: List publications.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/publications
    docs: List publication jobs and their status.
  - info:
      name: Publish a draft.
      type: http
    http:
      method: POST
      url: https://api.estuary.dev/publications
      body:
        type: json
        data: '{"draft_id":"","dry_run":false}'
    docs: Enqueue an asynchronous publication of a draft into the running data plane; poll the created row until job_status.type
      is success.
- info:
    name: Connectors
    type: folder
  items:
  - info:
      name: List connectors.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/connectors
    docs: List available capture and materialization connectors.
  - info:
      name: List connector tags.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/connector_tags
    docs: List tagged image versions of connectors and their endpoint/resource spec schemas.
  - info:
      name: Run schema discovery.
      type: http
    http:
      method: POST
      url: https://api.estuary.dev/discovers
      body:
        type: json
        data: '{"connector_tag_id":"","capture_name":"acmeCo/source","endpoint_config":{}}'
    docs: Enqueue a discovery job to produce recommended bindings and collection schemas for a capture.
- info:
    name: Tenants & Billing
    type: folder
  items:
  - info:
      name: List tenants.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/tenants
    docs: List tenants (billing/ownership prefixes) the user can access.
  - info:
      name: Read catalog usage statistics.
      type: http
    http:
      method: GET
      url: https://api.estuary.dev/catalog_stats?grain=eq.monthly
    docs: Read bytes and docs captured/materialized per catalog entity and grain.
  - info:
      name: Compute a monthly billing report.
      type: http
    http:
      method: POST
      url: https://api.estuary.dev/rpc/billing_report_202308
      body:
        type: json
        data: '{"billed_prefix":"acmeCo/","billed_month":"2026-07-01"}'
    docs: RPC returning data-movement GB, connector-instance line items, and total for a tenant and billed month.
bundled: true