Returns one transformation: the source it reads, the template it produces, its column and custom-field names, and download links. Works for transformations in the trash too (deleted_at is then set). Returns 404 when the transformation's template was deleted.

GET https://api.wetransform.com/transformation/{transformationId}
URL Parameters
Parameter Description Pattern
{transformationId}

The transformation UUID to read.

[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}
Responses
Response 200
ResponseSuccess TransformationPublicTransformation
success boolean

Always true on successful responses.

Sample: true
payload object

Payload of the requested resource.

payload.connector object nullable

The connector behind this transformation (itself if it is a connector, else the connector it was made from), for showing its name and logo. Null when neither applies.

payload.connector.is_connector boolean

Whether the transformation is itself a connector (vs. made from one).

Sample: false
payload.connector.changed boolean

Whether the connector was edited after this transformation was made from it, i.e. an update is available. Always false when the transformation is itself a connector.

Sample: true
payload.connector.connector_id string nullable

UUID of the connector (a connector is itself a transformation).

Sample: "c90831b6-8a7e-4f4a-8cc0-dfe98e23684b"
payload.connector.name string nullable

The connector's display name (e.g. "Sage").

Sample: "Sage"
payload.connector.picture_url string nullable

Public URL of the connector's logo thumbnail, if any.

Sample: "https:\/\/example.com\/connector.thumbnail.png"
payload.customer_id string nullable

UUID of the customer who owns this transformation (not the customer's external ID).

Sample: "03fd9ad4-2181-4896-ada5-ba4d9da7f95a"
payload.source_id string

UUID of the source this transformation reads. Pass it to the source feed endpoints (/sender/source/{sourceId}).

Sample: "18a5f675-a298-4219-bde6-4165b7cd433a"
payload.source_name string nullable

Display name of the source, usually its file name.

Sample: "my-employees.csv"
payload.source_file_url string nullable

Signed link to the current source file, valid 30 days, usable without authentication.

Null when no file was imported yet.

Sample: "https:\/\/api.wetransform.com\/download\/eyJ0eXAiOiJKV1QifQ.eyJwIjoic291cmNlIn0.c..." (truncated)
payload.imported_at datetime

When the current source file was imported. Null when no file was imported yet.

payload.template_name string

Display name of the template.

Sample: "Employee Leaves (RE)"
payload.template_picture_url string nullable

Public URL of the template's picture thumbnail. Null when the template has no picture.

Sample: "https:\/\/api.wetransform.com\/icon.png"
payload.transformation_id string

UUID of this transformation. Pass it as {transformationId} to the transformation, data, run and submission endpoints.

Sample: "c4951634-0f20-48f9-9c4b-2cbc7013212e"
payload.has_schedule boolean

Whether the transformation's schedule is enabled. Pause or resume it with the source feed schedule endpoints; the timing itself is configured in the app.

Sample: true
payload.column_names array

Template column names, each prefixed with t/ (e.g. t/price). Use them as attributes and as data keys in the transformation data endpoints.

payload.custom_field_names array

Custom field names, each prefixed with f/ (e.g. f/margin). They appear as data keys in the transformation data endpoints.

payload.deleted_at datetime nullable

When the transformation was moved to the trash. Null unless it is in the trash; it is erased permanently one month after this date.

payload.download_url string nullable

Link to the latest transformed file. Null until the transformation has been submitted at least once. When the template exposes files, this is a permanent link that always serves the latest submitted file; otherwise it is a signed link to the latest submission's file, valid 30 days.

Sample: "https:\/\/api.wetransform.com\/file\/gxr4t1m1wdy8or0xkknj0dti1jg8ld44\/furniture.csv"
payload.template_handle string

Handle of the template this transformation produces, as used in /template/{templateHandle} and in the template_handles filter.

Sample: "furniture"
product object nullable

A product needed.

Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.

product.requirement string nullable

Whether the user requested a features s/he doesn't have access to, or the user needs greater limits. Possible values: permission, limitation

Sample: "permission"
product.permission object nullable

The required permission.

You will need to know which permission is needed in order to fill up search filters in the shop.

product.permission.description string nullable

A human-understandable name for the permission.

product.permission.name string

A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).

Possible values depend on the context, check the domain's metadata endpoint.

Sample: "X_SOURCE_FORMAT_XML"
product.limitation_type string nullable

The limitation that needs to be increased (ex: number of columns).

product.limitation_needed_value integer nullable

The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).

product.limitation_current_value integer nullable

The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).

product.limitation_object object nullable

The limitation type in a readable format, for example, "lines per file".

product.ai_feature string nullable

