Rate limit
The limit is per account: every key and every user of your organization share one budget, and another customer’s traffic never uses it. A call SyncWords support makes on your account’s behalf counts against it too. Every answer of a counted call says where you stand:
The minute starts at the first request, not on the clock. Past the limit, a call answers
429
with code: "too_many_requests"; wait Retry-After seconds and repeat it. A polling loop that
calls once a minute per project, as in Monitoring, stays
far below the limit.
429 with Retry-After past it, and carries no rate-limit headers.
Failed authentication
A request whose token is expired or unknown answers401, and counts against that token: after
60 refusals of one token in a minute, requests carrying it are answered 429 (with Retry-After)
without looking it up again, until the minute is over. POST /token/create counts a refused key
pair the same way. Other credentials are unaffected, so one misconfigured client never locks out
the others, and successful requests never count. A client that gets 401 should fix its token,
or its key pair, not retry.
Creating a token is not counted against the 1000 requests a minute.
Request bodies
A body is JSON (Content-Type: application/json) or YAML (application/yaml,
application/x-yaml or text/yaml; a charset parameter is fine). Any other type answers 415
with code: "unsupported_media_type", so curl -d needs -H 'Content-Type: application/json'.
A body over 2 MB answers 413 with code: "payload_too_large"; completing an upload of the
full 10,000 parts sends about 700 KB.
Answers are JSON unless Accept prefers YAML, by its quality values: Accept: application/yaml
and application/yaml, */*;q=0.1 get YAML, */* gets JSON. The config endpoints and error
bodies follow it.
Browsers
Every origin may call the API. A browser can readRetry-After, X-RateLimit-Limit,
X-RateLimit-Remaining and Idempotency-Replayed, and caches a preflight for two hours.
Behaviour to design around
A project stopped by hand does not process uploads
A project stopped by hand does not process uploads
A project that stopped itself after its last file starts again when a file lands, unless its
startOnNewFiles is off. Files uploaded to a project stopped with POST …/stop, or created
with autoStart: false, wait (unless an API upload in parts completes). Call
POST /projects/{id}/start after every upload session; it does nothing to a running project.
Starting again on a new file.Changing the config does not reprocess finished files
Changing the config does not reprocess finished files
The new config applies to files processed from then on. Retry the files you want redone.
Deleting a project keeps its files
Deleting a project keeps its files
The input and output folders stay in storage after
DELETE /projects/{id}.Outputs are named from the input without its extension
Outputs are named from the input without its extension
a.mov and a.mkv write the same output. API uploads refuse the second; AWS CLI uploads do
not.A few files are processed at a time
A few files are processed at a time
The service works on several files at once and takes the next one as soon as one finishes. A
file interrupted by a stop is processed again from the start on the next run.
The build is pinned per project
The build is pinned per project
A project keeps its
buildVersion until you change it, so a new build never alters a running
integration. New projects get your account’s default.Unknown fields are refused
Unknown fields are refused
A misspelt option is a
422, not a silently ignored field.