> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 轮询 Work

> 从 self-hosted Environment claim 一个可用 work item。

`GET /api/v1/cloud/environments/{environment_id}/work/poll`

从 `self_hosted` Environment claim 一个可用 work item。没有可用 work 时返回 **HTTP 200 OK**，响应体为 JSON `null`。

Poll 只表示投递 work item，不表示确认执行。worker 应在执行 Session work 前调用 [Ack work item](/zh/cloud-agents/api/environments/work/ack)。

## 路径参数

| 参数               | 类型     | 说明                        |
| ---------------- | ------ | ------------------------- |
| `environment_id` | string | Environment ID，前缀为 `env_` |

## 请求头

| 头部              | 必选 | 说明                                  |
| --------------- | -- | ----------------------------------- |
| `Authorization` | 是  | `Bearer $QODER_PAT`                 |
| `Worker-ID`     | 否  | 稳定的 worker 标识。推荐传入，用于队列统计和 ack 身份校验 |

## 查询参数

| 参数                      | 类型      | 必选 | 默认值  | 说明                                          |
| ----------------------- | ------- | -- | ---- | ------------------------------------------- |
| `block_ms`              | integer | 否  | -    | long poll 等待时间，单位毫秒。取值 1 到 999；省略时为非阻塞 poll |
| `reclaim_older_than_ms` | integer | 否  | 5000 | queued item 已投递但未 ack 超过该毫秒数后允许重新投递。必须为非负整数 |

## 示例请求

```bash theme={null}
curl -X GET "https://api.qoder.com/api/v1/cloud/environments/env_019e64e01a137caf953ac2ac7b42ec5c/work/poll?block_ms=999" \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Worker-ID: byoc-worker-01"
```

## 示例响应：有 work

**HTTP 200 OK**

```json theme={null}
{
  "id": "work_019f3be4fd2475d9a784bf2c739e1194",
  "type": "work",
  "environment_id": "env_019e64e01a137caf953ac2ac7b42ec5c",
  "data": {
    "type": "session",
    "id": "sess_019f3be3fa66750bb9a1fbcde85b5fe1"
  },
  "state": "queued",
  "created_at": "2026-07-01T08:15:01Z",
  "acknowledged_at": null,
  "started_at": null,
  "latest_heartbeat_at": null,
  "stop_requested_at": null,
  "stopped_at": null,
  "metadata": {}
}
```

## 示例响应：无 work

**HTTP 200 OK**

```json theme={null}
null
```

## 响应字段

返回 [Work item 对象](/zh/cloud-agents/api/environments/work/schemas#work-item-对象)；没有可用 item 时返回 `null`。

## 错误码

| HTTP | type                    | 触发条件                           |
| ---- | ----------------------- | ------------------------------ |
| 400  | `invalid_request_error` | `block_ms` 不是 1 到 999 之间的整数    |
| 400  | `invalid_request_error` | `reclaim_older_than_ms` 不是非负整数 |
| 400  | `invalid_request_error` | Environment 不是 `self_hosted`   |
| 401  | `authentication_error`  | PAT 无效或过期                      |
| 403  | `permission_error`      | 无权限执行此操作                       |
| 404  | `not_found_error`       | Environment 不存在                |

完整错误信封格式见 [错误参考](/zh/cloud-agents/api/conventions/errors)。

## 注意事项

* `Worker-ID` 是 worker 自定义的业务标识，不是认证凭据。
* 如果 poll 和 ack 都传入 `Worker-ID`，且两次值不一致，ack 会返回 409。
* long poll 最多等待一次 `block_ms`；收到 `null` 后客户端应继续下一轮 poll。

## 相关

<CardGroup cols={2}>
  <Card title="云端环境" icon="server" href="/zh/cloud-agents/environments">
    选择 Agent 运行的容器、网络与依赖。
  </Card>
</CardGroup>
