The API creates an IAM role for your account that can read and write your account’s folder in SyncWords’ storage, and only that. Your own AWS identity assumes it, with an external ID only you and SyncWords know. After a one-time setup you use plain aws s3 commands or any S3 SDK. The role reaches every project’s folders, but only a project that reads its input folder (the default S3FolderSource) processes what you copy into it. A project that reads a feed fills its own input folder from the feed; a file copied in beside them is never processed, and stays pending. Reading a feed project’s outputs with the role works as for any project.

One-time setup

1

Find your AWS principal

The identity that will upload: a role (recommended, for example the one your pipeline runs as), a user, or a whole AWS account by its 12-digit id.
2

Ask for the role

Calling it again with the same principal returns the same role. With another principal, the role is re-pointed to trust the new one instead; the external ID stays. GET /account/aws-access returns the current settings (404 before the first PUT).The role reaches every project of your account, so only your organization’s API key or one of its administrators may create, re-point or revoke it. Any other user gets 403 with code: "forbidden".
3

Allow your principal to assume it

Unless your principal is an administrator, give it permission to assume the role, in your AWS account:
4

Add an AWS CLI profile

In ~/.aws/config:
source_profile is the profile of the principal from step 1. On EC2, ECS or Lambda use credential_source = Ec2InstanceMetadata (or EcsContainer, Environment) instead. The CLI assumes the role and renews its one-hour session by itself.

Upload

Every project’s storage.inputPath is inside your s3Prefix:
A project that stopped itself after its last file starts again within a minute of a new file without that call, unless its startOnNewFiles is off. One stopped with POST …/stop, or created with autoStart: false and never started, waits for it. S3 shows an object only once its upload is complete, so the project never picks up a partial file.
Uploads through the role are not checked by the API: name inputs with media extensions and give them distinct base names (trailer.mov and trailer.mkv would write the same trailer.es.mp4).

Download

With an SDK

What the role can do

The prefix holds every project of your account, one folder each.

Revoke the role

If the principal should lose access, for example when the person or pipeline behind it leaves, revoke the role:
Nobody can assume the role from then on, and credentials already issued through it stop working. GET /account/aws-access answers 404 again. A later PUT restores the role for the principal you name, with a new external ID, so update your profile’s external_id.
A file’s processing records are kept by name. Replacing an input with the AWS CLI (same name, new content) does not reprocess it, and neither does deleting it and copying it in again: it reads pending with stale: true until you call retry on the name. An API upload with overwrite: true does this for you. To replace a failed file, use a new name (Replace).