LinkedIn Ads API报错404:无法获取指定广告活动数据求助
解决LinkedIn Ads API获取未投放广告活动返回404的问题
可能的问题排查方向
1. 广告活动ID不匹配
Campaign Manager界面显示的活动ID可能和API要求的内部实体ID不一致。建议先调用账户下的所有活动列表接口,确认目标活动的真实ID:
const res = await fetch(`https://api.linkedin.com/rest/adAccounts/${process.env.LINKEDIN_ADS_ACCOUNT_ID}/adCampaigns?q=search`, { method: "GET", headers: { "X-Restli-Protocol": "2.0.0", "Linkedin-Version": "202509", "Authorization": `Bearer ${process.env.LINKEDIN_ACCESS_TOKEN}`, } }); const campaigns = await res.json(); console.log(campaigns.elements); // 遍历列表找到目标活动的ID
对比返回结果中的活动ID与你配置的LINKEDIN_CAMPAIGN_ONE_ID,确保完全一致。
2. API版本兼容性问题
你使用的202601是预览版API,可能存在未完善的逻辑。建议降级到稳定版本(如202509)重试,预览版经常会有接口行为变更。
3. 未投放活动的可见性限制
未投放的活动通常处于DRAFT或PAUSED状态,部分API端点默认仅返回ACTIVE状态的资源。如果调用列表接口,可通过参数指定包含所有状态:
https://api.linkedin.com/rest/adAccounts/{accountId}/adCampaigns?q=search&statuses=DRAFT,PAUSED,ACTIVE,CANCELED,COMPLETED
若单个获取仍失败,需确认你的访问令牌是否包含r_ads(只读广告数据)权限,无权限会导致无法读取非活跃状态的活动。
4. 账户与活动的归属验证
确认目标活动确实属于你指定的广告账户。如果你的账号关联多个广告账户,很可能选错了LINKEDIN_ADS_ACCOUNT_ID。
获取目标数据的实操指导
当成功获取广告活动后,可从返回结果中直接提取部分字段:
- 活动名称:
name字段 - 预算信息:
budget对象(包含amount金额、currencyCode货币类型、budgetType预算模式)
当月累计花费无法从活动详情接口直接获取,需调用广告统计接口:
// 生成当月时间范围(格式YYYY-MM-DD) const startOfMonth = new Date(new Date().getFullYear(), new Date().getMonth(), 1).toISOString().split('T')[0]; const today = new Date().toISOString().split('T')[0]; const statsRes = await fetch(`https://api.linkedin.com/rest/adCampaignStats?q=analytics&campaigns[0]=urn:li:adCampaign:${process.env.LINKEDIN_CAMPAIGN_ONE_ID}&timeRange.start=${startOfMonth}&timeRange.end=${today}&metrics=costInUsd`, { method: "GET", headers: { "X-Restli-Protocol": "2.0.0", "Linkedin-Version": "202509", "Authorization": `Bearer ${process.env.LINKEDIN_ACCESS_TOKEN}`, } }); const campaignStats = await statsRes.json(); // 若活动无投放记录,costInUsd会返回0或不存在,需做判空处理 const monthlySpend = campaignStats.elements?.[0]?.costInUsd || 0;
内容的提问来源于stack exchange,提问作者Phoinexx
相关产品推荐
相关产品推荐

