Pipeline settings from the CLI
Change the settings you name and keep the rest. The CLI routes each change to the pipeline or its attached widgets.
Read, preview and save
akedly pipelines get <id>
akedly pipelines update <id> --status active --dry-run
akedly pipelines update <id> --status active --yes
Use a Full access CLI Login with permission to read and update the affected resources. --dry-run previews without consent or writes; it can still read the current settings, method catalog, attached widgets and recommendations. The server checks availability and validation on the real save.
The generated pipelines update reference lists every flag, allowed value, setting tip and consent rule. Flags use feature names, such as --otp-language ar and --smart-routing on.
Where settings are saved
| Setting | V1.2 pipeline | V1 or V2 pipeline |
|---|---|---|
| Identity, status, environment, callbacks, delivery methods, routing, OTP language/template, destination countries | Pipeline | Pipeline |
| Rate limits and circuit-breaker on/off | Pipeline | Every attached widget, including inactive widgets |
| Recommended limits | Pipeline-wide limits, keeping phone/IP limits and breaker sensitivity | Widget recommendations for every attached widget |
| PoW starting difficulty | Pipeline: adaptive or 2–7 | Attached widgets: 3–6 |
| PoW on/off, trigger, maximum difficulty and breaker file | Unavailable | Every attached widget |
| Circuit-breaker sensitivity, Turnstile and pipeline passkey branding | Pipeline | Unavailable |
| Channel Choice mode | Unavailable | V2 only, with an attached widget |
The CLI uses the resulting API version if the command also changes it. V1/V2 changes that need a widget are refused when none is attached. To change just one widget, use widgets update.
When a command affects several resources, it reads their current revisions, saves the pipeline first, then saves widgets in creation-time/id order. This is a sequence of guarded saves, not one atomic save; see recovering an update.
Choose the setting
These groups cover the update flags. The linked reference carries their complete values, tips, defaults and restrictions.
| Group | Flags | Main rule |
|---|---|---|
| Identity and callbacks | --name, --description, --redirect-url, --webhook-url | Omitted fields stay unchanged; none clears a callback. --name and --description need no --yes. --redirect-url and --webhook-url need --yes, because they change where Akedly sends your users and your verification results: akedly pipelines update <id> --webhook-url https://example.com/webhooks/akedly --yes. |
| Lifecycle | --status, --environment, --api-version | Use active/inactive, live/test; only a V1.2-to-V2 version change is supported, with both callbacks supplied or already saved. |
| Delivery | --verification-methods, --method-order, --smart-routing, --byo-sms, --otp-language, --otp-template | Methods are channel words; a list replaces the complete list. Use --otp-template default to restore the built-in template. |
| Channel Choice | --channel-choice, --channel-choice-mode, --channel-choice-enforcement | Account eligibility and billing rules still apply. The mode needs a widget attached to V2. |
| Cluster Gate | --cluster-gate, --cluster-gate-position, --cluster-gate-escalation, --cluster-gate-home-countries | Availability is checked by the server. Home countries guide attack detection; they do not restrict destinations. |
| Destination countries | --destination-countries-mode, --destination-countries | only-selected and all-except-selected use the complete country list you supply. all alone clears it. |
| Rate limits | --rate-limits-file, --recommended-limits, --period | File shape depends on where the limits live. Explicit limits and recommendations cannot be combined. |
| Circuit breaker | --circuit-breaker, --circuit-breaker-sensitivity, --circuit-breaker-file | Sensitivity is V1.2-only; the file is widget-only. |
| Proof-of-work | --pow, --pow-trigger-percent, --pow-starting-difficulty, --pow-maximum-difficulty | V1.2 exposes only starting difficulty. Widgets require start no higher than maximum. |
| Passkeys and bans | --passkeys, --zero-verify-bans | These change verification behavior and require --yes. |
| Passkey branding | --passkey-company-name, --passkey-logo-url, --passkey-primary-color, --passkey-secondary-color, --passkey-theme | V1.2-only; use HTTPS logos, #RRGGBB colors and light/dark/system. none clears a name, logo or color override. |
| Turnstile | --turnstile, --turnstile-platform, --turnstile-site-key, --turnstile-secret-key-file, --turnstile-test-token, --turnstile-allowed-domains | V1.2-only. A new custom Web integration needs a private secret file and a fresh setup token. |
Callback, behavior, security, version, branding and template changes require --yes; this includes turning protection off, loosening a limit, or supplying the current value. --period selects a recommendation window and does not itself change a setting. Creation uses the smaller pipelines create flag set; configure the remaining settings after creation.
Lists replace; files merge
--verification-methods whatsapp,sms,emailreplaces every saved method. Each word appears once; email goes last. Use--method-order customto use your listed phone-channel order. Automatic order starts with WhatsApp by default and uses eligible listed fallbacks; Channel Choice and Smart Routing can alter the first send.--cluster-gate-home-countries EG,SAreplaces all declarations; omit it to preserve them or usenonealone to clear them. Learned countries remain separate.--destination-countries EG,SAreplaces the complete restriction list. Send the intended mode too; a changed list underallis refused.- A rate-limit JSON file changes only its named limits. Omitted sibling values remain saved. Files must be regular JSON object files, at most 64 KiB.
{
"perPipeline": { "perMinute": 30, "perHour": 150, "perDay": 3000 }
}
V1.2 files accept perPhoneNumber, perIpAddress and perPipeline, each with perMinute, perHour and perDay. Use whole numbers above zero. For V1/V2, use the widget file shape, even when running pipelines update.
Recovering an update
PIPELINE_CHANGED or WIDGET_CHANGED means another save won the race for that resource. Read the current settings and rerun the command so it plans from the new revision.
PARTIAL_UPDATE means some resources may already be saved. Inspect details.applied, details.notApplied and the underlying error, read the affected resources, then rerun the same update to finish the remaining work. An unconfirmed destination can have saved before the connection failed. Do not assume the whole command rolled back.
Revision-protected writes do not retry an uncertain network/server outcome automatically. The explicit CLI_RATE_LIMITED refusal can still be retried because it saved nothing. See settings errors for each refusal and its exit code.
Next: setup recipes, widget settings, or the complete pipeline reference.
