---
title: "Create Sink"
method: POST
path: "/api/v1/stream/{stream_id}/sink"
tags: ["Sink"]
---

# Create Sink

`POST /api/v1/stream/{stream_id}/sink`

Creates a new sink.

## Path parameters

- `stream_id` string, required — The Stream's ID or UID.

## Headers

- `idempotency-key` string

## Request body

- union
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `type` 'poller', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` AzureBlobStorageConfigIn, required
      - `accessKey` string, nullable — Access key. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `account` string, required
      - `container` string, required
    - `type` 'azureBlobStorage', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` OtelTracingConfigIn, required
      - `headers` object
      - `url` string, uri, required
    - `type` 'otelTracing', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` SinkHttpConfigIn, required
      - `headers` object
      - `key` string, nullable
      - `url` string, uri, required
    - `type` 'http', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` S3ConfigIn, required
      - `accessKeyId` string, nullable — Access key ID. Required (along with `secret_access_key`) if `role_arn` is null
      - `bucket` string, required
      - `endpointUrl` string, uri, nullable
      - `externalId` string, nullable — Shared secret passed as the STS ExternalId. Required if `role_arn` is not null.
      - `region` string, nullable — The region of the S3 bucket Currently a required field, but marked as optional because we may infer it from other fields in the future.
      - `roleArn` string, nullable — Role ARN for delegated authentication
      - `secretAccessKey` string, nullable — Secret access key. Required (along with `access_key_id`) if `role_arn` is null
    - `type` 'amazonS3', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` GoogleCloudStorageConfigIn, required — Configuration for a Google Cloud Storage sink. Write stream events into the named bucket using the supplied Google Cloud credentials.
      - `bucket` string, required
      - `credentials` string, required — Google Cloud Credentials JSON Object as a string.
    - `type` 'googleCloudStorage', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` GoogleCloudPubSubConfigIn, required
      - `credentials` string, required — Google Cloud Credentials JSON Object as a string.
      - `projectId` string, required
      - `topicId` string, required
    - `type` 'googleCloudPubSub', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` SqsConfigIn, required — Configuration for an SQS sink.
      - `accessKeyId` string, nullable — Access key ID. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `endpointUrl` string, uri, nullable
      - `queueUrl` string, uri, required
      - `region` string, nullable — The region of the SQS queue. Currently a required field, but marked as optional because we may infer it from other fields in the future.
      - `secretAccessKey` string, nullable — Secret access key. Currently a required field, but marked as optional because we may add different authentication in the future.
    - `type` 'sqs', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` SnsConfigIn, required — Configuration for a SNS sink.
      - `accessKeyId` string, nullable — Access key ID. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `endpointUrl` string, uri, nullable
      - `region` string, nullable — The region of the SNS instance. Currently a required field, but marked as optional because we may infer it from other fields in the future.
      - `secretAccessKey` string, nullable — Secret access key. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `topicArn` string, required
    - `type` 'sns', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` BigQueryConfigIn, required — Configuration for a Google Cloud BigQuery sink.
      - `credentials` string, required — Google Cloud Credentials JSON Object as a string.
      - `datasetId` string, required
      - `projectId` string, required
      - `tableId` string, required
    - `type` 'bigQuery', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` ClickhouseConfigIn, required
      - `database` string — The Clickhouse database to connect to.
      - `password` string, nullable — Password to access Clickhouse. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `tableName` string, required — The Clickhouse table to write to.
      - `url` string, uri, required — The HTTP URL of the ClickHouse server (e.g. `https://my_clickhouse:8443`).
      - `username` string, nullable — Username to access Clickhouse. Currently a required field, but marked as optional because we may add different authentication in the future.
    - `type` 'clickhouse', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` EventBridgeConfigIn, required
      - `accessKeyId` string, nullable — Access key ID. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `detailType` string — Free-form string, with a maximum of 128 characters
      - `eventBusName` string, required — The name or ARN of the event bus to receive the event
      - `region` string, nullable — The region of the EventBridge bus. Currently a required field, but marked as optional because we may infer it from other fields in the future.
      - `secretAccessKey` string, nullable — Secret access key. Currently a required field, but marked as optional because we may add different authentication in the future.
    - `type` 'eventBridge', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` SnowflakeConfigIn, required — Configuration parameters for defining a Snowflake sink.
      - `accountIdentifier` string, required — Snowflake account identifier, which includes both the organization and account IDs separated by a hyphen.
      - `dbName` string — Database name. Only required if not using transformations.
      - `privateKey` string, nullable — PEM-encoded private key used for signing token-based requests to the Snowflake API. Beginning/end delimiters are not required. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `schemaName` string — Schema name. Only required if not using transformations.
      - `tableName` string — Table name. Only required if not using transformations.
      - `userId` string, required — The Snowflake user id.
    - `type` 'snowflake', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` RabbitMqConfigIn, required — Configuration for a RabbitMq sink.
      - `routingKey` string, required
      - `uri` string, required
    - `type` 'rabbitMq', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` RedshiftConfigIn, required — Configuration parameters for defining a Redshift sink. For provisioned clusters, set `cluster_identifier` and `db_user`. For Redshift Serverless, set `workgroup_name`.
      - `accessKeyId` string, nullable — Access key ID. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `clusterIdentifier` string, nullable — Required for provisioned clusters.
      - `dbName` string — Database name. Only required if not using transformations.
      - `dbUser` string, nullable — Required for provisioned clusters.
      - `region` string, nullable — The region of the Redshift DB. Currently a required field, but marked as optional because we may infer it from other fields in the future.
      - `schemaName` string, nullable — Schema name. Only used if not using transformations.
      - `secretAccessKey` string, nullable — Secret access key. Currently a required field, but marked as optional because we may add different authentication in the future.
      - `tableName` string — Table name. Only required if not using transformations.
      - `workgroupName` string, nullable — Required for Redshift Serverless.
    - `type` 'redshift', required
  - object
    - `batchSize` integer — How many events will be batched in a request to the Sink.
    - `channels` string[]
    - `eventTypes` string[] — A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events.
    - `maxWaitSecs` integer — How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.
    - `metadata` object
    - `status` 'enabled' | 'disabled'
    - `uid` string, nullable — An optional unique identifier for the sink.
    - `config` PostgresConfigIn, required
      - `password` string, nullable — Password for the connection.
      - `sslRootCert` string, nullable — PEM-encoded CA certificate used to verify the Postgres server's TLS certificate. Supply this to trust a private or self-signed CA when connecting with `sslmode=verify-ca` or `sslmode=verify-full`. Without it, only the built-in public roots are trusted.
      - `tableName` string, required — Table to insert into. May be schema-qualified (e.g. `public.events`). Quote characters are not supported. Each dot-separated segment is automatically double-quoted when the query is built, so `public.events` becomes `"public"."events"`.
      - `url` string, required — PostgreSQL connection URL, e.g. `postgres://user@host:5432/dbname?sslmode=require`. Do NOT embed a password here; use the `password` field instead.
    - `type` 'postgres', required

