Sequenzy Migrations API
The Migrations API from Sequenzy — 7 operation(s) for migrations.
The Migrations API from Sequenzy — 7 operation(s) for migrations.
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-migrations-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 Migrations 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: Migrations
paths:
/migrations/{runId}:
get:
summary: Get migration run
description: Returns provider-neutral migration status, discovery, plan, progress, and report.
operationId: getMigrationRun
tags:
- Migrations
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: Migration run returned
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
additionalProperties: true
example:
success: true
data:
id: run_123
status: awaiting_approval
discovery:
provider: kit
resources:
- id: subscribers
type: subscribers
count: 3470
- id: campaigns
type: campaigns
count: 108
- id: automations
type: automations
count: 42
approvedPlan: {}
progress: {}
report:
subscribersQueued: 0
draftCampaignsCreated: 0
draftSequencesCreated: 0
draftTransactionalEmailsCreated: 0
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Migration run not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
$ref: '#/components/responses/TransientDatabaseUnavailable'
/migrations/{runId}/agent-package:
get:
summary: Get migration agent package
description: Returns endpoint URLs and exact call sequence for an agent-assisted migration.
operationId: getMigrationAgentPackage
tags:
- Migrations
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: Agent package returned
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
additionalProperties: true
example:
success: true
data:
runId: run_123
provider: kit
providerLabel: Kit
organizationsEnabled: false
systemPrompt: Preserve provider email HTML exactly...
instructions:
- Do not convert migrated HTML into Sequenzy blocks or recreate the email from its visible text.
endpoints:
connectSource: https://api.sequenzy.com/api/v1/migrations/run_123/connect-source
sequence:
- POST connect-source with the provider credential.
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Migration run not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
$ref: '#/components/responses/TransientDatabaseUnavailable'
/migrations/{runId}/connect-source:
post:
summary: Connect migration source
description: Stores a provider credential on an existing migration run connection.
operationId: connectMigrationSource
tags:
- Migrations
parameters:
- name: runId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- provider
- credential
properties:
provider:
type: string
description: Provider adapter ID. Supported values include `active-campaign`, `brevo`, `constant-contact`, `customer-io`, `drip`, `hubspot`, `kit`, `klaviyo`, `loops`, `mailchimp`, `mailerlite`, `mailjet`, `omnisend`, `resend`, and `sendgrid`.
credential:
type: string
description: Provider API credential.
providerLabel:
type: string
description: Optional display label for manual providers.
responses:
'200':
description: Source connected
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
additionalProperties: true
'400':
description: Provider unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Migration run not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/migrations/{runId}/discover:
post:
summary: Discover migration source
description: Queues provider discovery for a migration run.
operationId: discoverMigrationSource
tags:
- Migrations
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: Discovery queued
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
additionalProperties: true
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Migration run not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/migrations/{runId}/approve-plan:
post:
summary: Approve migration plan
description: Approves provider-neutral resources and freezes the execution plan for a migration run.
operationId: approveMigrationPlan
tags:
- Migrations
parameters:
- name: runId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- resourceIds
properties:
resourceIds:
type: array
items:
type: string
resourceOptions:
type: object
additionalProperties:
type: object
additionalProperties: true
responses:
'200':
description: Plan approved
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
additionalProperties: true
'400':
description: Invalid approval
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Approval failed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/migrations/{runId}/start:
post:
summary: Start migration
description: Queues execution for an approved migration run. Queued or running runs return their current state without another execution or plan change. Completed, failed, canceled and cancel_requested runs return 400. At least one selected resource is required, from resourceIds or the previously approved plan. resourceOptions applies only with a nonempty resourceIds selection.
operationId: startMigration
tags:
- Migrations
parameters:
- name: runId
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
resourceIds:
type: array
items:
type: string
resourceOptions:
type: object
additionalProperties:
type: object
additionalProperties: true
responses:
'200':
description: Migration queued
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
additionalProperties: true
'400':
description: Run cannot start in its current state, or no resources were selected
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Migration run not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/migrations/{runId}/cancel:
post:
summary: Cancel migration
description: Cancels queued/pre-execution runs immediately. Running imports move to cancel_requested while workers stop linked subscriber import chunks, then finish as canceled.
operationId: cancelMigration
tags:
- Migrations
parameters:
- name: runId
in: path
required: true
schema:
type: string
responses:
'200':
description: Migration canceled
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
additionalProperties: true
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Migration run not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
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:
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
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
headers:
RetryAfter:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
minimum: 1
example: 1
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key passed as Bearer token