1. EveLab Insight - Basic Data API
EvelabInsight
  • Signature Generation
  • EveLab Insight - Skin Analysis API for All Ethnicities
    • Obtain access_token
      GET
    • Facial attribute analysis
      POST
    • Facial pose analysis
      POST
    • Skin analysis
      POST
  • EveLab Insight - Basic Data API
    • Basic Data API (Universal Edition) v1.6
  • EveLab Insight - Report API
    • Push Data API
      POST
    • Pull Data API
      GET
  • EveLab Insight - CRM API
    • Search customers
      GET
  1. EveLab Insight - Basic Data API

Basic Data API (Universal Edition) v1.6

EvelabInsight Basic Data API Reference (Universal) v1.6#


Part I — API Overview#

1.1 Domains#

RegionDomain
Mainland Chinahttps://api-eve.meitu.com
Overseashttps://gapi.evelabinsight.com

1.2 Response Format#

All endpoints return the following envelope:
{
  "meta": {
    "code": 0,
    "msg": "",
    "error": "",
    "request_uri": "/open_api/common/xxx"
  },
  "response": {}
}
FieldTypeRequiredNotes
metaobject✅Metadata wrapper
meta.codenumber✅Status code
meta.msgstring✅Message corresponding to status code
meta.errorstring✅Reserved field
meta.request_uristring✅Request path
responseobject✅Business data payload

1.3 Status Codes#

1.3.1 HTTP Codes#

CodeDescriptionDetails
200SuccessRequest succeeded
400Request parameter errorParameter missing or incorrect format
404Interface does not existEndpoint not found
405Invalid requestHTTP method not supported by this endpoint
500System errorInternal server error — contact support

1.3.2 meta.code Values#

When HTTP code is not 200, 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": {}
}
Common meta codes:
CodeDescriptionDetails
0SuccessRequest succeeded
400Parameter missing or incorrectInvalid or missing parameter
500System errorContact developer
40057Interface call timeoutRequest timed out
40058Too much data, please call the interface in batchesReduce batch size
40069Operation failed!Partial or full failure (see err_list)

1.3.3 err_code (Batch Error Details)#

When a batch operation (add / update / delete) partially fails, the response includes 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."
      }
    ]
  }
}

1.4 Product Category IDs#

Category IDChineseEnglish
1化妆水Toner
2乳液Emulsion / Lotion
3精华Serum
4面霜Cream
5眼霜Eye Contour
6洁面Cleanser
7防晒Sunscreen
8其他Others
9套装Set
10面膜Mask

1.5 Price Unit Identifiers#

Selected common currencies (full list of 109 in source PDF §1.5):
IDSymbolCurrency CodeCurrency Name
0¥CNYChina — RMB
1¥JPYJapan — Yen
2$USDUnited States — Dollar
3€EUREurozone — Euro
4£GBPUK — Pound Sterling
5₩KRWSouth Korea — Won
6HK$HKDHong Kong — Dollar
7MOP$MOPMacao — Pataca
8NT$TWDTaiwan — New Dollar
9฿THBThailand — Baht
10₫VNDVietnam — Dong
11$SGDSingapore — Dollar
12RMMYRMalaysia — Ringgit
13₹INRIndia — Rupee
14A$AUDAustralia — Dollar

1.6 Skin Analysis Dimensions#

1.6.1 Dimension Names#

Dimension IDChineseEnglish
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

1.6.2 Dimension Severity Levels#

Dimension IDSeverity 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_bagsLevel 0 – Level 6
eye_saggingLevel 0 – Level 8
crows_feetLevel 0 – Level 7
under_eye_wrinkleLevel 0 – Level 8
forehead_wrinkleLevel 0 – Level 8
nasolabial_foldsLevel 0 – Level 7
narionette_linesLevel 0 – Level 7
frown_wrinkleLevel 0 – Level 8
lacrimal_grooveLevel 0 – Level 6
neck_linesLevel 0 – Level 8

1.7 problem Field Format#

The problem field structure for products/treatments:
{
  "blackhead": [1, 2],
  "speckle": ["1", "2", "3", "4"]
}
Key is a dimension ID from §1.6; value is an array of severity level IDs.

1.8 Language Codes#