## Response `201`

- union
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `type` 'poller', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` AzureBlobStorageConfigOut, required
      - `account` string, required
      - `container` string, required
    - `type` 'azureBlobStorage', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` OtelTracingConfigOut, required
      - `headers` EndpointHeadersOut, required — The value of the headers is returned in the `headers` field. Sensitive headers that have been redacted are returned in the sensitive field.
        - `headers` object, required
        - `sensitive` string[], required
      - `url` string, uri, required
    - `type` 'otelTracing', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` SinkHttpConfigOut, required
      - `headers` EndpointHeadersOut, required — The value of the headers is returned in the `headers` field. Sensitive headers that have been redacted are returned in the sensitive field.
        - `headers` object, required
        - `sensitive` string[], required
      - `url` string, uri, required
    - `type` 'http', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` S3ConfigOut, required
      - `accessKeyId` string, nullable
      - `bucket` string, required
      - `endpointUrl` string, uri, nullable
      - `externalId` string, nullable
      - `region` string, required
      - `roleArn` string, nullable
    - `type` 'amazonS3', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` SnowflakeConfigOut, required
      - `accountIdentifier` string, required
      - `dbName` string — Database name. Only required if not using transformations.
      - `schemaName` string — Schema name. Only required if not using transformations.
      - `tableName` string — Table name. Only required if not using transformations.
      - `userId` string, required
    - `type` 'snowflake', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` GoogleCloudStorageConfigOut, required
      - `bucket` string, required
    - `type` 'googleCloudStorage', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` GoogleCloudPubSubConfigOut, required
      - `projectId` string, required
      - `topicId` string, required
    - `type` 'googleCloudPubSub', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` RedshiftConfigOut, required
      - `accessKeyId` string, required
      - `clusterIdentifier` string, nullable
      - `dbName` string — Database name. Only required if not using transformations.
      - `dbUser` string, nullable
      - `region` string, required
      - `schemaName` string, nullable — Schema name. Only used if not using transformations.
      - `tableName` string — Table name. Only required if not using transformations.
      - `workgroupName` string, nullable
    - `type` 'redshift', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` BigQueryConfigOut, required
      - `datasetId` string, required
      - `projectId` string, required
      - `tableId` string, required
    - `type` 'bigQuery', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` ClickhouseConfigOut, required
      - `database` string, required
      - `tableName` string, required
      - `url` string, uri, required
      - `username` string, required
    - `type` 'clickhouse', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` RabbitMqConfigOut, required
      - `routingKey` string, required
    - `type` 'rabbitMq', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` SqsConfigOut, required
      - `accessKeyId` string, required
      - `endpointUrl` string, uri, nullable
      - `queueUrl` string, uri, required
      - `region` string, required
    - `type` 'sqs', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` EventBridgeConfigOut, required
      - `accessKeyId` string, required
      - `detailType` string, required
      - `eventBusName` string, required
      - `region` string, required
    - `type` 'eventBridge', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` SnsConfigOut, required
      - `accessKeyId` string, required
      - `region` string, required
      - `topicArn` string, required
    - `type` 'sns', required
  - object
    - `batchSize` integer, required
    - `channels` string[]
    - `createdAt` string, date-time, required
    - `currentIterator` string, required
    - `eventTypes` string[]
    - `failureReason` string, nullable
    - `id` string, required — The sink's ID.
    - `maxWaitSecs` integer, required
    - `metadata` object, required
    - `nextRetryAt` string, date-time, nullable
    - `status` 'enabled' | 'paused' | 'disabled' | 'retrying', required
    - `uid` string, nullable — The sink's UID.
    - `updatedAt` string, date-time, required
    - `config` PostgresConfigOut, required
      - `sslRootCert` string, nullable
      - `tableName` string, required
      - `url` string, required
    - `type` 'postgres', required

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `422` — Validation Error
- `429` — Too Many Requests

