Claude Files API is GA: review Sume outputs by job id and media URL
The Claude Files API left beta on Aug 19. When Claude reviews generated media, store the Sume job id and media.sume.com URL, not raw provider links.

If a Claude review loop checks generated media, keep two things per output: the Sume job id and the media.sume.com artifact URL from the job result. The Claude API release notes list the Files API and Agent Skills as out of beta from Aug 19, and cache diagnostics (cache_miss_reason) as generally available from Sep 23.
Whichever way a file reaches the model, the durable record of a Sume generation is the job and its Sume-hosted result.
What each side guarantees
| Topic | Claude side | Sume side |
|---|---|---|
| Availability | Files API and Agent Skills out of beta Aug 19 | Completed jobs carry artifact objects with id, url, type and content_type |
| Diagnostics | cache_miss_reason GA Sep 23 | Job events give a public timeline for debugging |
| Where outputs live | Not covered here | Outputs are mirrored into Sume-owned media URLs; raw provider URLs are not public API outputs |
A result worth keeping
A completed job returns artifacts like this one. Store the id and the Sume URL, not any other address you might see in a log.
{
"id": "job_...",
"status": "completed",
"result": {
"artifacts": [
{
"id": "artf_...",
"url": "https://media.sume.com/artifacts/...",
"type": "image",
"content_type": "image/png"
}
]
}
}A review loop that does not double-bill
A generate, review, regenerate loop is where cost and confusion creep in, so keep the identifiers straight.
- Read
GET /v1/jobs/:id/resultonly after the job reportsresult_ready: true; before that it answers409 job_not_completed. - Give each regeneration its own
Idempotency-Key, and reuse a key only for an exact retry of the same payload. - Record which job id produced which artifact, so a rejected output can be traced.
- If a review fails, submit a new job; do not try to mutate the old one.
Keeping URLs out of logs
The MCP playbooks tell agents to prefer Sume public ids and media.sume.com URLs in reports, and not to paste signed URLs, OAuth tokens or API keys into chat logs. Safe logs hold request ids, job ids, status and sanitized media metadata.
That rule matters more once outputs travel between a generator and a reviewer, since each hop is another place a link can be copied.
Inputs are different from outputs
When you send media into Sume, input image and video URLs must be fetchable public HTTPS URLs. Localhost, private-network, non-HTTPS and signed or private URLs are rejected before generation is submitted. A file that exists only inside another provider's file store therefore needs a public URL before Sume can use it.
Sources
Related posts
More in Developers
- Cloudflare AI Search bills from Nov 1: split retrieval from renders
Cloudflare's October 1 changelog makes AI Search GA with usage billing from November 1, 2026. How to keep retrieval costs separate from Sume render costs.
- Codex 0.160 agent history 'Show more': recover Sume jobs by job list
Codex CLI 0.160.0 adds Show more pagination to agent command center history. If a thread scrolls away, Sume's GET /v1/jobs list still holds every job.
- Cursor Security Review bot on a Sume webhook handler: what to find
Cursor added a Security Review bot on Sep 23. A webhook handler for Sume should pass seven checks: raw body, timestamp window, rotation, empty secret and more.
- Cursor self-hosted machines can't take Sume webhooks on a private URL
Sume rejects localhost, private-network and non-HTTPS webhook URLs. An agent on a self-hosted machine should poll status_url or use a public HTTPS receiver.
Written by Sume