Create multiple transfers in a single request. Each transfer configuration is created independently — if one fails, the others still succeed. Mixed data source types are allowed within a single batch.
The batch must contain between 1 and 100 items. Empty batches, batches exceeding 100 items, and exact-duplicate configurations within the same batch are rejected. To create copies of an existing transfer, use the clone endpoint instead.
API key authentication. Create API keys in the Supermetrics Hub and send
them in the Authorization header:
Authorization: Bearer <your-api-key>
ID of the team
Batch of transfer configurations to create
Array of transfer configurations, each using the same schema as the single-create endpoint
Data source identifier
Numeric schema identifier (the data warehouse dwh_schema_id) of the table group this transfer writes into. Obtain it from the schema_id field of the List table groups endpoint (GET /table/groups). The table group's prefixed group_id (for example tg_99999) is NOT accepted here.
Destination identifier
Human-readable name for the transfer
Transfer execution schedule configuration
Frequency of transfer execution
Hour of day to run (UTC)
Number of days to refresh
Day of week to run (1=Monday, 7=Sunday). Required for weekly interval.
Day of month to run. Required for monthly interval.
Data source accounts to include in transfer
Username for data source authentication
Login identifier
Account identifier in the data source
Data segments to include in transfer
Username for data source authentication
Login identifier
Segment identifier
Human-readable segment name
Source-specific configuration settings
Setting field identifier
Setting value (type varies by field)
Setting group identifier
Email addresses to notify on transfer events
Transfer type identifier
Batch processed
{
"meta": {
"request_id": "019461A0-0000-7000-8000-000000000000"
},
"data": {
"has_errors": true,
"results": [
{
"index": 0,
"transfer_id": 36091,
"transfer_name": "GA4 -> Snowflake",
"status": "success"
},
{
"index": 1,
"status": "error",
"error_code": "DWH_INVALID_TRANSFER_SETUP_DATA",
"message": "Transfer configuration is invalid. Check validation_errors for details.",
"validation_errors": [
{
"field_id": "destination_id",
"error_code": "Value is required",
"message": "This field is required and was not provided."
}
]
}
]
}
}Metadata included in every API response.
Unique identifier for the request, for tracking and debugging.
True if any item in the batch failed
Zero-based position in the input array
ID of the created transfer (present on success)
Display name of the created transfer (present on success)
Machine-readable error identifier (present on error). Possible values: INVALID_ITEM_DATA, DWH_INVALID_TRANSFER_SETUP_DATA, DWH_TRANSFER_CREATE_FAILED, DWH_BATCH_CREATE_DUPLICATE_CONFIGURATION
Human-readable error description (present on error)
Field-level validation details (present when error_code is DWH_INVALID_TRANSFER_SETUP_DATA)
The field that failed validation
Validation error code (values originate from the validation framework, not an enum-stable set)
Human-readable validation error message
Batch-level validation failed — no transfers are created. Error codes: DWH_BATCH_EMPTY, DWH_BATCH_TOO_LARGE, DWH_BATCH_NOT_ARRAY.
Unauthorized
{
"meta": {
"request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN"
},
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required."
}
}Standard envelope returned by all error (4xx/5xx) responses.
Metadata included in every API response.
Unique identifier for the request, for tracking and debugging.
Machine- and human-readable detail for a failed request.
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.
Short, human-readable summary of the error.
Optional longer explanation specific to this occurrence.
Access forbidden
{
"meta": {
"request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN"
},
"error": {
"code": "FORBIDDEN",
"message": "You do not have access to this resource."
}
}Standard envelope returned by all error (4xx/5xx) responses.
Metadata included in every API response.
Unique identifier for the request, for tracking and debugging.
Machine- and human-readable detail for a failed request.
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.
Short, human-readable summary of the error.
Optional longer explanation specific to this occurrence.
Internal server error
{
"meta": {
"request_id": "BXaEFVtjc7TXaJxgZhmFgSUD9edqq_CN"
},
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An unexpected error occurred."
}
}Standard envelope returned by all error (4xx/5xx) responses.
Metadata included in every API response.
Unique identifier for the request, for tracking and debugging.
Machine- and human-readable detail for a failed request.
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.
Short, human-readable summary of the error.
Optional longer explanation specific to this occurrence.