Prerequisites
- An API key with
transfers:write. Addtransfers:readif the job checks download receipts afterwards. - The key stored as a secret in your CI, exposed to the job as
YUNGLE_API_KEY. The CLI reads it from the environment, so there is no login step. - Node 22 or newer on the runner, for the CLI (
yungle-cli).
Send from GitHub Actions
1
Store the API key
In your repository, open Settings → Secrets and variables → Actions and add a secret named
YUNGLE_API_KEY.2
Add the workflow
The The action adds a summary with the link to the run, and fails the job with Yungle’s error message if the send fails.
yungle-send-action runs yungle send for you and returns the link as an output. This workflow builds on every published release and emails the result to a client..github/workflows/deliver.yml
3
Check the result
Each run sends a new transfer. The action’s outputs:
Action inputs
Without the action
On another CI system, or to control the command yourself, run the CLI directly.--json prints one JSON object on stdout; progress goes to stderr, so the pipe stays clean.
yungle send --json returns:
{ "error": { "code": "…", "message": "…" } } and exits non-zero. The code values are the ones on Errors.
Send a nightly report from cron
1
Store the key in a file
Put the key in a file only the cron user can read, rather than in the crontab, which leaks through
ps and backups.2
Write the script
The script generates the report, sends it, and appends one line per send to a log.
/usr/local/bin/send-nightly-report
--expires is clamped to your plan’s maximum rather than rejected. The log answers “did Tuesday’s report go out?” with one grep, and holds the transfer id if you need to check downloads.3
Schedule it
Run it at six every morning:
crontab
When an upload is interrupted
Run the same command again with the same files. The CLI continues the existing transfer from the last committed part instead of starting a second one. In CI, a rerun of the job on a fresh runner has nothing to resume and sends a new transfer, which is usually what you want.Check that it was downloaded
Use the transfer id from the JSON output to read the download receipts, or subscribe to thetransfer.downloaded webhook instead of polling.
Limits that apply to pipelines
- Up to 10 recipients per transfer. Emailing them counts against a daily budget per workspace. Leave out
--toand nobody is emailed, so the send costs nothing from that budget. - API uploads are metered separately from your plan. See Limits.
Next steps
CLI
Every command and flag, including
push for collections and watch for export folders.Webhooks
Get told when the client downloads the build.
Send from Python
Send from a Python job with the
yungle SDK.Limits
Transfer sizes, recipients, email budgets and API metering.