Language CodeLanguage
enEnglish
zh-HansSimplified Chinese
jaJapanese
koKorean
thThai
zh-HantTraditional Chinese (Taiwan)
zh-Hant-HKTraditional Chinese (Hong Kong)
viVietnamese
frFrench
trTurkish
arArabic
nlDutch
es-PASpanish (CUPFSA)
es-MXSpanish (Mexico)
ptPortuguese

1.9 Nursing Stage Field#

nurse_stage IDDescription
1Essential
2Complementary

Part II — Common APIs#

2.1 Get Access Token#

GET /open_api/common/access_token
Only one token is active at a time. Generating a new token invalidates the previous one.
Error Codes
CodeDescription
1001invalid access_token — token invalid or expired
Query Parameters
NameRequiredNotes
app_id✅Group / merchant app_id
app_secret✅Group / merchant app_secret
Response
FieldTypeRequiredNotes
response.access_tokenstring✅Access token value
response.expirenumber✅Validity period in seconds (7200)

2.2 Get Merchants Under Group#

GET /open_api/merchant/merchants
Request Headers
NameRequiredNotes
access-token✅Group-level token
Response — response.list[]
FieldTypeRequiredNotes
merchant_idstring✅Merchant ID
namestring✅Merchant name
areastring✅Countries/regions the merchant operates in

2.3 Get Stores Under Merchant#

GET /open_api/merchant/stores
Request Headers
NameRequiredNotes
access-token✅Merchant or group token
merchant-id—Required when access-token is a group token
Query Parameters
NameRequiredNotes
page—Page number
count—Records per page (default 20, max 100)
Response — response.list[]
FieldTypeRequiredNotes
idstring✅Store ID
namestring✅Store name
provincestring✅Province
citystring✅City
addressstring✅Address
statusnumber✅1 Normal / -1 Disabled
store_business_typenumber✅0 None / 1 Basic / 2 Premium
store_custom_idstring✅Store custom number
totalstring✅Total record count

2.4 Get Employee List#

GET /open_api/merchant/employees
Request Headers
NameRequiredNotes
access-token✅Group / merchant token
merchant-id—Required when access-token is a group token
Query Parameters
NameRequiredNotes
page—Page number (default 1)
count—Records per page (default 20, max 100)
store_custom_id—Filter by store
Response — response.list[]
FieldTypeNotes
idstringEmployee ID
store_idstringStore ID
store_custom_idstringStore custom number
status_statusintegerStore status: 1 Enabled / -1 Disabled
account_numstringEmployee number
last_namestringLast name
real_namestringFull name
phone_ccstringPhone country code
phone_numberstringPhone number
emailstringEmail
sso_accountstringSSO-bound account
statusnumber1 Enabled / -1 Disabled

2.5 Get Languages Enabled for Merchant#

GET /open_api/merchant/langs
Request Headers: access-token ✅, merchant-id (group token only)
Response
FieldTypeNotes
response.default_langstringDefault language code
response.lang_list[]string[]Enabled language codes (empty array if none)

2.6 Get Detection Dimensions#

GET /open_api/merchant/dimensions
Request Headers: access-token ✅, merchant-id (group token only)
Query Parameters
NameNotes
langLanguage code for response; defaults to English if not provided
Response — response.list[]
FieldTypeNotes
idstringDimension ID (e.g. pore, acne)
namestringDimension name
statusnumber1 Enabled / 0 Disabled
divisions_countnumberNumber of severity levels
divisions[]object[]Severity level list
├─ idnumber/stringLevel ID
├─ namestringLevel name

2.7 Get Product Category List#

GET /open_api/merchant/categories
Request Headers: access-token ✅, merchant-id (group token only)
Query Parameters: lang
Response — response.list[]
FieldTypeNotes
category_idint64Category ID
namestringCategory name
statusint1 Enabled / -1 Disabled

2.8 Create Store#

