> ## Documentation Index > Fetch the complete documentation index at: https://docs.supermetrics.com/llms.txt > Use this file to discover all available pages before exploring further. # Clone transfer > Clones an existing transfer, optionally overriding selected fields. The clone is a fully independent transfer — editing or deleting it never affects the source. All override fields use the exact same structure as the Create Transfer endpoint. Fields not provided in the request body are copied from the source transfer. Notification recipients are deliberately not copied (default to empty) but can be overridden explicitly. **Restrictions:** - The data source is always inherited from the source transfer and cannot be overridden. To use a different data source, create a new transfer instead. - The destination can be changed to a different destination, but only if the target destination is the same type as the source (e.g. Snowflake to Snowflake, not Snowflake to BigQuery). **Returns:** The cloned transfer object with its new ID and display name. **Important Notes:** - You must have `dwh.transfer.edit` permission ## OpenAPI ````json POST /v1/teams/{team_id}/transfers/{transfer_id}/clone { "openapi": "3.0.3", "info": { "title": "Management API Reference", "version": "2.0.0", "description": "API Documentation for the Supermetrics Management API. For more information, visit https://supermetrics.com.", "termsOfService": "https://supermetrics.com/terms-of-service", "contact": { "name": "Supermetrics Suppot", "email": "support@supermetrics.com", "url": "https://supermetrics.com/support" }, "license": { "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, "x-api-id": "sm-management-api", "x-audience": "public" }, "servers": [ { "url": "https://api.supermetrics.com/v2", "description": "Global production public Supermetrics Management API base path.", "x-internal": false }, { "url": "https://api.supermetrics.com", "description": "Global production public Supermetrics API base path (for Connector Builder and Team endpoints).", "x-internal": false } ], "tags": [ { "name": "API Keys", "description": "Manage API keys to access Supermetrics API" }, { "name": "Saved Queries", "description": "Manage queries saved in Query Manager" }, { "name": "Datasources", "description": "Retrieve datasource configuration details" }, { "name": "Data Source Logins", "description": "Access your data source authentications and login links" }, { "name": "Custom Fields", "description": "Create and manage Custom Fields" }, { "name": "Account Tags", "description": "Group data source accounts into reusable tags" }, { "name": "Data Blending", "description": "Create and manage Data Blending" }, { "name": "Connector Builder", "description": "Create and manage custom connectors, including their secrets, logos, logs, and schemas" }, { "name": "Teams", "description": "View and update team details" }, { "name": "Team Users", "description": "Manage members and invitations for your team" }, { "name": "Team Licenses", "description": "Assign and manage your team's licenses" }, { "name": "Team Settings", "description": "Configure general settings for your team" }, { "name": "Workspaces", "description": "Create and manage workspaces, their members, and license pools" }, { "name": "Data Transfers", "description": "Create, configure, and manage Data Warehouse transfers, their runs, backfills, and data source connections" }, { "name": "Data Destinations", "description": "Create, configure, and manage Data Warehouse destinations" }, { "name": "Table Groups", "description": "Manage your team's table groups" } ], "externalDocs": { "description": "Find out more about Supermetrics Management API", "url": "https://docs.supermetrics.com/apidocs/management-api" }, "paths": { "/v1/teams/{team_id}/transfers/{transfer_id}/clone": { "servers": [ { "url": "https://dts-api.supermetrics.com", "description": "Global production public Supermetrics Data Warehouse Transfers API base path.", "x-internal": false } ], "post": { "summary": "Clone transfer", "description": "Clones an existing transfer, optionally overriding selected fields. The clone\nis a fully independent transfer — editing or deleting it never affects the source.\n\nAll override fields use the exact same structure as the Create Transfer endpoint.\nFields not provided in the request body are copied from the source transfer.\nNotification recipients are deliberately not copied (default to empty) but can\nbe overridden explicitly.\n\n**Restrictions:**\n- The data source is always inherited from the source transfer and cannot be overridden.\n To use a different data source, create a new transfer instead.\n- The destination can be changed to a different destination, but only if the target\n destination is the same type as the source (e.g. Snowflake to Snowflake, not\n Snowflake to BigQuery).\n\n**Returns:** The cloned transfer object with its new ID and display name.\n\n**Important Notes:**\n- You must have `dwh.transfer.edit` permission\n", "operationId": "cloneTransfer", "tags": [ "Data Transfers" ], "parameters": [ { "$ref": "#/components/parameters/TeamId" }, { "name": "transfer_id", "in": "path", "required": true, "description": "Unique identifier of the source transfer to clone", "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 2147483647 }, "example": 36091 } ], "requestBody": { "required": false, "description": "Optional overrides for the cloned transfer. Omit entirely or send `{}` to clone as-is.\nEach field provided fully replaces the source value (no deep merge).\n", "content": { "application/json": { "schema": { "type": "object", "properties": { "display_name": { "type": "string", "maxLength": 255, "description": "Name for the clone. Defaults to \"Copy of \"", "example": "My Cloned Transfer" }, "schema_id": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 2147483647, "description": "Schema identifier", "example": 2 }, "destination_id": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 2147483647, "description": "Destination identifier (must belong to the same team and be the same destination type as the source)", "example": 8 }, "accounts": { "type": "array", "maxItems": 5000, "description": "Data source accounts (replaces source accounts entirely)", "items": { "type": "object", "required": [ "data_source_username", "login_id", "account_id" ], "properties": { "data_source_username": { "type": "string", "maxLength": 255 }, "login_id": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 2147483647 }, "account_id": { "type": "string", "maxLength": 100 } } } }, "segments": { "type": "array", "maxItems": 50, "description": "Data segments (replaces source segments entirely)", "items": { "type": "object", "required": [ "data_source_username", "segment_id" ], "properties": { "data_source_username": { "type": "string", "maxLength": 255 }, "segment_id": { "type": "string", "maxLength": 100 }, "segment_name": { "type": "string", "maxLength": 255 } } } }, "schedule": { "type": "array", "maxItems": 1, "description": "Transfer execution schedule (replaces source schedule entirely)", "items": { "type": "object", "required": [ "run_interval", "refresh_window" ], "properties": { "run_interval": { "type": "string", "enum": [ "daily", "weekly", "monthly" ] }, "run_hour": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 23, "description": "Hour of day to run (UTC). Required for daily, weekly, and monthly intervals." }, "run_weekday": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 7, "description": "Day of week (1=Monday, 7=Sunday). Required for weekly interval." }, "run_day": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 31, "description": "Day of month. Required for monthly interval." }, "refresh_window": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 365 } } } }, "data_source_settings": { "type": "array", "maxItems": 100, "description": "Source-specific configuration settings", "items": { "type": "object", "properties": { "field_id": { "type": "string", "maxLength": 100 }, "value": { "description": "Setting value (type varies by field — may be a string, number, boolean, or null)" }, "group": { "type": "string", "maxLength": 100 } } } }, "notification_recipients": { "type": "array", "maxItems": 50, "description": "Email addresses for notifications (source recipients are not copied by default)", "items": { "type": "string", "format": "email", "maxLength": 255 } } } }, "example": { "display_name": "My Cloned Transfer", "destination_id": 8 } } } }, "responses": { "201": { "description": "Transfer cloned successfully", "headers": { "Location": { "description": "URL of the created transfer resource", "schema": { "type": "string", "format": "uri", "maxLength": 2083, "example": "https://dts-api.supermetrics.com/v1/teams/12345/transfers/36092" } }, "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferCreatedEnvelope" }, "example": { "meta": { "request_id": "019461A0-0000-7000-8000-000000000000" }, "data": { "transfer_id": 36092, "transfer_name": "Copy of AW enhanced 2022-11-17" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "422": { "$ref": "#/components/responses/UnprocessableEntity" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" } }, "security": [ { "ApiKeyAuth": [] } ] } } }, "components": { "parameters": { "TeamId": { "name": "team_id", "in": "path", "description": "ID of the team", "required": true, "schema": { "type": "integer", "format": "int64", "minimum": 1, "maximum": 9.223372036854776E+18 }, "example": 936506 } }, "headers": { "Access-Control-Allow-Origin": { "description": "CORS header", "schema": { "type": "string", "maxLength": 255, "enum": [ "*" ], "example": "*" } }, "X-RateLimit-Limit": { "description": "Request limit per hour", "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 10000, "example": 5000 } }, "X-RateLimit-Remaining": { "description": "Remaining requests in current window", "schema": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 10000, "example": 4999 } }, "WWW-Authenticate": { "description": "Bearer token required", "schema": { "type": "string", "maxLength": 255, "pattern": "^Bearer.*" } }, "Retry-After": { "description": "Seconds until rate limit resets", "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 86400, "example": 3600 } } }, "schemas": { "TransferCreatedEnvelope": { "description": "Response envelope containing a created transfer.", "allOf": [ { "$ref": "#/components/schemas/AbstractResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TransferCreatedResponse" } }, "required": [ "data" ] } ] }, "AbstractResponse": { "type": "object", "description": "Base envelope for all successful API responses. Concrete responses extend this via `allOf` and add a `data` property.", "properties": { "meta": { "$ref": "#/components/schemas/Meta" } }, "required": [ "meta" ] }, "TransferCreatedResponse": { "type": "object", "description": "Response from creating a transfer", "properties": { "transfer_id": { "type": "integer", "format": "int32", "description": "The ID of the created transfer", "example": 36091 }, "transfer_name": { "type": "string", "maxLength": 255, "description": "The display name of the created transfer", "example": "AW enhanced 2022-11-17" } } }, "ErrorResponse": { "type": "object", "description": "Standard envelope returned by all error (4xx/5xx) responses.", "properties": { "meta": { "$ref": "#/components/schemas/Meta" }, "error": { "$ref": "#/components/schemas/Error" } }, "required": [ "meta", "error" ], "additionalProperties": false }, "Meta": { "type": "object", "description": "Metadata included in every API response.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestId" } }, "required": [ "request_id" ], "additionalProperties": false }, "Error": { "type": "object", "description": "Machine- and human-readable detail for a failed request.", "properties": { "code": { "type": "string", "pattern": "^[A-Z][A-Z0-9_]*$", "maxLength": 100, "description": "Stable, screaming-snake-case identifier for the error condition. Clients should branch on this, not on `message`. Common values include BAD_REQUEST, UNAUTHORIZED, FORBIDDEN, NOT_FOUND, CONFLICT_ERROR, PERMISSION_ERROR, UNPROCESSABLE_ENTITY, UNPROCESSABLE_CONTENT, TOO_MANY_REQUESTS, INTERNAL_SERVER_ERROR, DUPLICATION_FAILED, SERVICE_UNAVAILABLE; domains may define additional codes.", "example": "BAD_REQUEST" }, "message": { "type": "string", "maxLength": 255, "pattern": "^.+$", "description": "Short, human-readable summary of the error.", "example": "The request was invalid." }, "description": { "type": "string", "maxLength": 2048, "description": "Optional longer explanation specific to this occurrence.", "example": "The field 'display_name' must not be empty." } }, "required": [ "code", "message" ], "additionalProperties": false }, "RequestId": { "type": "string", "description": "Unique identifier for the request, for tracking and debugging.", "pattern": "^[A-Za-z0-9_-]+$", "minLength": 8, "maxLength": 64, "example": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN", "x-faker": { "random.alphaNumeric": 30 } } }, "responses": { "BadRequest": { "description": "Bad request - invalid parameters", "headers": { "X-RateLimit-Limit": { "$ref": "#/components/headers/X-RateLimit-Limit" }, "X-RateLimit-Remaining": { "$ref": "#/components/headers/X-RateLimit-Remaining" }, "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "meta": { "request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN" }, "error": { "code": "BAD_REQUEST", "message": "The request was invalid." } } } } }, "Unauthorized": { "description": "Unauthorized", "headers": { "WWW-Authenticate": { "$ref": "#/components/headers/WWW-Authenticate" }, "X-RateLimit-Limit": { "$ref": "#/components/headers/X-RateLimit-Limit" }, "X-RateLimit-Remaining": { "$ref": "#/components/headers/X-RateLimit-Remaining" }, "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "meta": { "request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN" }, "error": { "code": "UNAUTHORIZED", "message": "Authentication is required." } } } } }, "Forbidden": { "description": "Access forbidden", "headers": { "X-RateLimit-Limit": { "$ref": "#/components/headers/X-RateLimit-Limit" }, "X-RateLimit-Remaining": { "$ref": "#/components/headers/X-RateLimit-Remaining" }, "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "meta": { "request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN" }, "error": { "code": "FORBIDDEN", "message": "You do not have access to this resource." } } } } }, "NotFound": { "description": "Resource not found", "headers": { "X-RateLimit-Limit": { "$ref": "#/components/headers/X-RateLimit-Limit" }, "X-RateLimit-Remaining": { "$ref": "#/components/headers/X-RateLimit-Remaining" }, "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "meta": { "request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN" }, "error": { "code": "NOT_FOUND", "message": "The requested resource was not found." } } } } }, "UnprocessableEntity": { "description": "Unprocessable Entity - validation failed for the request parameters", "headers": { "X-RateLimit-Limit": { "$ref": "#/components/headers/X-RateLimit-Limit" }, "X-RateLimit-Remaining": { "$ref": "#/components/headers/X-RateLimit-Remaining" }, "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "meta": { "request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN" }, "error": { "code": "UNPROCESSABLE_ENTITY", "message": "Validation failed for the request parameters." } } } } }, "TooManyRequests": { "description": "Too Many Requests", "headers": { "X-RateLimit-Limit": { "$ref": "#/components/headers/X-RateLimit-Limit" }, "X-RateLimit-Remaining": { "$ref": "#/components/headers/X-RateLimit-Remaining" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" }, "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "meta": { "request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN" }, "error": { "code": "TOO_MANY_REQUESTS", "message": "Rate limit exceeded. Retry later." } } } } }, "InternalServerError": { "description": "Internal server error", "headers": { "Access-Control-Allow-Origin": { "$ref": "#/components/headers/Access-Control-Allow-Origin" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "meta": { "request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN" }, "error": { "code": "INTERNAL_SERVER_ERROR", "message": "An unexpected error occurred." } } } } } }, "securitySchemes": { "ApiKeyAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "API_KEY", "description": "API key authentication. Create API keys in the Supermetrics Hub and send\nthem in the Authorization header:\n`Authorization: Bearer `\n" } } } } ````