Motion

Motions: one Sequence run for the Contacts of your Team's Contact lists, from its sending Accounts, paced on a schedule. Create and edit drafts, preview, start, pause, resume, archive, add or remove Contacts; lint a Sequence and write a template offline; upload the audio of a voice note step (curviate motion voice-clip). Your Team's data: every role reads; writes need motion-send on each sending Account, and Motions need the Automate plan.

Before you start: an API key and a connected LinkedIn account, see the Quickstart.

Commands

CommandDescription
curviate motion listList your Team's Motions, most recently updated first (--sort activity: latest activity first, last_activity_at). Items carry no Sequence: read one with curviate motion get <motion_id>. A cursor belongs to its sort.
curviate motion getOne Motion with its current Sequence and lint warnings. With --version, that Sequence version instead, and how many Enrollments still run on it.
curviate motion createCreate a Motion from a Motion file, always as a draft: nothing runs until curviate motion start. The file is checked before anything is sent, its Sequence as curviate motion lint checks it. settings.priority (normal or prioritized) sets the Motion's share of each Account's daily allowance. Needs Automate.
curviate motion updateChange a Motion from a Motion file: objects (schedule, settings) merge by key, arrays and the Sequence replace whole, null clears. settings.priority (normal or prioritized) gives the Motion twice a normal Motion's share of each Account's daily allowance; settings.new_enrollments_per_account_per_day and settings.assign even are retired (accepted and ignored until 2027-01-28, with a notice). After start, a structural Sequence change makes a new version; running Enrollments keep theirs. With --if-revision the save is refused when someone saved the Sequence since. Needs Automate.
curviate motion startStart a draft: scheduled when its start time is ahead, else active. Freezes Sequence version 1. A Motion missing what it needs is refused with every gap listed. Needs Automate.
curviate motion pausePause an active or scheduled Motion: no Step runs until it is resumed. Waits keep their time.
curviate motion resumeResume a paused Motion. Runs the start checks again. Needs Automate.
curviate motion archiveArchive a Motion: its open Enrollments end (motion_archived) and it never runs again.
curviate motion deleteDelete a draft Motion with its Sequence versions. Any other status: archive it instead.
curviate motion previewWhat the Motion would do, in any status: every path through its Sequence, rendered messages for sampled or named Contacts, and the budget projection: per Account the pool that binds its pace, the expected actions a day, and warnings (hours_below_share, no_sending_account). A read: never reaches LinkedIn, spends nothing.
curviate motion addEnroll Contacts directly, on an Account of the Motion (--account) or one Curviate assigns. Every exclusion and filter applies; each Contact's outcome says what happened. Sent in requests of up to 1000 ids, in order. Needs Automate.
curviate motion removeTake Contacts out of the Motion: their open Enrollments end (removed). Sent in requests of up to 1000 ids, in order.
curviate motion lintCheck a Sequence offline with the rules the API applies: a Motion file (its sequence) or a bare Sequence document. One line per finding, <file>:<line>:<col> error|warning <code> <path>: <message>. <hint> -> <docs_url>; exit 2 on any error, 0 otherwise.
curviate motion initWrite a Motion file from a template (connect-and-converse, engage-then-connect, nurture-connections). Fill contact_list_ids and account_ids, then create it.
curviate motion voice-clip uploadUpload one audio file (MP3, WAV, M4A, WebM or Ogg) and print the clip: its id (vc_...) is the clip_id of a voice.send step. 1 to 120 seconds, up to 20 MiB, 100 uploads per Team per 24 hours. The file is converted once and the original is discarded. Nothing reaches LinkedIn. Needs Automate.
curviate motion voice-clip getOne Voice clip: duration, size, file name and upload time. No download link. Another Team's clip is RESOURCE_NOT_FOUND, like an unknown id.

Exit codes: the exit code table.