Skip to content
Akedly

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

bash
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

SettingV1.2 pipelineV1 or V2 pipeline
Identity, status, environment, callbacks, delivery methods, routing, OTP language/template, destination countriesPipelinePipeline
Rate limits and circuit-breaker on/offPipelineEvery attached widget, including inactive widgets
Recommended limitsPipeline-wide limits, keeping phone/IP limits and breaker sensitivityWidget recommendations for every attached widget
PoW starting difficultyPipeline: adaptive or 2–7Attached widgets: 3–6
PoW on/off, trigger, maximum difficulty and breaker fileUnavailableEvery attached widget
Circuit-breaker sensitivity, Turnstile and pipeline passkey brandingPipelineUnavailable
Channel Choice modeUnavailableV2 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.

GroupFlagsMain rule
Identity and callbacks--name, --description, --redirect-url, --webhook-urlOmitted 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-versionUse 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-templateMethods 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-enforcementAccount 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-countriesAvailability is checked by the server. Home countries guide attack detection; they do not restrict destinations.
Destination countries--destination-countries-mode, --destination-countriesonly-selected and all-except-selected use the complete country list you supply. all alone clears it.
Rate limits--rate-limits-file, --recommended-limits, --periodFile shape depends on where the limits live. Explicit limits and recommendations cannot be combined.
Circuit breaker--circuit-breaker, --circuit-breaker-sensitivity, --circuit-breaker-fileSensitivity is V1.2-only; the file is widget-only.
Proof-of-work--pow, --pow-trigger-percent, --pow-starting-difficulty, --pow-maximum-difficultyV1.2 exposes only starting difficulty. Widgets require start no higher than maximum.
Passkeys and bans--passkeys, --zero-verify-bansThese change verification behavior and require --yes.
Passkey branding--passkey-company-name, --passkey-logo-url, --passkey-primary-color, --passkey-secondary-color, --passkey-themeV1.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-domainsV1.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,email replaces every saved method. Each word appears once; email goes last. Use --method-order custom to 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,SA replaces all declarations; omit it to preserve them or use none alone to clear them. Learned countries remain separate.
  • --destination-countries EG,SA replaces the complete restriction list. Send the intended mode too; a changed list under all is 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.

V1.2 rate-limits.json

{
  "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.