The AI feature that could not run, when an AI feature is what hit the limitation (null for any other product). Possible values: rule_transformation, rule_template, rule_function, rule_constraint, column_constraints, normalizer, chat_db, doc_assistant, api_doc_assistant, autocorrect, autocorrect_fill, invoice_reader, column_match, value_match, power_populate_with_ai, power_extract_from_pdf, power_extract_from_spreadsheet, agent, column_enrichment, column_constraints_batch, agent_compression, agent_workflow_scaffold, agent_phase_fill, push_json_column_match, value_match_embedding, normalizer_debugger, power_extract_from_text, template_format_custom, power_describe_image, power_background_erase, hosted_image_view, value_match_context

product.message object nullable

What stopped, on what, and what it would take — translated and ready to display, with one wording per AI feature: "Matching the values of column «Couleur» with AI needs 12 AI credits, and 10 are left." Null whenever ai_feature is, and on the rare AI exposure that has no subject to name (the template collection's json_column_match_product covers no single template). Fall back to the generic call-to-action then.

product.is_cta boolean nullable

Whether a Call To Action should be displayed.

It may not be displayed if:

  • the limitation is on the membership role
  • the limitation is on the customer role
  • the user is a sender
debug array

Debug information.

Contains logs about business logic explaining state of the response payload.

Provided in development & admin modes only.

Properties suffixed with * are nullable.
{
    "success": true,
    "payload": {
        "connector": {
            "is_connector": false,
            "changed": true,
            "connector_id": "c90831b6-8a7e-4f4a-8cc0-dfe98e23684b",
            "name": "Sage",
            "picture_url": "https:\/\/example.com\/connector.thumbnail.png"
        },
        "customer_id": "03fd9ad4-2181-4896-ada5-ba4d9da7f95a",
        "source_id": "18a5f675-a298-4219-bde6-4165b7cd433a",
        "source_name": "my-employees.csv",
        "source_file_url": "https:\/\/api.wetransform.com\/download\/eyJ0eXAiOiJKV1QifQ.eyJwIjoic291cmNlIn0.c2lnbmF0dXJl",
        "imported_at": "2026-10-26T09:58:38+00:00",
        "template_name": "Employee Leaves (RE)",
        "template_picture_url": "https:\/\/api.wetransform.com\/icon.png",
        "transformation_id": "c4951634-0f20-48f9-9c4b-2cbc7013212e",
        "has_schedule": true,
        "column_names": [
            "t\/name",
            "t\/price"
        ],
        "custom_field_names": [
            "f\/margin"
        ],
        "deleted_at": null,
        "download_url": "https:\/\/api.wetransform.com\/file\/gxr4t1m1wdy8or0xkknj0dti1jg8ld44\/furniture.csv",
        "template_handle": "furniture"
    },
    "product": {
        "requirement": "permission",
        "permission": {
            "name": "X_SOURCE_FORMAT_XML",
            "description": "Can import XML files"
        },
        "limitation_type": null,
        "limitation_needed_value": null,
        "limitation_current_value": null,
        "limitation_object": null,
        "is_cta": false,
        "ai_feature": null,
        "message": null
    },
    "debug": []
}
Copy
Response 401 Authentication required.
ResponseError HttpUnauthorized

User must be authenticated to access the resource.

This response is received when the authorization header does not contain a valid authentication token.

It mostly happens because the current access_token has expired, and it needs to be renewed using a refresh_token.

success boolean

Always false on error responses.

Sample: false
payload object

Context about the error, if any.

product object nullable

A product needed.

Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.

product.requirement string nullable

Whether the user requested a features s/he doesn't have access to, or the user needs greater limits. Possible values: permission, limitation

Sample: "permission"
product.permission object nullable

The required permission.

You will need to know which permission is needed in order to fill up search filters in the shop.

product.permission.description string nullable

A human-understandable name for the permission.

product.permission.name string

A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).

Possible values depend on the context, check the domain's metadata endpoint.

Sample: "X_SOURCE_FORMAT_XML"
product.limitation_type string nullable

The limitation that needs to be increased (ex: number of columns).

product.limitation_needed_value integer nullable

The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).

product.limitation_current_value integer nullable

The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).

product.limitation_object object nullable

The limitation type in a readable format, for example, "lines per file".

product.ai_feature string nullable

