Raw content flow
Transform unstructured text into schema-shaped records, review generated rows, approve, and download the final artifact.
The raw flow is built for snippets: an email signature, meeting notes, a pasted block of text. You submit the content directly and the AI provider extracts your schema's fields from it. Raw reviews skip Mapping and open directly on Validate Data, where reviewers can correct generated rows before approval.
Create the run
Call POST /transformations/raw. Unlike the file flow, provider_id is required here — the raw flow is AI extraction by definition. Content is limited to 50,000 characters, and raw transformations support schemas with up to 20 fields.
curl -X POST 'https://api.transmutify.io/v1/transformations/raw' \
-H 'Authorization: Bearer <api-key>' \
-H 'Content-Type: application/json' \
-d '{
"schema_id": "<schema-id>",
"provider_id": "<provider-id>",
"content": "Met Sarah Connor (s.connor@example.com, +1 555 0199) at the trade fair. Works at Cyberdyne, interested in the enterprise plan.",
"output_format": "json",
"notify_url": "https://example.com/webhooks/transmutify",
"success_callback": "https://example.com/imports/reviewed",
"appearance": "dark",
"column_labels": {
"work_email": "Email"
}
}' The response includes the transformation id, an active review_url. Transformation detail responses include review_state, review_approved_at, review_canceled_at, and review_expires_at. Optional fields such as success_callback, cancel_callback, locale, appearance, and column_labels customize the hosted review. See Review flow for the full customization model.
content is forwarded to your configured AI provider unfiltered — Transmutify performs no sanitization, redaction, or PII stripping before sending it. Only pass data you are permitted to share with that provider, and strip anything sensitive on your side first. Use dry_run: true to keep the same request shape while generating synthetic output without any provider call. Review generated rows
The run is queued in the review stage. Once extraction finishes, open the hosted review_url and validate the generated rows. Reviewers can edit cells, leave intentional empty strings, and approve either all_rows or valid_rows_only. The Review UI shows up to 1,000 rows for browsing and editing.
Poll GET /transformations/{id} when your integration needs to reflect readiness, approval, cancellation, or failure:
curl 'https://api.transmutify.io/v1/transformations/<run-id>' \
-H 'Authorization: Bearer <api-key>'Approve and download
Approval moves the run to the final stage and writes the final json or csv artifact using the saved data edits. Pass a notify_url and the transformation.finished webhook delivers the pre-signed download_url after final output completes successfully. Without a webhook, poll GET /transformations/{id} until terminal is true, then read download_url or the persisted error payload.
Output files are retained for 7 days. Each download_url is pre-signed and valid for 60 minutes per response.
When to use raw vs. file
- Raw — short unstructured text, single records, "parse this snippet" use cases. No upload step; reviewers validate generated rows before final output.
- File — spreadsheets and exports with many rows, where a reviewable column mapping protects you from silently mis-mapped data. See the file upload flow.