# cURL 示例

## 环境变量

```bash
export EASEBG_API_KEY="your_api_key_here"
export EASEBG_API_BASE="https://api.easebg.com/api/v1"
```

## 1. 创建抠图任务

```bash
curl -X POST "${EASEBG_API_BASE}/open/developer/tasks" \
  -H "X-API-Key: ${EASEBG_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/photo.jpg",
    "modelVersion": "easebg-2.0",
    "callbackUrl": "https://your-app.com/webhooks/easebg"
  }'
```

**响应示例：**

```json
{
  "request_id": "req_abc123",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "queued",
    "modelVersion": "easebg-2.0",
    "sourceUrl": "https://example.com/photo.jpg",
    "resultUrl": null,
    "createdAt": "2025-01-15T10:30:00Z",
    "completedAt": null
  }
}
```

## 2. 查询任务状态

```bash
curl -X GET "${EASEBG_API_BASE}/open/developer/tasks/550e8400-e29b-41d4-a716-446655440000" \
  -H "X-API-Key: ${EASEBG_API_KEY}"
```

## 3. 获取任务结果

任务完成后，`resultUrl` 字段会返回处理后的图片地址：

```bash
# 查询任务获取结果 URL
TASK_RESULT=$(curl -s -X GET "${EASEBG_API_BASE}/open/developer/tasks/550e8400-e29b-41d4-a716-446655440000" \
  -H "X-API-Key: ${EASEBG_API_KEY}" | jq -r '.data.resultUrl')

# 下载结果图片
curl -o result.png "${TASK_RESULT}"
```

## 4. 取消任务

```bash
curl -X DELETE "${EASEBG_API_BASE}/open/developer/tasks/550e8400-e29b-41d4-a716-446655440000" \
  -H "X-API-Key: ${EASEBG_API_KEY}"
```

## 5. 创建批量任务

```bash
curl -X POST "${EASEBG_API_BASE}/open/developer/batch-tasks" \
  -H "X-API-Key: ${EASEBG_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrls": [
      "https://example.com/photo1.jpg",
      "https://example.com/photo2.jpg",
      "https://example.com/photo3.jpg"
    ],
    "modelVersion": "easebg-2.0",
    "callbackUrl": "https://your-app.com/webhooks/easebg"
  }'
```

## 6. Webhook 签名验证

Webhook 请求头中会携带 `X-EaseBG-Signature`，使用 HMAC-SHA256 签名：

```bash
# 验证 Webhook 签名
WEBHOOK_SECRET="your_webhook_secret"
PAYLOAD='{"event":"task.succeeded","taskId":"550e8400-...","resultUrl":"https://..."}'
RECEIVED_SIGNATURE="abc123def456..."

COMPUTED_SIGNATURE=$(echo -n "${PAYLOAD}" | \
  openssl dgst -sha256 -hmac "${WEBHOOK_SECRET}" | \
  awk '{print $2}')

if [ "${COMPUTED_SIGNATURE}" = "${RECEIVED_SIGNATURE}" ]; then
  echo "签名验证通过"
else
  echo "签名验证失败"
fi
```

## 7. 错误处理

```bash
# 带错误处理的任务创建
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "${EASEBG_API_BASE}/open/developer/tasks" \
  -H "X-API-Key: ${EASEBG_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"imageUrl": "https://example.com/photo.jpg"}')

HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | sed '$d')

case $HTTP_CODE in
  201) echo "任务创建成功: $BODY" ;;
  400) echo "参数错误: $(echo $BODY | jq -r '.error.message')" ;;
  401) echo "API Key 无效" ;;
  402) echo "积分不足: $(echo $BODY | jq -r '.error.message')" ;;
  429) echo "请求频率超限，请稍后重试" ;;
  500) echo "服务器内部错误" ;;
esac
```

## 8. 分页查询

```bash
# 分页查询任务列表
curl -X GET "${EASEBG_API_BASE}/open/developer/tasks?page=1&pageSize=20&status=succeeded&startDate=2025-01-01&endDate=2025-01-31" \
  -H "X-API-Key: ${EASEBG_API_KEY}"
```

**响应示例：**

```json
{
  "request_id": "req_def456",
  "data": [
    { "id": "550e8400-...", "status": "succeeded", "resultUrl": "https://..." }
  ],
  "meta": {
    "page": 1,
    "pageSize": 20,
    "total": 85,
    "totalPages": 5
  }
}
```
