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
- Claude batch scripts into a Sume bulk run: holiday video pipeline
Write 100 holiday product scripts with Anthropic Message Batches, then render each as a video with one Sume bulk run. Includes the JSONL-to-items conversion.
- Opus 5.5 inline tools: adding Sume tools mid-conversation
Claude Opus 5.5 inline tools add tool definitions mid-conversation without breaking the prompt cache. What that changes for Sume MCP, and what it does not.
- claude -p says Sume needs authentication after one refused write call
Claude Code 2.1.286 stopped headless runs flagging a server as unauthenticated after one refused call. Sume's scope refusal is a tool result, not a 401.
- claude -p killed by timeout or systemd: the Sume job keeps running
A supervisor that kills claude -p does not cancel the Sume job it started. List jobs, then wait or cancel before retrying, or you pay twice.
Written by Sume