快工助手跨境电商知识与商机助手

US Market New Function:POD Customization Config APIs

TikTok Shop 官方资料 · TikTok Shop Partner Center 开发者文档 · 适合开发者

stable本次发布有变化全部展示

来自 TikTok Shop 官方资料快照 ·

打开官方原文 ↗
  1. 当前资料结构化阅读页
  2. 固定快照已留存,可追溯
  3. 官方原文可核对
查看技术与溯源信息
平台 / profile
TikTok Shop / profile.tiktok.docs_api
语言
en-US
发布版本
cn-20260909-2
标签
zhuge/sourceplatform/tiktok_shopaudience/developercategory/api_doctopic/compliancetopic/developer

资料正文

§1 US Market New Function:POD Customization Config APIs

TikTok Shop now supports configuring Print-on-Demand (POD) customization for Made-to-Order (MTO) products through the Product APIs. ISVs and seller applications can upload customization assets, submit template configurations, and retrieve the saved configuration programmatically. With this capability, an integration can:

  • Upload background, mask, and default customization images.
  • Associate one or more SKUs with a POD template.
  • Define product surfaces and ordered image or text customization areas.
  • Read back the resulting POD configuration and returned image metadata.
#

§2 What’s New

What’s New

Existing APIVersion and methodNew POD capability
Upload Product Image202309 POSTAdds CUSTOMIZATION_IMAGE to the request use_case enum for POD background, mask, and default images.
Partial Edit Product202509 POSTAdds the optional request object pod_info for POD templates, surfaces, and customization areas.
Get Product202309 GETReturns the optional response object pod_info, including templates, surfaces, customization areas, and image metadata.

To support POD image uploads, add CUSTOMIZATION_IMAGE to the request use_case enum. The response structure is unchanged.

#

§3 What ISVs Need to Do

What ISVs Need to Do

#

§4 Required to support POD customization

Required to support POD customization

  1. Update the image upload enum. Add CUSTOMIZATION_IMAGE to the supported use_case values.
  2. Upload assets first. Upload each background image, mask image, and default image with use_case=CUSTOMIZATION_IMAGE, then retain the returned uri.
  3. Extend the edit request model. Add optional pod_info support to Partial Edit Product and build the hierarchy pod_infopod_templates[]surfaces[]custom_areas[].
  4. Implement type-specific areas. Send image_area when area_type=IMAGE, or text_area when area_type=TEXT.
  5. Extend the read model. Parse pod_info from Get Product, including the additional metadata returned for image objects.
  6. Validate before submission. Enforce SKU uniqueness, list limits, layer ordering, enum casing, two-decimal placement strings, and the documented image URI requirements.
  7. Read back after an update. Call Get Product to verify the saved configuration and retain the system-generated pod_template_id for future reads and updates.
#

§6 Integration Flow

Integration Flow

Image

  1. Upload customization images with Upload Product Image and keep each returned uri.
  2. Build the POD configuration using templates, SKU associations, surfaces, ordered areas, and the uploaded image URIs.
  3. Submit pod_info through Partial Edit Product.
  4. Call Get Product to read back the stored configuration and image metadata.
#

§7 Integration Details

Integration Details

#

§8 1. Upload Product Image

1. Upload Product Image

EndpointPOST /product/:version/images/upload
API version202309
Content typemultipart/form-data
POD image uploadNew request enum value: use_case=CUSTOMIZATION_IMAGE.

Use CUSTOMIZATION_IMAGE for images that render or preview consumer-customizable content, including:

  • surface background images;
  • surface mask images;
  • default images for image customization areas.

The existing upload constraints remain unchanged: supported formats are JPG, JPEG, PNG, WEBP, HEIC, and BMP; the maximum file size is 10 MB; the general accepted dimension range is 100 × 100 through 20,000 × 20,000 pixels. Existing use-case-specific requirements continue to apply.

#

§9 2. Partial Edit Product

2. Partial Edit Product

EndpointPOST /product/:version/products/:product_id/partial_edit
API version202509
POD request fieldAdds the optional pod_info object.

Send pod_info when creating or updating POD customization configuration for an MTO product that supports this capability. A new template does not require pod_template_id; the identifier is generated by the system. The POD fields are optional. Include image_area when area_type=IMAGE, and include text_area when area_type=TEXT.

#

§10 3. Get Product

3. Get Product

EndpointGET /product/:version/products/:product_id
API version202309
POD response fieldReturns the optional pod_info object.

The returned configuration uses the same template, surface, area, placement, image-area, and text-area structure. Image objects include additional read-only metadata:

Image objectDimension typesReturned fields
background_image mask_imagewidth, height: Int32uri, urls[], thumb_urls[], width, height
image_area.default_imagewidth, height: Int64uri, urls[], thumb_urls[], width, height
#

§11 POD Data Model and Validation Rules

POD Data Model and Validation Rules

#

§12 Template and surface hierarchy

