错误代码
以下是REST API错误代码列表,并说明如何将错误返回给应用程序。
处理和记录异常
在针对Marketo进行开发时,如果遇到意外异常,请务必记录请求和响应。 虽然重新身份验证可以安全地处理某些类型的异常(例如过期的身份验证),但其他异常可能需要支持交互,在此情况下将始终请求请求和响应。
错误类型
在正常操作下,Marketo REST API可以返回三种不同类型的错误:
- HTTP级别:这些错误由
4xx
代码指示。 - 响应级别:这些错误包含在JSON响应的“错误”数组中。
- 记录级别:这些错误包含在JSON响应的“result”数组中,并且是以“status”字段和“reasons”数组单独记录为基础指示的。
对于响应级别和记录级别错误类型,返回HTTP状态代码200。 对于所有错误类型,不应评估HTTP原因短语,因为它是可选的且可能会发生更改。
HTTP级别错误
在正常操作情况下,Marketo应仅返回两个HTTP状态代码错误: 413 Request Entity Too Large
和414 Request URI Too Long
。 通过捕获错误、修改请求和重试,这些都可恢复,但通过智能编码实践,您绝不应该在野外遇到这些情况。
如果请求有效负载超过1MB,Marketo将返回413,对于Import Lead将返回10MB。 在大多数情况下,不会达到这些限制,但是如果向请求的大小添加检查,并移动任何记录,导致超过新请求的限制,则应防止出现任何情况,这种情况会导致任何端点返回此错误。
当GET请求的URI超过8KB时,将返回414。 要避免出现这种情况,请检查查询字符串的长度,看看是否超过此限制。 如果它确实将您的请求更改为POST方法,则使用附加参数_method=GET
输入您的查询字符串作为请求正文。 这放弃了URI的限制。 在大多数情况下,很少达到此限制,但在检索具有长单个过滤器值(如GUID)的大量记录时,这种情况比较常见。
标识终结点可能返回401未授权错误。 这通常是由于无效的客户端ID或无效的客户端密钥。 HTTP级别的错误代码
响应级别错误
将响应的success
参数设置为false时,将出现响应级别错误,其结构如下所示:
{
"requestId": "e42b#14272d07d78",
"success": false,
"errors": [
{
"code": "601",
"message": "Unauthorized"
}
]
}
“错误”数组中的每个对象都有两个成员,code
,它是从601到799的带引号的整数,一个message
提供了错误的纯文本原因。 6xx代码始终指示请求完全失败并且未执行。 例如,“访问令牌无效”601可通过重新身份验证并使用请求传递新访问令牌而恢复。 7xx错误表示请求失败,可能是因为未返回任何数据,或者请求被错误地参数化,如包含无效的日期,或缺少所需的参数。
响应级错误代码
返回此响应代码的API调用不会计入每日配额或速率限制中。
调用无法完成,因为它违反了创建或更新资产的要求,例如,尝试在没有模板的情况下创建电子邮件。 尝试以下操作时也可能出现此错误:
- 检索包含社交内容的登陆页面的内容。
- 克隆包含特定资产类型的程序(有关详细信息,请参阅程序克隆)。
- 批准没有草稿(即已批准)的资产。
记录级别 record_level_errors
记录级别错误表示无法为单个记录完成操作,但请求本身有效。 具有记录级错误的响应遵循以下模式:
响应
{
"requestId":"e42b#14272d07d78",
"success":true,
"result":[
{
"id":50,
"status":"created"
},
{
"id":51,
"status":"created"
},
{
"status":"skipped",
"reasons":[
{
"code":"1005",
"message":"Lead already exists"
}
]
}
]
}
调用结果数组中包含的记录的排序方式与请求的输入数组相同。
成功请求中的每个记录都可能在单独的基础上成功或失败,响应结果数组中包含的每个记录的状态字段即表示这一点。 将“跳过”这些记录的“状态”字段,并存在“原因”数组。 每个原因都包含一个“代码”成员和一个“消息”成员。 代码始终为1xxx,该消息指示跳过记录的原因。 例如,同步潜在客户请求的“action”设置为“createOnly”,但已提交的记录中的某个键已存在潜在客户。 此案例会返回一个代码1005,并显示一条消息“Lead already exists”(商机已存在),如上所示。
记录级错误代码
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3 9-row-3 10-row-3 11-row-3 12-row-3 13-row-3 14-row-3 15-row-3 16-row-3 17-row-3 18-row-3 19-row-3 20-row-3 21-row-3 22-row-3 23-row-3 24-row-3 25-row-3 26-row-3 27-row-3 28-row-3 29-row-3 30-row-3 31-row-3 32-row-3 33-row-3 34-row-3 35-row-3 36-row-3 37-row-3 html-authored no-header | ||
---|---|---|
响应代码 | 描述 | 注释 |
1001 | 值“%s”无效。 需要“%s”类型 | 每当参数值有类型不匹配时,就会生成错误。 例如,为integer参数指定的字符串值。 |
1002 | 缺少所需参数“%s”的值 | 请求中缺少所需的参数时会生成错误 |
1003 | 数据无效 | 提交的数据不是给定端点或模式的有效类型时;例如,通过指定为createOnly的操作提交商机的id时,或在批量营销活动中使用请求营销活动时。 |
1004 | 未找到潜在客户 | 对于syncLead,当操作为“updateOnly”且未找到潜在客户时 |
1005 | 潜在客户已存在 | 对于syncLead,当操作为“createOnly”并且商机已存在时 |
1006 | 找不到字段“%s” | 调用中包含的字段不是有效字段。 |
1007 | 多个潜在客户符合查找条件 | 多个潜在客户符合查找条件。 仅当键与单个记录匹配时才能执行更新 |
1008 | 访问分区“%s”被拒绝 | 自定义服务的用户无权访问包含该记录所在分区的工作区。 |
1009 | 必须指定分区名称 | |
1010 | 不允许分区更新 | 指定的记录已存在于单独的Lead分区中。 |
1011 | 不支持字段“%s” | 当查找字段或用不支持的标准字段(例如:firstName、lastName)指定的“filterType”时 |
1012 | 无效的Cookie值“%s” | 调用关联潜在客户时,可能会发生这种情况,因为该潜在客户的“cookie”参数值无效。 当使用“filterType=cookies”和“filterValues”参数的无效值通过筛选类型调用获取潜在客户时,也会发生这种情况。 |
1013 | 未找到对象 | 按ID获取对象(列表、营销活动)会返回此错误代码 |
1014 | 创建对象失败 | 创建对象(列表)失败 |
1015 | 潜在客户不在列表中 | 指定的潜在客户不是目标列表的成员 |
1016 | 导入过多 | 有太多导入已排队。 最多允许10个 |
1017 | 对象已存在 | 创建失败,因为记录已存在 |
1018 | CRM已启用 | 无法执行操作,因为实例启用了本机CRM集成。 |
1019 | 正在导入 | 目标列表已在导入到 |
1020 | 要编程的克隆太多 | 订阅已达到当天的计划计划中“cloneToProgramName”的分配使用量 |
1021 | 不允许公司更新 | 不允许在syncLead期间更新公司 |
1022 | 正在使用的对象 | 当某个对象正由另一个对象使用时,不允许删除 |
1025 | 程序状态未找到 | 为更改潜在客户计划状态指定的状态与计划渠道可用的状态不匹配。 |
1026 | 未启用自定义对象 | 无法执行该操作,因为实例未启用自定义对象集成。 |
1027 | 已达到最大活动类型限制 | 订阅已达到可用自定义活动类型的最大数。 |
1028 | 已达到最大字段限制 | 自定义活动最多有20个次要属性。 |
1029 |
|
|
1035 | 不支持的筛选器类型 | 在某些订阅中,不支持以下批量潜在客户提取过滤器类型: updatedAt、smartListId、smartListName。 |
1036 | 在输入中发现重复的对象 | 调用了使用相同的外键更新两个或多个记录。 例如,同步公司调用时对多个公司使用相同的externalCompanyId。 |
1037 | 已跳过潜在客户 | 已跳过潜在客户,因为它已经处于或超过此状态。 |
1042 | 运行日期无效 | 为计划营销活动指定的runAt日期太长了(最长为2年)。 |
1048 | 自定义对象放弃草稿失败 | 已进行调用以放弃自定义对象的草稿版本。 |
1049 | 创建活动失败 | 属性数组太长。 传递给记录的属性数组超过了65536字节的最大长度 |
1076 | 使用mergeInCRM标志的合并潜在客户调用为4。 | 您正在创建重复记录。 建议您改用现有记录。 这是Marketo在Salesforce中合并时收到的错误消息。 |
1077 | 由于“SFDC字段”长度,合并潜在客户调用失败 | 由于“SFDC字段”超出允许的字符限制,mergeInCRM设置为true的合并潜在客户调用失败。 要更正此问题,请缩短“SFDC字段”的长度,或将mergeInCRM设置为false。 |
1078 | 合并潜在客户调用失败,因为实体已删除,不是潜在客户/联系人,或者字段筛选条件不匹配。 | 合并失败,无法在本地同步的CRM中执行合并操作 这是Marketo在Salesforce中合并时收到的错误消息。 |
1079 | 由于重复记录中存在个性化URL冲突,合并潜在客户调用失败 | 合并潜在客户调用指定了具有相同个性化URL的多个潜在客户。 要解决此问题,请使用Marketo Engage用户界面合并这些记录。 |