4.2 KiB
Delivery Desk upload contract
Current hierarchy and identity
operation group -> project -> work -> review round
- A project belongs to exactly one operation group.
- A work belongs to exactly one project.
- A review round belongs to exactly one work and contains exactly one proposal.
externalIdis unique within a project and is the only supported idempotency key for agent-created works.- Product-facing operations do not accept a collection/delivery-set ID.
Authentication and scope
Send Authorization: Bearer <DELIVERY_DESK_API_KEY>.
| Key scope | Readable projects | Create work | Create round |
|---|---|---|---|
project |
Its bound active project | Only in that project | Only for works in that project |
platform |
All non-archived projects | Any active project | Any work in an active project |
Prefer project. Do not store the token in a plan file.
Discovery endpoints
GET /api/projects
Returns accessible projects. Relevant fields:
{
"id": 12,
"group_id": 3,
"group_name": "示例运营组",
"name": "光影内容计划",
"slug": "light-notes",
"status": "active",
"review_status": "reviewing"
}
GET /api/projects/:projectId/works
Returns works in the exact project. Use ?externalId=<value> for exact external-ID lookup.
GET /api/works/:workId
Returns current work content, project identity, images, and rounds. Use ?round=N only when inspecting a historical round.
Mutation endpoints
POST /api/projects/:projectId/works
JSON body:
{
"externalId": "client-2026-001",
"title": "作品标题",
"description": "正文",
"tags": ["#夏日"],
"images": ["https://cdn.example.com/01.jpg"]
}
Constraints:
titleis required.imagescontains 1-30 public HTTP/HTTPS URLs.- Array order is display order; item 1 is the cover.
- An active Tencent COS configuration is required. URLs on its configured public/CDN origin are reused; other public images are downloaded, validated, and stored in that COS before the work is created.
- Cross-origin images must be supported image responses no larger than 20 MB. Local, private, reserved, and non-standard-port targets are rejected.
- Repeating the same
projectId + externalIdreturns the existing work withidempotent: true.
POST /api/works/:workId/rounds
JSON body:
{
"title": "修改后的标题",
"description": "修改后的正文",
"tags": ["#第二轮"],
"images": ["https://cdn.example.com/round-2.jpg"]
}
This endpoint is not idempotent. One successful call creates exactly one new round. Never blindly retry after a timeout. It applies the same COS reuse/import rules as work creation.
State guards
- Only
activeprojects accept new works or rounds. - Closed or archived projects are read-only.
- A completed project may require an authorized administrator to reopen the relevant workflow before another round can be created.
Status Script action Required next step 400reviseCorrect malformed input, regenerate the plan, and obtain a new confirmation. 401ask_operatorAsk the operator to configure or replace DELIVERY_DESK_API_KEY.403ask_operatorReport the exact group/project and ask an administrator to correct Key scope. Never select another target. 404ask_operatorRe-run read-only discovery, then ask the operator if the confirmed target is gone or inaccessible. 409ask_operatorReport the target state and wait for the operator or administrator to resolve it. 413reviseReplace or reduce the image, regenerate the plan, and obtain a new confirmation. 422reviseReplace the unreachable or unsupported public image URL, regenerate the plan, and obtain a new confirmation. 502ask_operatorfor writesDo not retry the write automatically; inspect state and ask the operator to check Tencent COS. 429,503,504retryfor reads onlyWait and retry the same read-only command without changing the target. Writes require ask_operator.
Do not work around 403 or 409 by selecting a different project. Report the exact target and ask the operator or administrator to resolve access/state.