Skip to content
Back to Steward

Create a migration batch

POST
/api/v1/migrations
object
name
required

Display name for the migration batch

string
Example
Q1 legacy client import
labels

Free-text labels for organizing migrations

Array<string>
workflowId

Workflow each item is onboarded through. Defaults to the account default workflow when omitted.

string
complianceChecks

Compliance checks selected for the run

object
screening
required

Run sanctions/PEP/adverse-media screening for each created application

boolean
idVerification
required

Run ID verification for each created application

boolean
kycDataVerification
required

Run KYC (individual) data verification for each created application

boolean
kybDataVerification
required

Run KYB (business) data verification for each created application

boolean
useBatchLlm

Route this run’s file-stage LLM calls through the OpenAI Batch API (~50% cheaper, slower — minutes to hours). Omit to inherit the account default.

boolean
object
id
required

Migration ID

string
Example
507f1f77bcf86cd799439011
accountId
required

Owning account ID

string
Example
507f1f77bcf86cd799439011
workflowId
required

Workflow each item is onboarded through

string
nullable
Example
507f1f77bcf86cd799439011
name
required

Display name for the migration batch

string
labels
required

Free-text labels for organizing migrations

Array<string>
sourceType
required
string
Allowed values: UPLOAD API FTP
status
required
string
Allowed values: UPLOADING MIGRATING PAUSED COMPLETED FAILED CANCELLED
isPreparing
required

True while the run is still unpacking staged archives (MIGRATING with a zip file still staged on a non-terminal item)

boolean
bulkStage
required

Which bulk pipeline stage (CLASSIFY / SUMMARIZE / VALIDATE) is currently processing, for bulk-mode runs — items parked awaiting the batch should read as in progress, not queued. Null when not bulk-processing.

string
nullable
discoveredApplicationCount
required

Applications discovered from the archive directory during unpack (null until an archive is read)

number
nullable
discoveredFileCount
required

Files discovered from the archive directory during unpack (null until an archive is read)

number
nullable
discoveredByteCount
required

Total uncompressed bytes of the discovered files, so progress can be shown by data size (null until an archive is read)

number
nullable
extractedFileCount
required

Archive entries streamed out to S3 so far in the current unpack pass (drives the live progress bar; null until a pass begins)

number
nullable
extractedByteCount
required

Bytes streamed out to S3 so far in the current unpack pass (drives the data-size progress bar; null until a pass begins)

number
nullable
recentExtractedFileNames
required

Most-recently-extracted file names (rolling window, newest last) for the live “Extracting …” line and its hover list

Array<string>
complianceChecks
required

Compliance checks selected for the run

object
screening
required

Run sanctions/PEP/adverse-media screening for each created application

boolean
idVerification
required

Run ID verification for each created application

boolean
kycDataVerification
required

Run KYC (individual) data verification for each created application

boolean
kybDataVerification
required

Run KYB (business) data verification for each created application

boolean
createdById
required

User who created the migration

string
nullable
Example
507f1f77bcf86cd799439011
itemCounts
required

Item counts by status for this migration

object
total
required

Total number of items in this migration

number
queued
required

Items queued and not yet started

number
inProgress
required

Items currently being processed

number
completed
required

Items that completed successfully

number
missingData
required

Items that completed with missing required data

number
failed
required

Items that failed processing

number
cancelled
required

Items cancelled before they finished processing

number
taskCount
required

Total outstanding tasks across the batch — the missing required fields summed over every item, not the number of items needing attention (one item can carry several tasks)

number
fileCount
required

Total number of staged source files across all items in this migration

number
startedAt
required

When the run started

string
nullable
Example
2026-03-30T12:00:00.000Z
completedAt
required

When the run finished

string
nullable
Example
2026-03-30T12:05:00.000Z
createdAt
required

Date the migration was created

string
Example
2026-03-30T10:00:00.000Z
updatedAt
required

Date the migration was last updated

string
Example
2026-03-30T12:05:00.000Z
Example
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"workflowId": "507f1f77bcf86cd799439011",
"name": "string",
"labels": [
"string"
],
"sourceType": "UPLOAD",
"status": "UPLOADING",
"isPreparing": false,
"bulkStage": "string",
"discoveredApplicationCount": 0,
"discoveredFileCount": 0,
"discoveredByteCount": 0,
"extractedFileCount": 0,
"extractedByteCount": 0,
"recentExtractedFileNames": [
"string"
],
"complianceChecks": {
"screening": false,
"idVerification": false,
"kycDataVerification": false,
"kybDataVerification": false
},
"createdById": "507f1f77bcf86cd799439011",
"itemCounts": {
"total": 0,
"queued": 0,
"inProgress": 0,
"completed": 0,
"missingData": 0,
"failed": 0,
"cancelled": 0
},
"taskCount": 0,
"fileCount": 0,
"startedAt": "2026-03-30T12:00:00.000Z",
"completedAt": "2026-03-30T12:05:00.000Z",
"createdAt": "2026-03-30T10:00:00.000Z",
"updatedAt": "2026-03-30T12:05:00.000Z"
}