SequenceSteps

Update a sequence step

Updates a sequence step's action, interval, name, note, email content, and/or AI email config. interval is in MINUTES. At least one field must be provided. Same interval-only scope as POST /sequenceSteps, see its description (AI LinkedIn fields are still out of scope here; aiEmail is supported on both endpoints).

action: "automatic_linkedin_message" is rejected (400) for the same reason as create. Changing action across channels (e.g. from call to manual_email) is rejected by SEP with 422. Delete the step and create a new one of the desired type instead.

Email content is written via emailSubject/emailBody and read back by passing step.template.id to GET /emailTemplate/{id}. Reply-action steps always have their template subject forced to "".

aiEmail configures AI email personalization. See its description on POST /sequenceSteps. It is supported only on manual email steps (manual_email/manual_email_reply). Unlike create, this is a single PATCH call (SEP's update endpoint accepts the AI fields directly), so there is no partial-failure case. If aiEmail is set without also changing action, the manual-only rule is checked against the step's current, already-persisted action and rejected with 422; when this PATCH does change action, it is rejected up front with 400.

Converting a live step to AI takes effect at once. It mints a new AI email template, repoints the step's incomplete tasks at it, and triggers retroactive AI generation for those tasks immediately, replacing any unedited existing drafts. Drafts a rep has already edited are left alone. Because this is restricted to manual email steps, the regenerated drafts still wait for a rep to send them. An unknown or non-email aiEmail.agent.id returns 422; agent IDs are not discoverable via this API yet, so obtain them from the Nooks UI.

This endpoint does not accept order. To reposition a step within its sequence, use POST /sequences/{id}/actions/reorderSteps instead.

OAuth callers with the user role can only update steps of sequences they own (403 INSUFFICIENT_PERMISSION otherwise); admin and manager roles can update any sequence's steps in the workspace.

patch/sequenceSteps/{id}

Request

  • Base URL: https://partner-api.nooks.in/v1
  • URL: https://partner-api.nooks.in/v1/sequenceSteps/{id}
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://oauth.nooks.in/oauth/authorize, token URL https://oauth.nooks.in/oauth/token, scopes: sequence-steps:write)

Path parameters

idstring uuid required

Unique identifier for the sequence step

Request body

Example request

{
  "data": {
    "action": "auto_email",
    "interval": 2880,
    "name": "Follow-up (2 days)",
    "note": "Wait two days instead",
    "emailSubject": "Following up on {{company}}",
    "emailBody": "<p>Hi {{firstName}}, following up...</p>",
    "aiEmail": {
      "agent": {
        "id": "cc0e8400-e29b-41d4-a716-446655440090"
      },
      "promptOverride": "Reference their recent Series B funding announcement and keep it under 80 words."
    }
  }
}

Response

Sequence step updated

idstring uuid required

Unique identifier for the sequence step

orderinteger required

Zero-based position of this step within the sequence

namestring nullable required

Optional display name for this step, or null if unnamed

intervalinteger nullable required

Number of minutes to wait before executing this step (null for the first step). POST/PATCH /sequenceSteps always require a non-null interval. null is a read-only state you cannot currently set through this API.

action'call' | 'manual_email' | 'auto_email' | 'manual_email_reply' | 'auto_email_reply' | 'basic_task' | 'linkedin_connection_request' | 'manual_linkedin_connection_request' | 'manual_linkedin_message' | 'automatic_linkedin_message' | 'manual_sms' | 'auto_sms' required

Type of action for this step:

  • call: Phone call task
  • manual_email: Manually composed email
  • auto_email: Automatically sent email
  • manual_email_reply: Manual email reply
  • auto_email_reply: Automatic email reply
  • basic_task: Generic manual task
  • linkedin_connection_request: LinkedIn connection request
  • manual_linkedin_connection_request: Manual LinkedIn connection request
  • manual_linkedin_message: Manual LinkedIn message
  • automatic_linkedin_message: Automatically sent LinkedIn message
  • manual_sms: Manual SMS message
  • auto_sms: Automatically sent SMS message
notestring nullable required

Optional note or instructions for this step

hasAbVariantsboolean required

Whether this step is running an A/B test (i.e. has multiple variants).

createdAtstring date-time required

When the step was created

updatedAtstring date-time required

When the step was last updated

Example response

{
  "id": "aa0e8400-e29b-41d4-a716-446655440030",
  "name": "Intro email",
  "interval": 4320,
  "action": "auto_email",
  "note": "Initial outreach email",
  "sequence": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "_href": "/v1/sequences/550e8400-e29b-41d4-a716-446655440000"
  },
  "template": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "_href": "/v1/sequences/550e8400-e29b-41d4-a716-446655440000"
  },
  "analytics": {
    "email": {
      "delivered": 412,
      "opened": 198,
      "clicked": 41,
      "replied": 23,
      "bounced": 7,
      "unsubscribed": 2
    },
    "calls": {
      "dialed": 380,
      "connected": 71,
      "meetings": 5
    },
    "linkedIn": {
      "connectionRequestsSent": 96,
      "connectionRequestsAccepted": 31,
      "messagesSent": 64,
      "repliesReceived": 12
    }
  },
  "createdAt": "2025-10-01T10:00:00.000Z",
  "updatedAt": "2025-10-01T10:00:00.000Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.