| Region | Domain |
|---|---|
| Mainland China | https://api-eve.meitu.com |
| Overseas | https://gapi.evelabinsight.com |
{
"meta": {
"code": 0,
"msg": "",
"error": "",
"request_uri": "/open_api/common/xxx"
},
"response": {}
}| Field | Type | Required | Notes |
|---|---|---|---|
meta | object | ✅ | Metadata wrapper |
meta.code | number | ✅ | Status code |
meta.msg | string | ✅ | Message corresponding to status code |
meta.error | string | ✅ | Reserved field |
meta.request_uri | string | ✅ | Request path |
response | object | ✅ | Business data payload |
| Code | Description | Details |
|---|---|---|
| 200 | Success | Request succeeded |
| 400 | Request parameter error | Parameter missing or incorrect format |
| 404 | Interface does not exist | Endpoint not found |
| 405 | Invalid request | HTTP method not supported by this endpoint |
| 500 | System error | Internal server error — contact support |
meta.code contains a non-zero value explaining the error:{
"meta": {
"code": 40067,
"msg": "Product number does not exist.",
"error": "",
"request_uri": "/open_api/merchant/products"
},
"response": {}
}| Code | Description | Details |
|---|---|---|
| 0 | Success | Request succeeded |
| 400 | Parameter missing or incorrect | Invalid or missing parameter |
| 500 | System error | Contact developer |
| 40057 | Interface call timeout | Request timed out |
| 40058 | Too much data, please call the interface in batches | Reduce batch size |
| 40069 | Operation failed! | Partial or full failure (see err_list) |
response.err_list[] with per-item error details:{
"meta": {
"code": 40069,
"msg": "Operation failed!",
"error": "",
"request_uri": "/open_api/merchant/products"
},
"response": {
"err_list": [
{
"custom_id": "1s21",
"err_code": 40048,
"err_msg": "The subtitle is too long."
}
]
}
}| Category ID | Chinese | English |
|---|---|---|
| 1 | 化妆水 | Toner |
| 2 | 乳液 | Emulsion / Lotion |
| 3 | 精华 | Serum |
| 4 | 面霜 | Cream |
| 5 | 眼霜 | Eye Contour |
| 6 | 洁面 | Cleanser |
| 7 | 防晒 | Sunscreen |
| 8 | 其他 | Others |
| 9 | 套装 | Set |
| 10 | 面膜 | Mask |
| ID | Symbol | Currency Code | Currency Name |
|---|---|---|---|
| 0 | ¥ | CNY | China — RMB |
| 1 | ¥ | JPY | Japan — Yen |
| 2 | $ | USD | United States — Dollar |
| 3 | € | EUR | Eurozone — Euro |
| 4 | £ | GBP | UK — Pound Sterling |
| 5 | ₩ | KRW | South Korea — Won |
| 6 | HK$ | HKD | Hong Kong — Dollar |
| 7 | MOP$ | MOP | Macao — Pataca |
| 8 | NT$ | TWD | Taiwan — New Dollar |
| 9 | ฿ | THB | Thailand — Baht |
| 10 | ₫ | VND | Vietnam — Dong |
| 11 | $ | SGD | Singapore — Dollar |
| 12 | RM | MYR | Malaysia — Ringgit |
| 13 | ₹ | INR | India — Rupee |
| 14 | A$ | AUD | Australia — Dollar |
| Dimension ID | Chinese | English |
|---|---|---|
pore | 毛孔 | Pores |
blackhead | 黑头 | Blackheads |
speckle | 色斑 | Spots |
wrinkle | 皱纹 | Wrinkles |
acne | 痤疮 | Acne |
sensitive | 敏感度 | Sensitive Skin |
black_rim_of_eye | 黑眼圈 | Dark Circles |
water | 水分 | Moisture |
oil | 油分 | Oil |
skin_vitality | 肌肤活力 | Skin Vitality |
glow | 光泽 | Radiance |
skin_smoothness | 平滑 | Smoothness |
firmness | 紧致 | Firmness |
vitality_eye_contour | 眼周肌肤活力 | Eye Contour Vitality |
skin_glow | 光泽度 | Radiance |
eye_bags | 眼袋 | Eye Bags |
eye_sagging | 眼睑松弛 | Eyelids Laxity |
plump_cheeks | 苹果肌 | Medial Malar |
low_cheek | 口角羊腮 | Jowl |
mandible_edge | 下颌缘 | Jaw Line |
crows_feet | 鱼尾纹 | Crow's Feet |
under_eye_wrinkle | 眶周纹 | Periocular Fine Lines |
forehead_wrinkle | 抬头纹 | Forehead Wrinkles |
nasolabial_folds | 法令纹 | Nasolabial Fold (NLF) |
narionette_lines | 口角纹 | Marionette Lines |
frown_wrinkle | 眉间纹 | Glabellar Wrinkles |
lacrimal_groove | 泪沟 | Tear Troughs |
neck_lines | 颈纹 | Neck Lines |
| Dimension ID | Severity Levels (English) |
|---|---|
pore | "1":"Fine", "2":"Medium", "3":"Coarse" |
blackhead | "1":"None", "2":"Mild", "3":"Moderate", "4":"Severe" |
speckle | "1":"None", "2":"Mild", "3":"Moderate", "4":"Severe" |
wrinkle | "1":"None", "2":"Mild", "3":"Moderate", "4":"Severe" |
acne | "0":"None", "1":"Level Ⅰ", "2":"Level Ⅱ", "3":"Level Ⅲ", "4":"Level Ⅳ" |
sensitive | "1":"High skin tolerance", "2":"Medium skin tolerance", "3":"Mild sensitive skin", "4":"Sensitive skin" |
black_rim_of_eye | "1":"None", "2":"Mild", "3":"Moderate", "4":"Severe" |
water | "2":"Healthy", "3":"Moderate", "4":"Severe" |
oil | "2":"Healthy", "3":"Moderate", "4":"Severe" |
skin_vitality | "1":"Very Good", "2":"Fairly Good", "3":"Moderate", "4":"Low" |
glow | "1":"Very Good", "2":"Fairly Good", "3":"Moderate", "4":"Low" |
skin_smoothness | "1":"Very Good", "2":"Fairly Good", "3":"Moderate", "4":"Low" |
firmness | "1":"Very Good", "2":"Fairly Good", "3":"Moderate", "4":"Low" |
vitality_eye_contour | "1":"Very Good", "2":"Fairly Good", "3":"Moderate", "4":"Low" |
skin_glow | "1":"Very Good", "2":"Good", "3":"Medium", "4":"Poor" |
eye_bags | Level 0 – Level 6 |
eye_sagging | Level 0 – Level 8 |
crows_feet | Level 0 – Level 7 |
under_eye_wrinkle | Level 0 – Level 8 |
forehead_wrinkle | Level 0 – Level 8 |
nasolabial_folds | Level 0 – Level 7 |
narionette_lines | Level 0 – Level 7 |
frown_wrinkle | Level 0 – Level 8 |
lacrimal_groove | Level 0 – Level 6 |
neck_lines | Level 0 – Level 8 |
problem Field Formatproblem field structure for products/treatments:{
"blackhead": [1, 2],
"speckle": ["1", "2", "3", "4"]
}| Language Code | Language |
|---|---|
en | English |
zh-Hans | Simplified Chinese |
ja | Japanese |
ko | Korean |
th | Thai |
zh-Hant | Traditional Chinese (Taiwan) |
zh-Hant-HK | Traditional Chinese (Hong Kong) |
vi | Vietnamese |
fr | French |
tr | Turkish |
ar | Arabic |
nl | Dutch |
es-PA | Spanish (CUPFSA) |
es-MX | Spanish (Mexico) |
pt | Portuguese |
nurse_stage ID | Description |
|---|---|
| 1 | Essential |
| 2 | Complementary |
GET /open_api/common/access_tokenOnly one token is active at a time. Generating a new token invalidates the previous one.
| Code | Description |
|---|---|
| 1001 | invalid access_token — token invalid or expired |
| Name | Required | Notes |
|---|---|---|
app_id | ✅ | Group / merchant app_id |
app_secret | ✅ | Group / merchant app_secret |
| Field | Type | Required | Notes |
|---|---|---|---|
response.access_token | string | ✅ | Access token value |
response.expire | number | ✅ | Validity period in seconds (7200) |
GET /open_api/merchant/merchants| Name | Required | Notes |
|---|---|---|
access-token | ✅ | Group-level token |
response.list[]| Field | Type | Required | Notes |
|---|---|---|---|
merchant_id | string | ✅ | Merchant ID |
name | string | ✅ | Merchant name |
area | string | ✅ | Countries/regions the merchant operates in |
GET /open_api/merchant/stores| Name | Required | Notes |
|---|---|---|
access-token | ✅ | Merchant or group token |
merchant-id | — | Required when access-token is a group token |
| Name | Required | Notes |
|---|---|---|
page | — | Page number |
count | — | Records per page (default 20, max 100) |
response.list[]| Field | Type | Required | Notes |
|---|---|---|---|
id | string | ✅ | Store ID |
name | string | ✅ | Store name |
province | string | ✅ | Province |
city | string | ✅ | City |
address | string | ✅ | Address |
status | number | ✅ | 1 Normal / -1 Disabled |
store_business_type | number | ✅ | 0 None / 1 Basic / 2 Premium |
store_custom_id | string | ✅ | Store custom number |
total | string | ✅ | Total record count |
GET /open_api/merchant/employees| Name | Required | Notes |
|---|---|---|
access-token | ✅ | Group / merchant token |
merchant-id | — | Required when access-token is a group token |
| Name | Required | Notes |
|---|---|---|
page | — | Page number (default 1) |
count | — | Records per page (default 20, max 100) |
store_custom_id | — | Filter by store |
response.list[]| Field | Type | Notes |
|---|---|---|
id | string | Employee ID |
store_id | string | Store ID |
store_custom_id | string | Store custom number |
status_status | integer | Store status: 1 Enabled / -1 Disabled |
account_num | string | Employee number |
last_name | string | Last name |
real_name | string | Full name |
phone_cc | string | Phone country code |
phone_number | string | Phone number |
email | string | |
sso_account | string | SSO-bound account |
status | number | 1 Enabled / -1 Disabled |
GET /open_api/merchant/langsaccess-token ✅, merchant-id (group token only)| Field | Type | Notes |
|---|---|---|
response.default_lang | string | Default language code |
response.lang_list[] | string[] | Enabled language codes (empty array if none) |
GET /open_api/merchant/dimensionsaccess-token ✅, merchant-id (group token only)| Name | Notes |
|---|---|
lang | Language code for response; defaults to English if not provided |
response.list[]| Field | Type | Notes |
|---|---|---|
id | string | Dimension ID (e.g. pore, acne) |
name | string | Dimension name |
status | number | 1 Enabled / 0 Disabled |
divisions_count | number | Number of severity levels |
divisions[] | object[] | Severity level list |
├─ id | number/string | Level ID |
├─ name | string | Level name |
GET /open_api/merchant/categoriesaccess-token ✅, merchant-id (group token only)langresponse.list[]| Field | Type | Notes |
|---|---|---|
category_id | int64 | Category ID |
name | string | Category name |
status | int | 1 Enabled / -1 Disabled |
POST /open_api/merchant/storesaccess-token ✅, merchant-id (group token only), Content-Type: application/json| Field | Type | Required | Notes |
|---|---|---|---|
name | string | ✅ | Store name (max 100 chars, unique) |
custom_id | string | ✅ | Store number (alphanumeric, max 20, unique) |
telephone | string | ✅ | Store phone |
area_id | number | — | Region ID (see 2.13); defaults to first region |
province_code | string | ✅ | Province code |
city_code | string | — | City code |
address | string | ✅ | Store address (max 100 chars) |
username | string | ✅ | Store manager account (3–50 chars: letters/digits/@/_/-) |
password | string | ✅ | Password (8–20 chars, must include digits, letters, special chars) |
real_name | string | ✅ | Manager first name (max 18 chars) |
last_name | string | — | Manager last name (max 18 chars) |
account_num | string | — | Employee number (max 20 chars) |
phone_cc | integer | — | Phone country code |
phone_number | integer | — | Manager phone number |
email | string | — | Manager email |
| Code | Description |
|---|---|
| 11000 | Store name too long (max 100) |
| 11001 | Store name already exists |
| 11029 | Store number format error |
| 11028 | Store number already exists |
| 11008 | Account name format error |
| 10008 | Store account already exists |
| 11010 | Password format error |
PATCH /open_api/merchant/storesaccess-token ✅, merchant-id (group token only)| Field | Type | Required | Notes |
|---|---|---|---|
custom_id | string | ✅ | Store number to update |
name | string | — | New store name |
new_custom_id | string | — | New store number |
telephone | string | — | New phone |
area_id | number | — | New region |
province_code | string | — | New province |
city_code | string | — | New city |
address | string | — | New address (max 100 chars) |
POST /open_api/merchant/employeesaccess-token ✅, merchant-id (group token only)| Field | Type | Required | Notes |
|---|---|---|---|
custom_id | string | ✅ | Store number to assign employee to |
username | string | ✅ | Employee account |
password | string | ✅ | Password (8–20 chars, letters + digits + special) |
real_name | string | ✅ | Employee first name (max 18 chars) |
last_name | string | — | Employee last name (max 18 chars) |
account_num | string | — | Employee number (max 20 chars) |
phone_cc | integer | — | Phone country code |
phone_number | integer | — | Phone number |
email | string | — |
| Code | Description |
|---|---|
| 17002 | Multi-account feature not enabled |
| 11009 | Account name already exists |
| 11010 | Password format error |
| 10010 | Invalid phone number |
PATCH /open_api/merchant/accountaccess-token ✅, merchant-id (group token only)| Field | Type | Required | Notes |
|---|---|---|---|
username | string | ✅ | Current account name |
new_username | string | — | New account name (3–50 chars, unique) |
password | string | — | New password (8–20 chars) |
real_name | string | — | First name (max 18 chars) |
last_name | string | — | Last name (max 18 chars) |
account_num | string | — | Employee number (max 20 chars) |
phone_cc | integer | — | Phone country code |
phone_number | integer | — | Phone number |
email | string | — |
PATCH /open_api/merchant/account_status/{status}status: 1 = Enable / -1 = Disableaccess-token ✅, merchant-id (group token only), Content-Type: application/json| Field | Type | Required | Notes |
|---|---|---|---|
username | string | ✅ | Account name |
| Code | Description |
|---|---|
| 11028 | Account does not exist |
| 11026 | Store is disabled — enable store before enabling employee |
GET /open_api/merchant/areaaccess-token ✅, merchant-id (group token only)page, count (default 20, max 100)response.list[]| Field | Type | Notes |
|---|---|---|
id | string | Region ID |
name | string | Region name |
remark | string | Notes |
total | string | Total count |
POST /open_api/merchant/productsaccess-token ✅, merchant-id (group token only)product_list[]| Field | Type | Required | Notes |
|---|---|---|---|
category_id | integer | ✅ | Product category (see §1.4) |
name | string | ✅ | Product name (max 150 chars) |
custom_id | string | ✅ | Product number (alphanumeric, unique) |
pic | string | ✅ | Image URL (max 255 chars) |
sub_title | string | — | Subtitle (max 300 chars) |
price_unit | integer | — | Price currency identifier (see §1.5) |
price | number | — | Price (max 7 digits before decimal, 2 after) |
link | string | — | Product link URL |
problem | object | — | Target skin problems (see §1.7) |
skin_type | — | — | Applicable skin types |
age_limit | integer | — | 0 No limit / 1 Set age range |
min_age | integer | — | Min age (required when age_limit=1) |
max_age | integer | — | Max age (required when age_limit=1) |
label | string | — | Tags (max 4 tags, each max 10 chars, comma-separated) |
nurse_stage | integer | — | Nursing stage (see §1.9) |
user_level | — | — | Customer level restriction |
instruction | string | — | Usage instructions (max 2000 chars) |
suit_custom_id[] | object[] | — | Bundle items (for set products) |
├─ custom_id | string | ✅ | Item product number |
├─ quantity | integer | ✅ | Item quantity |
lang_data | object | — | Multi-language content |
| Code | Description |
|---|---|
| 40015 | Category not specified |
| 40017 | Product name not specified |
| 40018 | Product name too long |
| 40025 | Image format error or missing |
| 40035 | Product link format error |
| 40055 | Product number missing or invalid |
| 40067 | Product number does not exist |
| 40077 | Product instructions exceed 2000 chars |
PATCH /open_api/merchant/productsproduct_list[]| Field | Required | Notes |
|---|---|---|
custom_id | ✅ | Product number to update |
| All other fields | — | Only include fields to change |
DELETE /open_api/merchant/products| Field | Type | Required | Notes |
|---|---|---|---|
custom_id_list[] | string[] | ✅ | Product numbers to delete |
PATCH /open_api/product/status/{status}status: 1 = Enable / -1 = Disable| Field | Type | Required | Notes |
|---|---|---|---|
custom_id_list[] | string[] | ✅ | Product numbers |
PATCH /open_api/product/sale_stores| Field | Type | Required | Notes |
|---|---|---|---|
custom_id | string | ✅ | Product number |
sell_type | integer | ✅ | 1 All stores / 2 Selected stores |
store_list[] | string[] | — | Store numbers (required when sell_type=2) |
PATCH /open_api/product/linksOnly supported for Premium Version stores. Returns error 40066 if the product is not available for sale at the specified store.
| Field | Type | Required | Notes |
|---|---|---|---|
custom_id | string | ✅ | Product number |
link_list[] | object[] | ✅ | Up to 100 entries |
├─ store_custom_id | string | ✅ | Store number |
├─ link_type | integer | ✅ | 0 Same as HQ / 1 Store-specific |
├─ link | string | — | Store link (required when link_type=1) |
GET /open_api/merchant/productsaccess-token ✅, merchant-id (group token only)response.list[]| Field | Type | Notes |
|---|---|---|
id | string | Product ID |
custom_id | string | Product number |
pic | string | Image URL |
name | string | Product name (default language) |
problem | object | Target skin problems |
label | string | Tags (default language, comma-separated) |
price_unit | integer | Price currency identifier |
price | number | Price |
price_symbol | string | Price symbol |
link | string | Merchant (HQ) product link |
store_link | string | Store-specific product link |
source | integer | 1 Store-created / 2 Merchant-created |
status | integer | -1 Disabled / 1 Active |
age_limit | integer | 0 No limit / 1 Restricted range |
min_age | integer | Min age |
max_age | integer | Max age |
sub_title | string | Subtitle (default language) |
user_level_limit | number | 0 No limit / 1 Restricted |
user_level | string | Restricted level(s), comma-separated |
instruction | string | Usage instructions (default language) |
lang_data | object | Multi-language content |
GET /open_api/store/products| Name | Required | Notes |
|---|---|---|
store_custom_id | ✅ | Store number |
page | — | Page number (default 1) |
count | — | Records per page (default 20, max 100) |
Treatments (service plans) have the same configuration capabilities as Products, but are service-type offerings requiring in-store professional service delivery rather than direct retail transactions.
POST /open_api/merchant/treatmentstreatment_list[]| Field | Type | Required | Notes |
|---|---|---|---|
name | string | ✅ | Treatment name |
custom_id | string | ✅ | Treatment number |
pic | string | ✅ | Image URL |
sub_title | string | — | Subtitle (max 300 chars) |
price_unit | integer | — | Price currency identifier |
price | number | — | Price |
link | string | — | Treatment link |
problem | object | — | Target skin problems (see §1.7) |
age_limit | integer | — | 0 No limit / 1 Set range |
min_age | integer | — | Min age |
max_age | integer | — | Max age |
label | string | — | Tags (max 4, each max 10 chars) |
nurse_stage | integer | — | Nursing stage (see §1.9) |
user_level | — | — | Customer level restriction |
goods_attributes_code | string | — | Associated product attribute codes (comma-separated) |
instruction | string | — | Treatment instructions (max 2000 chars) |
lang_data | object | — | Multi-language content |
PATCH /open_api/merchant/treatmentstreatment_list[]| Field | Required | Notes |
|---|---|---|
custom_id | ✅ | Treatment number to update |
| All other fields | — | Only include fields to change |
DELETE /open_api/merchant/treatmentsOnly merchant-created treatments ( source=2) can be deleted.
| Field | Type | Required | Notes |
|---|---|---|---|
custom_id_list[] | string[] | ✅ | Treatment numbers to delete |
PATCH /open_api/treatment/status/{status}status: 1 = Enable / -1 = Disable| Field | Type | Required | Notes |
|---|---|---|---|
custom_id_list[] | string[] | ✅ | Treatment numbers |
PATCH /open_api/treatment/sale_stores| Field | Type | Required | Notes |
|---|---|---|---|
custom_id | string | ✅ | Treatment number |
sell_type | integer | ✅ | 1 All stores / 2 Selected stores |
store_list[] | string[] | — | Store numbers (required when sell_type=2) |
GET /open_api/merchant/treatmentsresponse.list[]| Field | Type | Notes |
|---|---|---|
id | string | Treatment ID |
custom_id | string | Treatment number |
pic | string | Image URL |
name | string | Treatment name (default language) |
problem | object | Target skin problems |
label | string | Tags (default language) |
price_unit | integer | Price currency identifier |
price | number | Price |
price_symbol | string | Price symbol |
link | string | Merchant (HQ) link |
source | integer | 1 Store-created / 2 Merchant-created |
status | integer | -1 Disabled / 1 Active |
age_limit | integer | 0 No limit / 1 Restricted range |
min_age | integer | Min age |
max_age | integer | Max age |
sub_title | string | Subtitle (default language) |
user_level_limit | number | 0 No limit / 1 Restricted |
user_level | string | Restricted level(s) |
instruction | string | Instructions (default language) |
goods_attributes_limit | string | 0 No restriction / 1 Restricted |
goods_attributes_code | string | Associated product attribute codes |
lang_data | object | Multi-language content |
GET /open_api/store/treatments| Name | Required | Notes |
|---|---|---|
store_custom_id | ✅ | Store number |
page | — | Page number (default 1) |
count | — | Records per page (default 20, max 100) |
store_link.PATCH /open_api/treatment/linksOnly supported for Premium Version stores. Returns error 40068 if the treatment is not available for sale at the specified store.
| Code | Description |
|---|---|
| 40068 | Store is not a Premium Version store |
| 40089 | Treatment unavailable for purchase at this store |
| Field | Type | Required | Notes |
|---|---|---|---|
custom_id | string | ✅ | Treatment number |
link_list[] | object[] | ✅ | Up to 100 entries |
├─ store_custom_id | string | ✅ | Store number |
├─ link_type | integer | ✅ | 0 Same as HQ / 1 Store-specific |
├─ link | string | — | Store link (required when link_type=1) |
| Method | Path | Section | Description |
|---|---|---|---|
| GET | /open_api/common/access_token | 2.1 | Get access token |
| GET | /open_api/merchant/merchants | 2.2 | List merchants under group |
| GET | /open_api/merchant/stores | 2.3 | List stores under merchant |
| GET | /open_api/merchant/employees | 2.4 | List employees |
| GET | /open_api/merchant/langs | 2.5 | List enabled languages |
| GET | /open_api/merchant/dimensions | 2.6 | List skin analysis dimensions |
| GET | /open_api/merchant/categories | 2.7 | List product categories |
| POST | /open_api/merchant/stores | 2.8 | Create store |
| PATCH | /open_api/merchant/stores | 2.9 | Update store |
| POST | /open_api/merchant/employees | 2.10 | Create employee |
| PATCH | /open_api/merchant/account | 2.11 | Update account |
| PATCH | /open_api/merchant/account_status/{status} | 2.12 | Enable/disable account |
| GET | /open_api/merchant/area | 2.13 | List regions |
| POST | /open_api/merchant/products | 3.1 | Batch create products |
| PATCH | /open_api/merchant/products | 3.2 | Batch update products |
| DELETE | /open_api/merchant/products | 3.3 | Batch delete products |
| PATCH | /open_api/product/status/{status} | 3.4 | Enable/disable products |
| PATCH | /open_api/product/sale_stores | 3.5 | Set product available stores |
| PATCH | /open_api/product/links | 3.6 | Set store product links |
| GET | /open_api/merchant/products | 3.7 | Get merchant product list |
| GET | /open_api/store/products | 3.8 | Get store product list |
| POST | /open_api/merchant/treatments | 4.1 | Batch create treatments |
| PATCH | /open_api/merchant/treatments | 4.2 | Batch update treatments |
| DELETE | /open_api/merchant/treatments | 4.3 | Batch delete treatments |
| PATCH | /open_api/treatment/status/{status} | 4.4 | Enable/disable treatments |
| PATCH | /open_api/treatment/sale_stores | 4.5 | Set treatment available stores |
| GET | /open_api/merchant/treatments | 4.6 | Get merchant treatment list |
| GET | /open_api/store/treatments | 4.7 | Get store treatment list |
| PATCH | /open_api/treatment/links | 4.8 | Set store treatment links |