Template and surface hierarchy

FieldTypePurpose and constraints
pod_infoStructPOD customization configuration for an MTO product.
pod_info.pod_templates[]List<Struct>Collection of POD templates.
pod_template_idStringSystem-generated template ID; omit when defining a new template.
template_nameStringTemplate name.
remarkStringOptional note for the template.
sku_ids[]List<String>Associated SKU IDs. A SKU cannot belong to more than one template.
surfaces[]List<Struct>Customizable surfaces; maximum 10 per template.
external_surface_idStringExternal identifier for the surface.
surface_nameStringSurface name.
background_image.uriStringURI returned by Upload Product Image using CUSTOMIZATION_IMAGE.
mask_image.uriStringOptional mask image URI uploaded with CUSTOMIZATION_IMAGE.
#

§13 Customization areas and placement

Customization areas and placement

FieldTypePurpose and constraints
custom_areas[]List<Struct>Maximum 10 per surface. List order determines rendering layer order.
external_area_idStringExternal identifier for the customization area.
area_nameStringCustomization area name.
area_typeStringEnum: IMAGE or TEXT.
is_requiredBoolWhether the consumer must complete the area.
area_placement.x_coordinateStringDecimal string with two decimal places.
area_placement.y_coordinateStringDecimal string with two decimal places.
area_placement.widthStringDecimal string with two decimal places.
area_placement.heightStringDecimal string with two decimal places.
area_placement.rotate_degreeStringRotation expressed as a decimal string with two decimal places.
#

§14 Type-specific area objects

Type-specific area objects

FieldTypePurpose and constraints
image_areaStructApplicable when area_type=IMAGE.
image_area.default_image.uriStringOptional default image uploaded with CUSTOMIZATION_IMAGE.
image_area.min_widthInt64Minimum accepted image width.
image_area.min_heightInt64Minimum accepted image height.
text_areaStructApplicable when area_type=TEXT.
text_area.default_textStringDefault text.
text_area.max_text_lengthInt64Maximum consumer-entered text length.
text_area.fonts[]List<String>Allowed fonts.
text_area.colors[]List<String>Allowed hexadecimal colors, for example #FFFFFF.
text_area.align_typeStringEnum: LEFT, CENTER, or RIGHT.

Key validation summary: one SKU may belong to only one template; each template supports up to 10 surfaces; each surface supports up to 10 areas; the custom_areas array order is the layer order; image URIs must come from a CUSTOMIZATION_IMAGE upload.

#

§15 Request Example

Request Example

The following request fragment shows a POD configuration with one image area and one text area. pod_template_id is omitted because the template is new.

{
  "pod_info": {
    "pod_templates": [
      {
        "template_name": "Summer T-shirt Customization",
        "remark": "Primary customization template",
        "sku_ids": ["SKU_001", "SKU_002"],
        "surfaces": [
          {
            "external_surface_id": "front",
            "surface_name": "Front Side",
            "background_image": {
              "uri": "YOUR_BACKGROUND_IMAGE_URI"
            },
            "mask_image": {
              "uri": "YOUR_MASK_IMAGE_URI"
            },
            "custom_areas": [
              {
                "external_area_id": "logo",
                "area_name": "Logo Area",
                "area_type": "IMAGE",
                "is_required": true,
                "area_placement": {
                  "x_coordinate": "400.00",
                  "y_coordinate": "300.00",
                  "width": "200.00",
                  "height": "200.00",
                  "rotate_degree": "0.00"
                },
                "image_area": {
                  "min_width": 200,
                  "min_height": 200,
                  "default_image": {
                    "uri": "YOUR_DEFAULT_IMAGE_URI"
                  }
                }
              },
              {
                "external_area_id": "slogan",
                "area_name": "Slogan Text",
                "area_type": "TEXT",
                "is_required": false,
                "area_placement": {
                  "x_coordinate": "300.00",
                  "y_coordinate": "550.00",
                  "width": "400.00",
                  "height": "50.00",
                  "rotate_degree": "0.00"
                },
                "text_area": {
                  "default_text": "Your Text Here",
                  "max_text_length": 20,
                  "fonts": ["YOUR_SUPPORTED_FONT_KEY_1", "YOUR_SUPPORTED_FONT_KEY_2"],
                  "colors": ["#FFFFFF", "#000000", "#FF0000"],
                  "align_type": "CENTER"
                }
              }
            ]
          }
        ]
      }
    ]
  }
}
#

§16 Compatibility and Testing

Compatibility and Testing

#

§17 Backward compatibility

Backward compatibility

These API changes are additive. Existing integrations that do not create POD configurations do not need to send pod_info.

  • For non-POD products, pod_info may be absent.
  • Response models should accept the new optional object and unknown optional fields.
  • Strict enum models should recognize CUSTOMIZATION_IMAGE, IMAGE, TEXT, LEFT, CENTER, and RIGHT where applicable.
#