Svix · Arazzo Workflow

Svix Create Stream with Poller Sink and Send Events

Version 1.0.0

Create a stream, attach a poller sink, publish events, and poll the sink for them.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub WebhookWebhooks As A ServiceWebhook DeliveryWebhook SendingEvent-DrivenEventingMessagingPub-SubStreamingIngestIntegrationReliabilityRetriesDeliverabilitySigningVerificationHMACStandard WebhooksMulti-TenantMulti-RegionEnterpriseSoftware-as-a-ServiceDeveloper PlatformRESTSOC 2HIPAAPCI DSSGDPROpen-SourceRustPolyglot SDKTerraformCLIArazzoWorkflows

Provider

svix

Workflows

stream-sink-and-poll-events
Stand up a stream and poller sink, publish events, and poll them back.
Creates a stream, attaches a poller sink, publishes a batch of events into the stream, then polls the sink's event stream until events are returned.
4 steps inputs: events, streamName outputs: events, sinkId, streamId
1
createStream
Create the stream that collects events. Returns 201 with the stream object.
2
createSink
Attach a poller sink to the stream so events can be consumed by polling. Returns 201 with the sink object.
3
sendEvents
Publish the batch of events into the stream for routing to the sink. Returns 202 Accepted.
4
pollEvents
Poll the poller sink's event stream until events are available, retrying while the returned data is empty. Returns 200.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Svix Create Stream with Poller Sink and Send Events
  summary: Create a stream, attach a poller sink, publish events, and poll the sink for them.
  description: >-
    Svix Streams collect high-volume events into sinks that consumers can poll.
    This workflow creates a stream, attaches a poller sink to it, publishes a
    batch of events into the stream, and then polls the sink until the events
    are available for consumption. Every step spells out its request inline so
    the flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: eventApi
  url: ../openapi/svix-event-api-openapi.yml
  type: openapi
- name: sinkApi
  url: ../openapi/svix-sink-api-openapi.yml
  type: openapi
- name: streamApi
  url: ../openapi/svix-stream-api-openapi.yml
  type: openapi
workflows:
- workflowId: stream-sink-and-poll-events
  summary: Stand up a stream and poller sink, publish events, and poll them back.
  description: >-
    Creates a stream, attaches a poller sink, publishes a batch of events into
    the stream, then polls the sink's event stream until events are returned.
  inputs:
    type: object
    required:
    - streamName
    - events
    properties:
      streamName:
        type: string
        description: Human readable name for the stream.
      events:
        type: array
        description: The batch of events to publish into the stream.
        items:
          type: object
  steps:
  - stepId: createStream
    description: >-
      Create the stream that collects events. Returns 201 with the stream
      object.
    operationId: v1.streaming.stream.create
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.streamName
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      streamId: $response.body#/id
  - stepId: createSink
    description: >-
      Attach a poller sink to the stream so events can be consumed by polling.
      Returns 201 with the sink object.
    operationId: v1.streaming.sink.create
    parameters:
    - name: stream_id
      in: path
      value: $steps.createStream.outputs.streamId
    requestBody:
      contentType: application/json
      payload:
        status: enabled
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      sinkId: $response.body#/id
  - stepId: sendEvents
    description: >-
      Publish the batch of events into the stream for routing to the sink.
      Returns 202 Accepted.
    operationId: v1.streaming.events.create
    parameters:
    - name: stream_id
      in: path
      value: $steps.createStream.outputs.streamId
    requestBody:
      contentType: application/json
      payload:
        events: $inputs.events
    successCriteria:
    - condition: $statusCode == 202
  - stepId: pollEvents
    description: >-
      Poll the poller sink's event stream until events are available, retrying
      while the returned data is empty. Returns 200.
    operationId: v1.streaming.events.get
    parameters:
    - name: stream_id
      in: path
      value: $steps.createStream.outputs.streamId
    - name: sink_id
      in: path
      value: $steps.createSink.outputs.sinkId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.data.length > 0
      type: jsonpath
    onFailure:
    - name: retryPoll
      type: retry
      retryAfter: 3
      retryLimit: 10
      criteria:
      - condition: $statusCode == 200
    outputs:
      events: $response.body#/data
  outputs:
    streamId: $steps.createStream.outputs.streamId
    sinkId: $steps.createSink.outputs.sinkId
    events: $steps.pollEvents.outputs.events

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/svix-stream-sink-and-poll-events-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.