POST /open_api/merchant/stores
Request Headers: access-token ✅, merchant-id (group token only), Content-Type: application/json
Request Body
FieldTypeRequiredNotes
namestring✅Store name (max 100 chars, unique)
custom_idstring✅Store number (alphanumeric, max 20, unique)
telephonestring✅Store phone
area_idnumber—Region ID (see 2.13); defaults to first region
province_codestring✅Province code
city_codestring—City code
addressstring✅Store address (max 100 chars)
usernamestring✅Store manager account (3–50 chars: letters/digits/@/_/-)
passwordstring✅Password (8–20 chars, must include digits, letters, special chars)
real_namestring✅Manager first name (max 18 chars)
last_namestring—Manager last name (max 18 chars)
account_numstring—Employee number (max 20 chars)
phone_ccinteger—Phone country code
phone_numberinteger—Manager phone number
emailstring—Manager email
Common Error Codes
CodeDescription
11000Store name too long (max 100)
11001Store name already exists
11029Store number format error
11028Store number already exists
11008Account name format error
10008Store account already exists
11010Password format error

2.9 Update Store#

PATCH /open_api/merchant/stores
Request Headers: access-token ✅, merchant-id (group token only)
Request Body
FieldTypeRequiredNotes
custom_idstring✅Store number to update
namestring—New store name
new_custom_idstring—New store number
telephonestring—New phone
area_idnumber—New region
province_codestring—New province
city_codestring—New city
addressstring—New address (max 100 chars)

2.10 Create Employee#

POST /open_api/merchant/employees
Request Headers: access-token ✅, merchant-id (group token only)
Request Body
FieldTypeRequiredNotes
custom_idstring✅Store number to assign employee to
usernamestring✅Employee account
passwordstring✅Password (8–20 chars, letters + digits + special)
real_namestring✅Employee first name (max 18 chars)
last_namestring—Employee last name (max 18 chars)
account_numstring—Employee number (max 20 chars)
phone_ccinteger—Phone country code
phone_numberinteger—Phone number
emailstring—Email
Common Error Codes
CodeDescription
17002Multi-account feature not enabled
11009Account name already exists
11010Password format error
10010Invalid phone number

2.11 Update Account#

PATCH /open_api/merchant/account
Request Headers: access-token ✅, merchant-id (group token only)
Request Body
FieldTypeRequiredNotes
usernamestring✅Current account name
new_usernamestring—New account name (3–50 chars, unique)
passwordstring—New password (8–20 chars)
real_namestring—First name (max 18 chars)
last_namestring—Last name (max 18 chars)
account_numstring—Employee number (max 20 chars)
phone_ccinteger—Phone country code
phone_numberinteger—Phone number
emailstring—Email

2.12 Enable / Disable Account#

PATCH /open_api/merchant/account_status/{status}
Path parameter status: 1 = Enable / -1 = Disable
Request Headers: access-token ✅, merchant-id (group token only), Content-Type: application/json
Request Body
FieldTypeRequiredNotes
usernamestring✅Account name
Error Codes
CodeDescription
11028Account does not exist
11026Store is disabled — enable store before enabling employee

2.13 Get Region List#

GET /open_api/merchant/area
Request Headers: access-token ✅, merchant-id (group token only)
Query Parameters: page, count (default 20, max 100)
Response — response.list[]
FieldTypeNotes
idstringRegion ID
namestringRegion name
remarkstringNotes
totalstringTotal count

Part III — Product APIs#

3.1 Batch Create Products#

POST /open_api/merchant/products
Request Headers: access-token ✅, merchant-id (group token only)
Request Body — product_list[]
FieldTypeRequiredNotes
category_idinteger✅Product category (see §1.4)
namestring✅Product name (max 150 chars)
custom_idstring✅Product number (alphanumeric, unique)
picstring✅Image URL (max 255 chars)
sub_titlestring—Subtitle (max 300 chars)
price_unitinteger—Price currency identifier (see §1.5)
pricenumber—Price (max 7 digits before decimal, 2 after)
linkstring—Product link URL
problemobject—Target skin problems (see §1.7)
skin_type——Applicable skin types
age_limitinteger—0 No limit / 1 Set age range
min_ageinteger—Min age (required when age_limit=1)
max_ageinteger—Max age (required when age_limit=1)
labelstring—Tags (max 4 tags, each max 10 chars, comma-separated)
nurse_stageinteger—Nursing stage (see §1.9)
user_level——Customer level restriction
instructionstring—Usage instructions (max 2000 chars)
suit_custom_id[]object[]—Bundle items (for set products)
├─ custom_idstring✅Item product number
├─ quantityinteger✅Item quantity
lang_dataobject—Multi-language content
Key Error Codes
CodeDescription
40015Category not specified
40017Product name not specified
40018Product name too long
40025Image format error or missing
40035Product link format error
40055Product number missing or invalid
40067Product number does not exist
40077Product instructions exceed 2000 chars

