Initialize a file-based transformation run
Creates a run in `awaiting_upload` status and returns temporary upload instructions for the caller's source file. The processing starts immediately after upload completed. Use the returned `id` to inspect status while the hosted Review UI handles review and approval.
Request body
Send as application/json
schema_idstring required Target schema UUID that defines the desired output fields for this transformation.
provider_idstring | nullAI provider UUID used for AI-assisted structured mapping or image extraction. Required when filename is JPG, PNG, or WebP; omit for manual structured-file mapping.
dry_runbooleanWhen true, the run generates synthetic output and skips review preparation quota consumption.
filenamestring required Original source filename used to create upload instructions. CSV, TSV, TXT, and XLSX start structured-file mapping; JPG, PNG, and WebP start image extraction after upload completion.
Max length: 255 characters
input_has_headerboolean | nullOptional override for whether the uploaded structured file contains a header row. Ignored for image filenames.
output_formatstringOutput artifact format produced after hosted review approval. Defaults to JSON when omitted.
jsoncsv
notify_urlstring | nullOptional webhook URL for transformation completion notifications. Production callbacks must use HTTPS.
success_callbackstring | nullOptional hosted-review success callback used after a reviewer approves the review. Production callback URLs must use HTTPS.
cancel_callbackstring | nullOptional hosted-review cancel callback used after a reviewer cancels the review. Production callback URLs must use HTTPS.
localestring | nullOptional locale for the hosted review UI translations. Case-insensitive; unsupported values fall back to `en`.
endefrnlesitplar
appearancestring | nullOptional hosted-review appearance persisted for all review interactions.
lightdark
metadataobject | nullOptional caller-defined metadata JSON object echoed in transformation responses and customer webhooks.
column_labelsobject | nullOptional JSON object keyed by schema field name. Values override the labels shown in the hosted Review UI.
Responses
idstring required Stable UUID of the transformation run. Use this in subsequent requests against the run.
statusstring required Current lifecycle status. File runs start as `awaiting_upload`; raw runs start as `queued`.
stagestring required Current stage of the run. Create responses start in `review`.
input_sourcestring required Input source for this run (`upload`, `raw`, or `image`).
schema_idstring required UUID of the schema this run targets.
review_urlstring required Signed hosted-review URL for end-user review.
uploadobject required Pre-signed upload instructions for the source file.
urlstring required headersobject required methodstring required expires_atstring required curl -X POST 'https://api.transmutify.io/v1/transformations/file' \
-H 'Authorization: Bearer <api-key>' \
-H 'Content-Type: application/json' \
-d '{
"schema_id": "9b2e1f6c-8e6d-4a3b-9c1f-7d2e5a8b3c4d",
"provider_id": "9b2e1f6c-8e6d-4a3b-9c1f-7d2e5a8b3c4d",
"dry_run": false,
"filename": "string",
"input_has_header": false,
"output_format": "json",
"notify_url": "https://example.com/webhooks/transmutify",
"success_callback": "https://example.com/webhooks/transmutify",
"cancel_callback": "https://example.com/webhooks/transmutify",
"locale": "en",
"appearance": "light",
"metadata": {
"external_id": "import-2026-01-15",
"source": {
"system": "hris",
"batch": 42
}
},
"column_labels": {
"employee_id": "Employee ID",
"work_email": "Work email",
"department": "Department"
}
}'{
"id": "019dc45d-3b81-7369-a776-2d95c5caab97",
"status": "awaiting_upload",
"stage": "review",
"input_source": "upload",
"schema_id": "019dc458-710e-73a0-9b5a-bb7d6f7ddc42",
"review_url": "https://review.transmutify.io/reviews/019dc45d-3b81-7369-a776-2d95c5caab97?signature=...",
"upload": {
"url": "https://storage.example.com/transmutify/uploads/019dc45d-3b81-7369-a776-2d95c5caab97/input.csv",
"headers": {
"Content-Type": "text/csv"
},
"method": "PUT",
"expires_at": "2026-01-15T12:45:00Z"
}
}