如何通过Roboflow API筛选查询项目中上传及标注中的文件列表
Roboflow API获取私有项目文件列表问题解决
问题背景
私有工作区下有5个项目,需获取数据集内已上传及处于标注流程中的文件列表,但调用Roboflow API时出现异常。
测试变量
WORKSPACE=private-workspace-123 PROJECT=example-project PROJECT_URL=https://app.roboflow.com/private-workspace-123/example-project API_TOKEN=3j5hj534h5j
已尝试的操作及问题
1. 工作区级搜索API(官方文档方案)
调用命令:
curl --location 'https://api.roboflow.com/private-workspace-123/search/v1?api_key= 3j5hj534h5j' --header 'Content-Type: application/json' --data '{"query": "project:app.roboflow.com/private-workspace-123/example-project", "pageSize": 100, "fields": ["filename", "tags"]}'
返回结果:
Internal Server Error%
已尝试/browse路径、HTTP协议等变体,均返回相同错误
2. 简化查询条件的工作区级API
修改查询条件为仅指定项目名:
curl --location 'https://api.roboflow.com/private-workspace-123/search/v1?api_key= 3j5hj534h5j' --header 'Content-Type: application/json' --data '{"query": "project:example-project", "pageSize": 100, "fields": ["filename", "tags"]}'
返回结果:返回所有5个项目的文件列表,而非目标项目,响应片段:
], "total": 10775, "continuationToken": "WzE3Mjg5NDEyODdd" }%
3. 项目级搜索API
调用命令:
curl --location 'https://api.roboflow.com/private-workspace-123/example-project/search?api_key= 3j5hj534h5j' --header 'Content-Type: application/json' --data '{"in_dataset": "true","pageSize": 500, "fields": ["name", "tags"]}'
问题:能正确返回目标项目文件,但最多仅返回50条,且无continuationToken无法分页获取更多内容。
解决方案
1. 修复项目级API的分页问题
Roboflow项目级搜索API实际限制pageSize为50,可通过offset参数实现分页,循环调用直到返回空结果:
# 第1页(offset=0) curl --location 'https://api.roboflow.com/private-workspace-123/example-project/search?api_key=3j5hj534h5j' --header 'Content-Type: application/json' --data '{"in_dataset": "true","pageSize": 50, "offset": 0, "fields": ["name", "tags"]}' # 第2页(offset=50) curl --location 'https://api.roboflow.com/private-workspace-123/example-project/search?api_key=3j5hj534h5j' --header 'Content-Type: application/json' --data '{"in_dataset": "true","pageSize": 50, "offset": 50, "fields": ["name", "tags"]}'
2. 修正工作区级API的查询语法
- 移除API key参数后的空格(原命令
api_key= 3j5hj534h5j中的空格会导致权限验证失败) - 使用
workspace/project格式指定项目,而非完整URL:
curl --location 'https://api.roboflow.com/private-workspace-123/search/v1?api_key=3j5hj534h5j' --header 'Content-Type: application/json' --data '{"query": "project:private-workspace-123/example-project", "pageSize": 100, "fields": ["filename", "tags"]}'
3. 权限验证
确认API token已被授予目标项目的读取权限,避免因权限不足导致的异常。
内容的提问来源于stack exchange,提问作者Mateusz Konopelski
相关产品推荐
相关产品推荐

