Sequenzy Data Exports API
Stream events and subscriber snapshots to your S3 or GCS bucket
Stream events and subscriber snapshots to your S3 or GCS bucket
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.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.curl "https://apis.io/api/v1/apis/sequenzy:sequenzy-data-exports-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.
openapi: 3.2.0
info:
title: Sequenzy Data Exports API
description: Sequenzy API for managing subscribers, tags, events, sequences, and transactional emails
version: 1.0.0
servers:
- url: https://api.sequenzy.com/api/v1
description: Production server
- url: https://api.sequenzy.com/v1
description: Legacy production server alias
security:
- bearerAuth: []
tags:
- name: Data Exports
description: Stream events and subscriber snapshots to your S3 or GCS bucket
paths:
/data-exports:
get:
summary: List data exports
description: Lists data export destinations with status, per-dataset progress and the last error. Credentials are never returned. Requires the data_exports:read scope.
operationId: listDataExports
tags:
- Data Exports
responses:
'200':
description: Data exports returned
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
dataExports:
type: array
items:
$ref: '#/components/schemas/DataExport'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Missing scope, or the member role cannot manage workspace settings
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
$ref: '#/components/responses/TransientDatabaseUnavailable'
post:
summary: Create data export
description: Adds an S3, Google Cloud Storage or S3-compatible bucket as a data export destination. Sequenzy first writes a small test file under the path prefix; the request fails with 400 when that write fails. The first export starts immediately and later exports follow the frequency. Requires data_exports:write, subscribers:read and analytics:read.
operationId: createDataExport
tags:
- Data Exports
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 255
provider:
type: string
enum:
- s3
- gcs
description: s3 for Amazon S3 or any S3-compatible service; gcs for Google Cloud Storage (HMAC keys).
bucket:
type: string
description: Bucket name, not a URL.
region:
type:
- string
- 'null'
description: Bucket region. Required for Amazon S3 without a custom endpoint; defaults to auto otherwise.
endpoint:
type:
- string
- 'null'
description: HTTPS origin of an S3-compatible service (R2, MinIO, Backblaze). Must resolve to a public address. Not allowed for gcs.
pathPrefix:
type:
- string
- 'null'
description: Folder inside the bucket. Leading and trailing slashes are removed.
accessKeyId:
type: string
description: Access key ID (GCS HMAC access ID).
secretAccessKey:
type: string
description: Secret access key. Stored encrypted and never returned.
datasets:
type: array
minItems: 1
items:
type: string
enum:
- email_events
- sms_events
- custom_events
- subscribers
default:
- email_events
- custom_events
- subscribers
frequency:
type: string
enum:
- every_5_minutes
- every_15_minutes
- hourly
- daily
default: every_15_minutes
startFrom:
type:
- string
- 'null'
format: date-time
description: Include events recorded since this time, at most 30 days ago. Defaults to now.
required:
- name
- provider
- bucket
- accessKeyId
- secretAccessKey
responses:
'201':
description: Data export created and first run queued
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
dataExport:
$ref: '#/components/schemas/DataExport'
'400':
description: 'Validation error (code invalid_input) or the test write failed (code connection_failed, with the reason: missing bucket, access denied, wrong region, unknown key or unsafe endpoint)'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Missing scope, or the member role cannot manage workspace settings
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: Request body does not match the schema (for example an unknown dataset)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/data-exports/{id}:
get:
summary: Get data export
description: Returns one data export with status and per-dataset progress.
operationId: getDataExport
tags:
- Data Exports
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Data export returned
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
dataExport:
$ref: '#/components/schemas/DataExport'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Data export not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
patch:
summary: Update data export
description: Renames, changes datasets or frequency, pauses or resumes, moves the destination, or rotates credentials. Location and credential changes are verified with a test write first. Newly added event datasets start from the time of the change. Changing the bucket or prefix continues from the current progress in the new location.
operationId: updateDataExport
tags:
- Data Exports
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 255
bucket:
type: string
region:
type:
- string
- 'null'
endpoint:
type:
- string
- 'null'
description: Send null or an empty string to clear a custom endpoint.
pathPrefix:
type:
- string
- 'null'
accessKeyId:
type: string
description: Must be sent together with secretAccessKey.
secretAccessKey:
type: string
description: Must be sent together with accessKeyId.
datasets:
type: array
minItems: 1
items:
type: string
enum:
- email_events
- sms_events
- custom_events
- subscribers
frequency:
type: string
enum:
- every_5_minutes
- every_15_minutes
- hourly
- daily
isEnabled:
type: boolean
description: false pauses the export, true resumes it.
responses:
'200':
description: Data export updated
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
dataExport:
$ref: '#/components/schemas/DataExport'
'400':
description: Validation error or the test write failed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Data export not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
summary: Delete data export
description: Stops exporting to the destination and deletes its run history. Files already written stay in the bucket.
operationId: deleteDataExport
tags:
- Data Exports
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Data export deleted
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
dataExportId:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Data export not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/data-exports/{id}/test:
post:
summary: Test data export connection
description: Writes a small test file with the stored credentials.
operationId: testDataExport
tags:
- Data Exports
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Test file written
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
testedAt:
type: string
format: date-time
'400':
description: The test write failed (code connection_failed)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Data export not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/data-exports/{id}/run:
post:
summary: Run data export now
description: Queues an export immediately instead of waiting for the schedule. If a run is already queued or running, no second run starts.
operationId: runDataExport
tags:
- Data Exports
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Export queued
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
queued:
type: boolean
example: true
dataExport:
$ref: '#/components/schemas/DataExport'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Data export not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: The data export is paused (code destination_disabled)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/data-exports/{id}/runs:
get:
summary: List data export runs
description: Lists recent runs from the last 14 days, newest first.
operationId: listDataExportRuns
tags:
- Data Exports
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
'200':
description: Runs returned
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
runs:
type: array
items:
$ref: '#/components/schemas/DataExportRun'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Data export not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
headers:
RetryAfter:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
minimum: 1
example: 1
responses:
TransientDatabaseUnavailable:
description: The database was temporarily unavailable. The request may be retried after the delay in Retry-After.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error: The service could not reach its database for a moment. Retry the request.
code: SERVICE_UNAVAILABLE
schemas:
DataExport:
type: object
description: A bucket that Sequenzy streams workspace data to as gzipped JSON lines.
properties:
id:
type: string
name:
type: string
provider:
type: string
enum:
- s3
- gcs
bucket:
type: string
region:
type: string
endpoint:
type:
- string
- 'null'
pathPrefix:
type: string
accessKeyId:
type: string
description: Masked access key ID, for example AKIA…WXYZ. The secret is never returned.
datasets:
type: array
items:
type: string
enum:
- email_events
- sms_events
- custom_events
- subscribers
frequency:
type: string
enum:
- every_5_minutes
- every_15_minutes
- hourly
- daily
isEnabled:
type: boolean
status:
type: string
enum:
- idle
- queued
- running
- failed
description: failed means the last run failed; it retries automatically with backoff.
startFrom:
type: string
format: date-time
exportedThrough:
type: object
description: 'Per dataset. Event datasets: everything recorded up to this timestamp has been written. subscribers: date of the last complete snapshot. null until the first export of that dataset.'
additionalProperties:
type:
- string
- 'null'
nextRunAt:
type:
- string
- 'null'
format: date-time
lastRunAt:
type:
- string
- 'null'
format: date-time
lastSuccessAt:
type:
- string
- 'null'
format: date-time
lastError:
type:
- string
- 'null'
lastErrorAt:
type:
- string
- 'null'
format: date-time
consecutiveFailures:
type: integer
totalRowsExported:
type: integer
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
Error:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
code:
type: string
description: Optional stable machine-readable error discriminator when available.
example: COMPANY_CREATE_REQUIRES_PERSONAL_KEY
retryable:
type: boolean
description: Whether retrying the request can recover from the error.
issues:
type: array
description: Field-level problems with the request, when the endpoint reports them. Up to ten entries; `error` summarizes the first three.
items:
$ref: '#/components/schemas/InputIssue'
required:
- error
InputIssue:
type: object
properties:
path:
type: string
description: Dotted field path, such as `audience.subscriberIds[0]`. Empty when the problem is with the request body itself.
example: kind
message:
type: string
description: What is wrong with the field.
example: must be "add_tags"
allowedValues:
type: array
description: Accepted values when the field only takes a fixed set of values.
items: {}
example:
- add_tags
required:
- path
- message
DataExportRun:
type: object
properties:
id:
type: string
destinationId:
type: string
status:
type: string
enum:
- running
- succeeded
- failed
isManual:
type: boolean
rowCount:
type: integer
fileCount:
type: integer
byteCount:
type: integer
stats:
type: object
description: Per-dataset rows, files, bytes and the window exported.
additionalProperties:
type: object
error:
type:
- string
- 'null'
startedAt:
type: string
format: date-time
finishedAt:
type:
- string
- 'null'
format: date-time
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key passed as Bearer token