Import an automation

Copy an automation written in Resend's shape (name, steps with key, type and config, and connections).

POSThttps://app.usenotix.dev/api/v1/automations/import

Needs a full access key. Sending access keys cannot call this. Key permissions lists the extra rules some calls have.

Copy an automation written in Resend's shape (name, steps with key, type and config, and connections). It is saved disabled for you to check and start. What Notix has no match for is left out and named in notices: there is no Delete contact step, an automation never subscribes anyone again, and a wait longer than 30 days becomes 30 days. A send_email step names a Resend template Notix cannot read, so it arrives without a body: choose a template before you start it. A key limited to one domain cannot import.

Who can call it

A full access key created by a team admin, as on the dashboard. Every refusal is 403:

CodeWhy
SCOPE_DENIEDThe key is not a full access key (send-only, read-only or live AI).
FORBIDDENThe key was made by a team member without admin rights, or before Notix recorded who made each key. Create a new key as a team admin.
DOMAIN_PINNEDThe key is limited to one domain and an email step, or the sender, is on another.

A key limited to one domain sees only automations whose every email step sends from its domain; any other automation answers 404.

Body parameters

automationobjectrequired

The automation in Resend's shape: name, steps (key, type, config) and connections (from, to, type). Step types: trigger, send_email, delay, wait_for_event, condition, add_to_segment, contact_update, contact_delete.

automation.namestringrequired

At most 255 characters.

automation.statusstring

One of enabled, disabled.

automation.stepsobject[]required
automation.steps[].keystringrequired

At most 100 characters.

automation.steps[].typestringrequired

At most 40 characters.

automation.steps[].configmap of any

Default {}.

automation.connectionsobject[]

Default [].

automation.connections[].fromstringrequired

At most 100 characters.

automation.connections[].tostringrequired

At most 100 characters.

automation.connections[].typestring

At most 40 characters. Default "default".

contactBookIdstring

The contact list new people join when the app sends an address Notix has not seen.

Headers

Authorizationstringrequired

Bearer followed by your API key.

Errors

400

The definition is not valid, or a copied step or path could not be saved.

403

The key is not a full access key, or was made by a team member without admin rights. A key limited to one domain cannot import.

429

The team created 30 automations in the last minute.

Every error has the same shape. See all error codes.

curl -X POST "https://app.usenotix.dev/api/v1/automations/import" \
  -H "Authorization: Bearer $NOTIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "automation": {
    "name": "Acme",
    "steps": [
      {
        "key": null,
        "type": null
      }
    ]
  }
}'
Response201
{
  "automation": {
    "id": "cly1jrn8x0000abcd1234",
    "name": "Welcome series",
    "status": "ACTIVE",
    "triggerType": "CONTACT_ADDED",
    "contactBookId": "cly1book0000abcd1234",
    "segmentId": "cly1seg00000abcd1234",
    "exitWhenLeavesSegment": false,
    "triggerEvent": "payment.failed",
    "steps": [
      {
        "id": null,
        "type": null,
        "from": null,
        "subject": null
      }
    ],
    "connections": [
      {
        "from": null,
        "to": null
      }
    ],
    "copiedFromId": "cm1x8f3k20001qz7v5b9d2e4a",
    "stats": {
      "enrolled": 1,
      "active": 1,
      "completed": 1,
      "exited": 1,
      "failed": 1,
      "sentByStep": {
        "stp_abc123": 12
      }
    },
    "createdAt": "2026-10-01T09:00:00Z",
    "updatedAt": "2026-10-01T09:00:00Z"
  },
  "notices": [
    {
      "stepKey": "string",
      "text": "Thanks for your order."
    }
  ]
}
Open in ClaudeOpen in ChatGPT