Skip to main content

Documentation Index

Fetch the complete documentation index at: https://jetemail.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

The CLI uses a small, deliberate set of exit codes so it composes cleanly in shell pipelines and CI.
CodeMeaning
0Success
1Error (network failure, HTTP non-2xx, validation, bad arguments)
Errors print the HTTP status and parsed response body to stderr. Stdout stays clean, so you can pipe successful runs into jq without filtering noise.

Examples

jetemail outbound domains list && echo "ok"
# ok

jetemail outbound domains delete bogus-uuid
# HTTP 404: { "error": "domain not found" }
# (exit 1)

if ! jetemail send --to ops@example.com --from alerts@example.com --subject "deploy ok" --text "deploy ok"; then
  echo "alert delivery failed" >&2
  exit 1
fi

CI: fail the build on errors

- name: Sync suppression list
  env:
    JETEMAIL_API_KEY: ${{ secrets.JETEMAIL_API_KEY }}
  run: |
    jetemail outbound suppression import @suppressions.csv
The step fails automatically if the upload returns a non-2xx; no extra check needed.

Distinguishing client vs. server errors

For one bit (0 / 1) the CLI returns, the body on stderr carries the detail. Parse it programmatically with 2> redirection if you need to branch on the HTTP status:
jetemail outbound domains check $UUID 2>/tmp/jetemail.err
if [ $? -ne 0 ]; then
  grep -q '"status":429' /tmp/jetemail.err && retry_with_backoff
fi