LinkedIn adAnalyticsV2 API dateRange参数格式问题求助
解决LinkedIn adAnalyticsV2 API的dateRange参数错误问题
问题根源:你将dateRange、pivot、timeGranularity这类请求参数放在了**请求头(headers)中,但LinkedIn的adAnalyticsV2 API要求这些参数作为查询参数(query parameters)**传递,而非请求头字段。
正确的参数格式与代码实现
1. dateRange的合法格式
使用LinkedIn Rest.QL语法,支持两种格式:
- 日期组件格式:
(start:(day:DD,month:MM,year:YYYY),end:(day:DD,month:MM,year:YYYY)) - 毫秒级时间戳格式:
(start:TIMESTAMP_MS,end:TIMESTAMP_MS)
2. 修正后的完整代码
import requests def get_ad_analytics_v2(token: str) -> dict: url = 'https://api.linkedin.com/v2/adAnalyticsV2?q=analytics' # 仅保留认证与协议版本相关的请求头 headers = { 'Authorization': f'Bearer {token}', 'cache-control': 'no-cache', 'X-Restli-Protocol-Version': '2.0.0' } # 所有查询参数放在params字典中传递 params = { 'pivot': 'ACCOUNT', # 日期组件格式示例 'dateRange': '(start:(day:28,month:5,year:2019),end:(day:28,month:5,year:2022))', 'timeGranularity': 'DAILY' } response = requests.get(url, headers=headers, params=params).json() print(response) return response
3. 时间戳格式示例
如果想用毫秒级时间戳,直接替换dateRange的值即可:
'dateRange': '(start:1559020800000,end:1653763200000)'
关键注意事项
- 所有API要求的查询参数必须放在
requests.get的params参数中,不能混入请求头 - dateRange不需要做JSON序列化,直接使用符合Rest.QL语法的字符串即可
- 确保时间范围合理(start时间不晚于end时间),否则会触发其他参数错误
内容的提问来源于stack exchange,提问作者king_nothin
相关产品推荐
相关产品推荐

