You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LinkedIn Ads API技术求助:无法通过API获取指定广告系列数据(返回404错误)

排查LinkedIn Ads API获取广告系列404错误的实用方案

嘿,我之前也碰到过类似的LinkedIn Ads API坑,结合你的情况,咱们一步步来排查这个404问题:

1. 先修正API端点的路径格式

你当前用的/adAccounts/{accountId}/adCampaigns/{campaignId}路径可能不符合LinkedIn API的规则——LinkedIn的REST API里,获取单个广告系列不需要嵌套在账户路径下,正确的单个资源端点应该是/adCampaigns/{campaignId}。

试试把代码改成这样:

const res = await fetch(`https://api.linkedin.com/rest/adCampaigns/${process.env.LINKEDIN_CAMPAIGN_ONE_ID}`, {
  method: "GET",
  headers: {
    "X-Restli-Protocol": "2.0.0",
    "Linkedin-Version": "202601",
    "Authorization": `Bearer ${process.env.LINKEDIN_ACCESS_TOKEN}`,
  }
});

如果想获取某个账户下的所有广告系列,才用/adAccounts/{accountId}/adCampaigns这个路径(不带单个campaignId),这个端点会返回该账户下的所有系列列表,也能帮你确认目标ID是否正确。

2. 确认权限和令牌没问题

虽然你能拿到账户数据,但广告系列可能需要更具体的权限。检查你的Access Token是否包含r_ads(只读)或rw_ads(读写)权限——如果权限不够,一般会返回403,但偶尔也可能有奇怪的404情况,所以还是确认下更稳妥。另外,别忘了检查令牌有没有过期,LinkedIn短期令牌有效期是60天,长期令牌需要定期刷新。

3. 核对广告系列ID的准确性

有时候Campaign Manager里显示的ID和API要求的格式可能有出入:

  • 确保LINKEDIN_CAMPAIGN_ONE_ID是纯数字的ID,LinkedIn广告系列ID通常就是一串数字,没有前缀或后缀
  • 可以先调用账户下所有广告系列的接口,拿到完整列表后直接复制目标ID,避免手动输入错误。代码示例:
const res = await fetch(`https://api.linkedin.com/rest/adAccounts/${process.env.LINKEDIN_ADS_ACCOUNT_ID}/adCampaigns`, {
  method: "GET",
  headers: {
    "X-Restli-Protocol": "2.0.0",
    "Linkedin-Version": "202601",
    "Authorization": `Bearer ${process.env.LINKEDIN_ACCESS_TOKEN}`,
    // 指定需要的字段,减少返回的数据量
    "fields": "id,name,budget_amount,cost_in_local_currency"
  }
});
const campaigns = await res.json();
console.log("账户下的广告系列列表:", campaigns);

4. 检查广告系列的状态过滤

即使广告系列存在,未投放状态的系列会不会被默认过滤?LinkedIn API默认应该返回所有状态的系列,但保险起见,你可以在请求所有系列时显式指定状态参数,比如:

const res = await fetch(`https://api.linkedin.com/rest/adAccounts/${process.env.LINKEDIN_ADS_ACCOUNT_ID}/adCampaigns?q=search&search.statuses=ACTIVE,PAUSED,DRAFT,COMPLETED`, {
  method: "GET",
  headers: {
    "X-Restli-Protocol": "2.0.0",
    "Linkedin-Version": "202601",
    "Authorization": `Bearer ${process.env.LINKEDIN_ACCESS_TOKEN}`,
    "fields": "id,name,budget_amount,cost_in_local_currency"
  }
});

5. 试试切换到稳定的API版本

你用的202601是未来版本,LinkedIn允许提前使用,但可能存在一些未公开的兼容性问题。建议换成较新的稳定版本,比如202412,看看能不能解决问题:

headers: {
  "X-Restli-Protocol": "2.0.0",
  "Linkedin-Version": "202412", // 换成稳定版本
  "Authorization": `Bearer ${process.env.LINKEDIN_ACCESS_TOKEN}`,
}

关于获取你需要的核心数据

当成功拿到广告系列数据后,要获取预算、当月花费、名称这些字段,记得在请求头里加fields参数指定:

  • name:广告系列名称
  • budget_amount:预算金额(包含币种信息)
  • cost_in_local_currency:累计总花费

如果需要当月的累计花费,基础广告系列接口可能满足不了,得调用Ads Analytics API,它支持按时间范围过滤数据。示例代码大概是这样:

const res = await fetch(`https://api.linkedin.com/rest/adAnalytics?q=analytics&pivot=CAMPAIGN&dateRange.start=2025-01-01&dateRange.end=2025-01-31&accounts=urn:li:sponsoredAccount:${process.env.LINKEDIN_ADS_ACCOUNT_ID}&campaigns=urn:li:sponsoredCampaign:${process.env.LINKEDIN_CAMPAIGN_ONE_ID}&metrics=costInLocalCurrency`, {
  method: "GET",
  headers: {
    "X-Restli-Protocol": "2.0.0",
    "Linkedin-Version": "202412",
    "Authorization": `Bearer ${process.env.LINKEDIN_ACCESS_TOKEN}`,
  }
});
const analyticsData = await res.json();
console.log("当月累计花费:", analyticsData);

内容的提问来源于stack exchange,提问作者Phoinexx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 06:39:05