sourceMedia:
GET /enums/source-types lists them. Leave sourceMedia out and the project reads its input
folder: the stored config then says "sourceMedia": {"@type": "S3FolderSource"}. Choose between
the folder and a feed when you create the project and keep it; moving an existing project from one
to the other is not supported. A feed project may switch between the two kinds of feed.
Until build
0.9.0-alpha1-2026-10-05T14-57Z-bf4a93 this was a project field of its own,
input ({"type": "folder"}). It is gone: a project resource no longer has it, and a call that
sends it is refused with 422 and
The input field is not supported: where the media comes from is config.sourceMedia. under
errors.input. See the Changelog.The input folder
storage.inputPath, an S3 folder. Put files there through the API
or with the AWS CLI and the upload role; every file is processed once, and
Files describes what happens to it. The upload pages describe this source.
S3FolderSource takes no other fields. Its location is the project’s own, so a path sent with it
is refused.
Feeds
outputs says: the output folder, a
re-published feed per language, or both.
Two kinds of feed are read, and the kind says which element of an item holds its media:
Each kind reads only its own element. A feed whose items carry
<enclosure>s read as an
MrssSource has nothing to process, and the other way round; the check says so
for every item.
string
required
The feed.
https:// only, at most 2048 characters, without a user name or password in it, on a
host that resolves to a public address — the same checks as a webhook URL.
It is checked when you save the project:A new URL (or the same URL under the other kind of source) is then fetched and read the way the
project reads it (what it needs), and refused when the project could never process
anything from it:
A feed with no items yet is accepted. Saving a project without changing its URL or its kind does
not fetch the feed again.
The feed
An RSS 2.0 document with one<item> per clip. For an RssSource, the item’s media is its
<enclosure>:
MrssSource, it is the item’s <media:content>:
The feed and every media file are fetched from SyncWords’ processing platform, so they must be
reachable from the internet without signing in.
An item is skipped, at every read, when the project cannot download its media:
- it has no
<enclosure>(anRssSource) or no<media:content>(anMrssSource), or that element has nourl—<media:thumbnail>and<link>to a player page are not media; - the media URL’s file name has no extension (
…/clip.mp4, not…/clip?id=7).
Checking a feed
GET /projects/{id}/source-feed reads the project’s feed the way the project does, at any time,
and says how many items it has, how many the project downloads, and why each skipped one is
skipped. POST /source-feeds/check with {"url": "…", "sourceType": "RssSource"} gives the same
answer before there is a project (sourceType is MrssSource when left out):
no <media:content>; its media is an <enclosure>, which an RSS source reads.
The files it makes
Each item’s media becomes one input file, named from a hash of the item’sguid and a hash of its
media URL, with the media’s extension: 4f1c2b9a7d3e.8a2b4c6d.mp4. From there it is an input file
like any other: GET /projects/{id}/files lists it with its state and outputs,
a webhook reports it done or failed, it is billed when done,
and it can be retried. Output names come from that name, so a
nameTemplate of ${name}.${ext} writes 4f1c2b9a7d3e.8a2b4c6d.mp4.
- An item the feed keeps listing is processed once.
- An item whose media URL changes gets a new name, since the second hash changes, and is processed again, as new content. New bytes at the same URL are not noticed.
- A feed that cannot be read (unreachable, or not a feed) is read again 30 seconds later; nothing fails.
409 and code: "project_reads_feed":
POST /projects/{id}/stop; start it again to resume reading the feed. See
Auto-stop.
The output feed
AnRssOutput (with an RssSource) or an MrssOutput (with an MrssSource) publishes your feed
again, in one language, with the dubbed files in place of the originals:
- Every item whose media is done links the dubbed file instead of the original: in its
<enclosure>(RssOutput), whoselengthbecomes the new file’s size, or its<media:content>(MrssOutput), whosefileSizedoes;typeandmediumfollow when the container changed. - Items not done yet are left out, and appear once they are.
<channel><language>is set tolanguage. The standard elements of the channel and of each item (title,link,description,guid, the media element) are written first, and everything else in the feed (dates, images,itunes:and other elements) follows as you wrote it.- The feed is written again after every file and every 30 seconds.
404 with code: "feed_not_found". Only the feed’s own files are served this
way; the project’s other outputs still need a token.
A feed output needs the source of its kind: an
RssOutput an RssSource, an MrssOutput an
MrssSource; in a folder project either is refused. The feed’s address and folders are the API’s,
so path, mediaPath and mediaUrl are refused if sent.
The output feed’s files are also ordinary outputs, under output/feeds/<language>/, beside the
feed itself at output/feeds/<language>.xml: they appear with those paths in each input’s
outputs and in GET /projects/{id}/outputs. A feed project can also list an S3FolderOutput to
write files into the output folder. See Outputs.