Sume media import failed: source_not_found vs source_not_video
A Sume media import fails with source_not_found for private, deleted or region-locked posts and source_not_video for photos and carousels. Don't retry either.

A Sume media import job that fails with source_not_found is pointing at a post that is private, deleted or region-locked; one that fails with source_not_video points at a photo or carousel post with no video to import. Both are category: validation, retryable: false, next_action: fix_input, and both messages end by saying that importing the same URL again will fail the same way.
What does each failure say?
The public job mapper reads the worker's code from the job details and writes a fixed message. For source_not_found: The source post could not be found. It is private, deleted, or region-locked. Importing the same URL again will fail the same way. For source_not_video: The source post has no video to import. It is a photo or a carousel post. Importing the same URL again will fail the same way.
In the worker, a TikTok photo post and an Instagram photo or carousel post produce source_not_video, while a removed post produces source_not_found. The import never reached your balance's expensive path in either case, but the fixed estimate for an accepted import is $0.15, so check the job's final cost on the record rather than assuming.
Which URLs can I import at all?
POST /v1/media-imports takes public TikTok and Instagram video URLs. Other hosts, YouTube included, are refused at admission with unsupported_platform before any job exists, which is a different failure from the two above. The body accepts url, optional get_transcript and source_media_url, plus the usual communication options, and rejects unknown fields. An Idempotency-Key header is required.
The output is mirrored to a durable media.sume.com asset, and that mirrored URL is what Timeline and the other tools want afterwards.
| Where | Code | Cause | Do this |
|---|---|---|---|
| Admission | unsupported_platform | Host is not TikTok or Instagram | Use a supported URL |
| Job | source_not_found | Private, deleted or region-locked | Check in a logged-out browser; use another post |
| Job | source_not_video | Photo or carousel | Pick a video post |
| Job | other | See retryable and next_action | Follow the envelope |
How do I submit and then read the failure?
Submit with a fresh key per URL, then poll the job and branch on error.public_reason. The call below uses only documented fields.
curl -sS https://api.sume.com/v1/media-imports \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Idempotency-Key: import-$(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.tiktok.com/@creator/video/1234567890"}'
# then poll the returned status_url and read:
# .error.public_reason -> source_not_found | source_not_video
# .error.retryable -> false
# .error.next_action -> fix_inputWhat if the post is fine in my browser?
Open the link logged out, in a private window, from the region your caller runs in. A post that you can see while signed in can still be private to the importer. If it plays there, the platform may be throttling that fetch, and the job would then carry a retryable envelope rather than source_not_found. Trust the retryable flag over your guess.
Sources
Related posts
More in Media tools
- Timeline failed with source_not_found: read source_slot to find it
A failed Sume Timeline job names the dead input by slot, like video[3] or soundtrack, plus host and 404 or 410. Replace it with a media.sume.com asset URL.
- Which Sume media routes need a flag, and which are on prod?
Remix media, reference ingest and the trending-videos rebuild are flag-gated; video inspect, frames, trim, detach, filter and timeline are on dest and prod.
- Whistle word timestamps to burned captions with Sume's words field
Turn Whistle's on-device word timings into burned-in captions: map them to words with text, start and end, then call Sume video captions with no STT run.
- Open and close a clip with a white flash: the fade filter
Fade a clip in from white and out to white with two fade filters in Sume video filter. Out time comes from the clip duration; audio is untouched.
Written by Sume