3.2 Batch Update Products#

PATCH /open_api/merchant/products
Request Body — product_list[]
FieldRequiredNotes
custom_id✅Product number to update
All other fields—Only include fields to change

3.3 Batch Delete Products#

DELETE /open_api/merchant/products
Request Body
FieldTypeRequiredNotes
custom_id_list[]string[]✅Product numbers to delete

3.4 Batch Enable / Disable Products#

PATCH /open_api/product/status/{status}
Path parameter status: 1 = Enable / -1 = Disable
Request Body
FieldTypeRequiredNotes
custom_id_list[]string[]✅Product numbers

3.5 Set Product Available Stores#

PATCH /open_api/product/sale_stores
Request Body
FieldTypeRequiredNotes
custom_idstring✅Product number
sell_typeinteger✅1 All stores / 2 Selected stores
store_list[]string[]—Store numbers (required when sell_type=2)

3.6 Set Store Product Links#

PATCH /open_api/product/links
Only supported for Premium Version stores. Returns error 40066 if the product is not available for sale at the specified store.
Request Body
FieldTypeRequiredNotes
custom_idstring✅Product number
link_list[]object[]✅Up to 100 entries
├─ store_custom_idstring✅Store number
├─ link_typeinteger✅0 Same as HQ / 1 Store-specific
├─ linkstring—Store link (required when link_type=1)

3.7 Get Merchant Product List#

GET /open_api/merchant/products
Request Headers: access-token ✅, merchant-id (group token only)
Response — response.list[]
FieldTypeNotes
idstringProduct ID
custom_idstringProduct number
picstringImage URL
namestringProduct name (default language)
problemobjectTarget skin problems
labelstringTags (default language, comma-separated)
price_unitintegerPrice currency identifier
pricenumberPrice
price_symbolstringPrice symbol
linkstringMerchant (HQ) product link
store_linkstringStore-specific product link
sourceinteger1 Store-created / 2 Merchant-created
statusinteger-1 Disabled / 1 Active
age_limitinteger0 No limit / 1 Restricted range
min_ageintegerMin age
max_ageintegerMax age
sub_titlestringSubtitle (default language)
user_level_limitnumber0 No limit / 1 Restricted
user_levelstringRestricted level(s), comma-separated
instructionstringUsage instructions (default language)
lang_dataobjectMulti-language content

3.8 Get Store Product List#

GET /open_api/store/products
Query Parameters
NameRequiredNotes
store_custom_id✅Store number
page—Page number (default 1)
count—Records per page (default 20, max 100)
Response — same fields as §3.7.

Part IV — Treatment APIs#

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.

4.1 Batch Create Treatments#

POST /open_api/merchant/treatments
Request Body — treatment_list[]
FieldTypeRequiredNotes
namestring✅Treatment name
custom_idstring✅Treatment number
picstring✅Image URL
sub_titlestring—Subtitle (max 300 chars)
price_unitinteger—Price currency identifier
pricenumber—Price
linkstring—Treatment link
problemobject—Target skin problems (see §1.7)
age_limitinteger—0 No limit / 1 Set range
min_ageinteger—Min age
max_ageinteger—Max age
labelstring—Tags (max 4, each max 10 chars)
nurse_stageinteger—Nursing stage (see §1.9)
user_level——Customer level restriction
goods_attributes_codestring—Associated product attribute codes (comma-separated)
instructionstring—Treatment instructions (max 2000 chars)
lang_dataobject—Multi-language content

4.2 Batch Update Treatments#

PATCH /open_api/merchant/treatments
Request Body — treatment_list[]
FieldRequiredNotes
custom_id✅Treatment number to update
All other fields—Only include fields to change

4.3 Batch Delete Treatments#

DELETE /open_api/merchant/treatments
Only merchant-created treatments (source=2) can be deleted.
Request Body
FieldTypeRequiredNotes
custom_id_list[]string[]✅Treatment numbers to delete

