如何在Power Automate中循环尝试多组API Key直至请求成功?
单流循环尝试多API_KEY实现方案
完全可行,利用Power Automate的循环控制和错误捕获机制就能实现需求,具体步骤如下:
1. 初始化变量
- 创建数组变量
var_APIKeys,存入所有工作区的API_KEY,格式示例:["key_workspace_1", "key_workspace_2", ..., "key_workspace_15"] - 创建整数变量
var_CurrentIndex,初始值设为0,用来标记当前尝试的API_KEY索引
2. 添加Do Until循环
- 设置循环终止条件:
@equals(outputs('HTTP_GET_文档下载')?['statusCode'], 200) - 设置最大循环次数为
15(和API_KEY数量一致,避免无限循环)
3. 循环内逻辑
3.1 获取当前API_KEY
添加Set variable动作,将var_CurrentAPIKey设为:
variables('var_APIKeys')[variables('var_CurrentIndex')]
3.2 执行HTTP GET请求
- URI填写:
https://api.EXAMPLE.com/public/v1/{DOC_ID}/download(替换{DOC_ID}为webhook传入的文档ID变量) - 请求头添加
Authorization,值为:concat('API-Key: ', variables('var_CurrentAPIKey')) - 关键配置:点击HTTP请求动作的菜单 → Configure run after,勾选is successful、has failed、has timed out,确保即使返回401错误,流程仍能继续执行循环
3.3 判断请求结果并更新索引
添加Condition动作,判断两个条件:
- 左侧:
outputs('HTTP_GET_文档下载')?['statusCode'],等于401 - 左侧:
outputs('HTTP_GET_文档下载')?['body']?['type'],等于authentication_error
如果条件成立(即无效API_KEY):
- 添加Increment variable动作,将
var_CurrentIndex自增1,进入下一次循环
如果条件不成立(比如返回200或其他错误):
- 若返回200,循环会自动终止,继续后续流程;若为其他错误(如500),可添加通知或日志动作后终止流程
4. 循环异常处理
在循环外添加Configure run after,处理循环达到最大次数仍未成功的情况:
- 发送邮件/Teams通知,记录所有API_KEY尝试失败的日志
内容的提问来源于stack exchange,提问作者Bijan
相关产品推荐
相关产品推荐

