POST /api/v1/profile/save/

保存用户画像

在 Adapty Mail 中创建或更新用户画像。用户画像包含用户的电子邮件及属性, Adapty Mail 使用这些信息来识别收件人并构建市场细分。

请使用稳定的 external_profile_id 标识每位用户。再次发送相同的 external_profile_id 将更新现有用户画像,而不会创建重复记录。

Request body

external_profile_idstringrequired

用户的稳定标识符,由您的应用或后端持有。在所有请求中复用相同的值,以便 Adapty Mail 将电子邮件、点击和购买关联到同一个用户画像。切勿使用匿名标识符或每次安装生成的标识符。

external_created_atstringrequired

用户创建时间,采用 ISO 8601 格式(例如 "2026-06-01T10:30:00Z")。 您可以在市场细分中使用此日期。

emailstringrequired

用户的电子邮件地址。Adapty Mail 将营销活动发送至此地址。 该地址为一次性写入:在用户画像创建时设置,后续保存操作不会覆盖它。

customer_user_idstring

用户在您自有系统中的标识符(如果您有一个 Adapty 也知晓的标识符)。Adapty Mail 使用它来识别同样通过 Adapty SDK 接入的用户,从而让两个来源共享同一个用户画像,而不是生成重复记录向同一用户发送两次邮件。

first_namestring

用户的名字。

last_namestring

用户的姓氏。

genderstring

用户的性别。

birthdaystring

用户的出生日期,采用 ISO 8601 格式(例如 "1990-05-21")。

countrystring

用户的国家/地区,采用两字母 ISO 3166-1 alpha-2 代码(例如 US)。

store_countrystring

用户的应用商店地区,采用两字母 ISO 3166-1 alpha-2 代码(例如 US)。

email_consentboolean

用户对接收营销邮件的回答:true 表示同意,false 表示拒绝。 Adapty Mail 不会向回答为 false 的用户画像发送任何营销邮件,也不会发送 双重确认订阅请求。其他事务性邮件仍可正常送达。 省略此字段则保留已存储的回答。没有回答记录的用户画像将接收营销邮件。

custom_attributesobject

附加到用户画像的任意键值对(字符串或数字值)。可用于构建市场细分——例如 plan、signup_source 或 trial_days。

device_infoobject
platformstringrequired

用户所使用的平台,例如 iOS 或 Android。

devicestring

设备型号,例如 iPhone15,2。

osstring

操作系统版本,例如 17.5。

localestring

用户的语言区域设置,例如 en-US。Adapty Mail 使用该信息来决定发送本地化营销活动的哪个翻译版本。未设置语言区域的用户将收到英文邮件。

timezonestring

用户的时区,例如 America/New_York。

app_versionstring

用户正在运行的应用版本,例如 3.1.0。

Responses

用户画像保存成功。响应正文为空对象。

Schema
object
Example
{}

验证失败——必填字段缺失或无效。field_name 字段指明了具体是哪个字段。

Schema

标准错误响应。每次失败都会返回一个包含此结构的 4XX 状态。

errorsarray of object
messagestring

人类可读的错误描述。

error_codestring

机器可读的错误标识符。

status_codeinteger

此错误的 HTTP 状态码。

field_namestring

导致错误的请求字段,如果错误与字段无关则为 null。

Example
{
  "errors": [
    {
      "message": "Field required",
      "error_code": "base_error",
      "status_code": 400,
      "field_name": "email"
    }
  ]
}

缺少 Secret API 密钥或密钥无效。

Schema

标准错误响应。每次失败都会返回一个包含此结构的 4XX 状态。

errorsarray of object
messagestring

人类可读的错误描述。

error_codestring

机器可读的错误标识符。

status_codeinteger

此错误的 HTTP 状态码。

field_namestring

导致错误的请求字段,如果错误与字段无关则为 null。

Example
{
  "errors": [
    {
      "message": "Secret key doesn't exist",
      "error_code": "secret_key_does_not_exist_error",
      "status_code": 403,
      "field_name": null
    }
  ]
}