4.4 Batch Enable / Disable Treatments#

PATCH /open_api/treatment/status/{status}
Path parameter status: 1 = Enable / -1 = Disable
Request Body
FieldTypeRequiredNotes
custom_id_list[]string[]✅Treatment numbers

4.5 Set Treatment Available Stores#

PATCH /open_api/treatment/sale_stores
Request Body
FieldTypeRequiredNotes
custom_idstring✅Treatment number
sell_typeinteger✅1 All stores / 2 Selected stores
store_list[]string[]—Store numbers (required when sell_type=2)

4.6 Get Merchant Treatment List#

GET /open_api/merchant/treatments
Response — response.list[]
FieldTypeNotes
idstringTreatment ID
custom_idstringTreatment number
picstringImage URL
namestringTreatment name (default language)
problemobjectTarget skin problems
labelstringTags (default language)
price_unitintegerPrice currency identifier
pricenumberPrice
price_symbolstringPrice symbol
linkstringMerchant (HQ) link
sourceinteger1 Store-created / 2 Merchant-created
statusinteger-1 Disabled / 1 Active
age_limitinteger0 No limit / 1 Restricted range
min_ageintegerMin age
max_ageintegerMax age
sub_titlestringSubtitle (default language)
user_level_limitnumber0 No limit / 1 Restricted
user_levelstringRestricted level(s)
instructionstringInstructions (default language)
goods_attributes_limitstring0 No restriction / 1 Restricted
goods_attributes_codestringAssociated product attribute codes
lang_dataobjectMulti-language content

4.7 Get Store Treatment List#

GET /open_api/store/treatments
Query Parameters
NameRequiredNotes
store_custom_id✅Store number
page—Page number (default 1)
count—Records per page (default 20, max 100)
Response — same fields as §4.6, plus store_link.

4.8 Set Store Treatment Links#

PATCH /open_api/treatment/links
Only supported for Premium Version stores. Returns error 40068 if the treatment is not available for sale at the specified store.
Error Codes
CodeDescription
40068Store is not a Premium Version store
40089Treatment unavailable for purchase at this store
Request Body
FieldTypeRequiredNotes
custom_idstring✅Treatment number
link_list[]object[]✅Up to 100 entries
├─ store_custom_idstring✅Store number
├─ link_typeinteger✅0 Same as HQ / 1 Store-specific
├─ linkstring—Store link (required when link_type=1)

Endpoint Index#

MethodPathSectionDescription
GET/open_api/common/access_token2.1Get access token
GET/open_api/merchant/merchants2.2List merchants under group
GET/open_api/merchant/stores2.3List stores under merchant
GET/open_api/merchant/employees2.4List employees
GET/open_api/merchant/langs2.5List enabled languages
GET/open_api/merchant/dimensions2.6List skin analysis dimensions
GET/open_api/merchant/categories2.7List product categories
POST/open_api/merchant/stores2.8Create store
PATCH/open_api/merchant/stores2.9Update store
POST/open_api/merchant/employees2.10Create employee
PATCH/open_api/merchant/account2.11Update account
PATCH/open_api/merchant/account_status/{status}2.12Enable/disable account
GET/open_api/merchant/area2.13List regions
POST/open_api/merchant/products3.1Batch create products
PATCH/open_api/merchant/products3.2Batch update products
DELETE/open_api/merchant/products3.3Batch delete products
PATCH/open_api/product/status/{status}3.4Enable/disable products
PATCH/open_api/product/sale_stores3.5Set product available stores
PATCH/open_api/product/links3.6Set store product links
GET/open_api/merchant/products3.7Get merchant product list
GET/open_api/store/products3.8Get store product list
POST/open_api/merchant/treatments4.1Batch create treatments
PATCH/open_api/merchant/treatments4.2Batch update treatments
DELETE/open_api/merchant/treatments4.3Batch delete treatments
PATCH/open_api/treatment/status/{status}4.4Enable/disable treatments
PATCH/open_api/treatment/sale_stores4.5Set treatment available stores
GET/open_api/merchant/treatments4.6Get merchant treatment list
GET/open_api/store/treatments4.7Get store treatment list
PATCH/open_api/treatment/links4.8Set store treatment links

Previous
Skin analysis
Next
Push Data API
Built with