The AI feature that could not run, when an AI feature is what hit the limitation (null for any other product). Possible values: rule_transformation, rule_template, rule_function, rule_constraint, column_constraints, normalizer, chat_db, doc_assistant, api_doc_assistant, autocorrect, autocorrect_fill, invoice_reader, column_match, value_match, power_populate_with_ai, power_extract_from_pdf, power_extract_from_spreadsheet, agent, column_enrichment, column_constraints_batch, agent_compression, agent_workflow_scaffold, agent_phase_fill, push_json_column_match, value_match_embedding, normalizer_debugger, power_extract_from_text, template_format_custom, power_describe_image, power_background_erase, hosted_image_view, value_match_context

product.message object nullable

What stopped, on what, and what it would take — translated and ready to display, with one wording per AI feature: "Matching the values of column «Couleur» with AI needs 12 AI credits, and 10 are left." Null whenever ai_feature is, and on the rare AI exposure that has no subject to name (the template collection's json_column_match_product covers no single template). Fall back to the generic call-to-action then.

product.is_cta boolean nullable

Whether a Call To Action should be displayed.

It may not be displayed if:

  • the limitation is on the membership role
  • the limitation is on the customer role
  • the user is a sender
debug array

Debug information.

Contains logs about business logic explaining state of the response payload.

Provided in development & admin modes only.

Properties suffixed with * are nullable.
{
    "success": false,
    "payload": [],
    "product": {
        "requirement": "permission",
        "permission": {
            "name": "X_SOURCE_FORMAT_XML",
            "description": "Can import XML files"
        },
        "limitation_type": null,
        "limitation_needed_value": null,
        "limitation_current_value": null,
        "limitation_object": null,
        "is_cta": false,
        "ai_feature": null,
        "message": null
    },
    "debug": []
}
Copy
Response 403 Access denied.
ResponseError HttpForbidden

User is well authenticated, but not authorized to access the resource.

It can happen if user is trying to use a feature that s/he didn't pay for, access someone else's resource, etc.

These issues are normally fixed by the frontend, which should render features and resources user has access to.

success boolean

Always false on error responses.

Sample: false
payload object

Context about the error, if any.

product object nullable

A product needed.

Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.

product.requirement string nullable

Whether the user requested a features s/he doesn't have access to, or the user needs greater limits. Possible values: permission, limitation

Sample: "permission"
product.permission object nullable

The required permission.

You will need to know which permission is needed in order to fill up search filters in the shop.

product.permission.description string nullable

A human-understandable name for the permission.

product.permission.name string

A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).

Possible values depend on the context, check the domain's metadata endpoint.

Sample: "X_SOURCE_FORMAT_XML"
product.limitation_type string nullable

The limitation that needs to be increased (ex: number of columns).

product.limitation_needed_value integer nullable

The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).

product.limitation_current_value integer nullable

The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).

product.limitation_object object nullable

The limitation type in a readable format, for example, "lines per file".

product.ai_feature string nullable

The AI feature that could not run, when an AI feature is what hit the limitation (null for any other product). Possible values: rule_transformation, rule_template, rule_function, rule_constraint, column_constraints, normalizer, chat_db, doc_assistant, api_doc_assistant, autocorrect, autocorrect_fill, invoice_reader, column_match, value_match, power_populate_with_ai, power_extract_from_pdf, power_extract_from_spreadsheet, agent, column_enrichment, column_constraints_batch, agent_compression, agent_workflow_scaffold, agent_phase_fill, push_json_column_match, value_match_embedding, normalizer_debugger, power_extract_from_text, template_format_custom, power_describe_image, power_background_erase, hosted_image_view, value_match_context

product.message object nullable

What stopped, on what, and what it would take — translated and ready to display, with one wording per AI feature: "Matching the values of column «Couleur» with AI needs 12 AI credits, and 10 are left." Null whenever ai_feature is, and on the rare AI exposure that has no subject to name (the template collection's json_column_match_product covers no single template). Fall back to the generic call-to-action then.

product.is_cta boolean nullable

Whether a Call To Action should be displayed.

It may not be displayed if:

  • the limitation is on the membership role
  • the limitation is on the customer role
  • the user is a sender
debug array

Debug information.

Contains logs about business logic explaining state of the response payload.

Provided in development & admin modes only.

Properties suffixed with * are nullable.
{
    "success": false,
    "payload": [],
    "product": {
        "requirement": "permission",
        "permission": {
            "name": "X_SOURCE_FORMAT_XML",
            "description": "Can import XML files"
        },
        "limitation_type": null,
        "limitation_needed_value": null,
        "limitation_current_value": null,
        "limitation_object": null,
        "is_cta": false,
        "ai_feature": null,
        "message": null
    },
    "debug": []
}
Copy
Back to API Reference

Interactive Console

Please login in order to access the console.

© 2026