## Changes

- **2026-09-02** `267f7078e536` — 2 breaking, 4 info
  - the response property `oneOf[#/components/schemas/StreamSinkOut_amazonS3]/config/accessKeyId` became nullable for the status `201`
  - the response property `oneOf[#/components/schemas/StreamSinkOut_amazonS3]/config/accessKeyId` became optional for the status `201`
  - added the new optional request property `oneOf[#/components/schemas/StreamSinkIn_amazonS3]/config/externalId`
  - added the new optional request property `oneOf[#/components/schemas/StreamSinkIn_amazonS3]/config/roleArn`
  - …2 more
- **2026-08-28** `50dde67d2d2d` — 1 breaking, 3 info
  - added `#/components/schemas/StreamSinkOut_postgres` to the response body `oneOf` list for the response status `201`
  - added `postgres` mapping keys to the request discriminator
  - added `#/components/schemas/StreamSinkIn_postgres` to the request body `oneOf` list
  - added `postgres` mapping keys to the response discriminator for the response status `201`
- …earlier changes not shown

[Full history](https://skmtc.dev/svix/apis/svix-api/changes/api/v1/stream/:stream_id/sink/post.md)

---

[API](https://skmtc.dev/svix/apis/svix-api.md) · [All operations](https://skmtc.dev/svix/apis/svix-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/svix/svix-api/revisions/267f7078e536/schema)
