# Eine Automation bauen

> Sieh dir den Katalog an, lege eine Automation als Entwurf an, prüfe sie und schalte sie ein.

Stand: 2026-10-30. Quelle: https://docs.smartchat.marketing/de/guides/build-an-automation/

Du brauchst die Rechte `automations:read` und `automations:write`, um einen Entwurf zu lesen und vorzubereiten. **Das Einschalten einer Automation braucht `automations:run`** (ein Schlüssel mit der Stufe **Draft** kann das nicht). Dasselbe gilt für das Ändern des Auslösers, der Schritte oder der Regeln einer Automation, die schon läuft. Schritte, die eine Adresse aufrufen, brauchen `webhooks:write`; Schritte in verbundenen Apps brauchen `connections:run`.

## 1. Den Katalog lesen

Der Katalog listet die Auslöser, Aktionen und Regeln, die du nutzen kannst. Baue nur aus dem, was im Katalog steht.

**curl**

```bash
curl "https://api.smartchat.marketing/v1/automation-catalog" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://api.smartchat.marketing/v1/automation-catalog",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
)
response.raise_for_status()
print(response.json())
```

**TypeScript**

```typescript
const response = await fetch("https://api.smartchat.marketing/v1/automation-catalog", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
  },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

Response (200):


```json
{
  "object": "automation_catalog",
  "version": "2d26379cee484580",
  "triggers": [
    {
      "type": "signup",
      "group": "contact",
      "description": "Starts when a contact signs up.",
      "fields": [],
      "allowed_as_further_trigger": true
    }
  ]
}
```

## 2. Als Entwurf anlegen

Eine Automation ohne `status` ist ein **Entwurf**. Sie tut noch nichts.

**curl**

```bash
curl -X POST "https://api.smartchat.marketing/v1/automations" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Welcome after signup",
  "trigger": {
    "type": "signup"
  },
  "steps": [
    {
      "type": "send_message",
      "text": "Hello {{name}}, nice to have you with us."
    },
    {
      "type": "wait",
      "minutes": 1440
    },
    {
      "type": "add_tag",
      "tag": "welcomed"
    }
  ]
}'
```

**Python**

```python
import os
import uuid
import requests

response = requests.post(
    "https://api.smartchat.marketing/v1/automations",
    headers={
        "Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"],
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "name": "Welcome after signup",
        "trigger": {
            "type": "signup",
        },
        "steps": [
            {
                "type": "send_message",
                "text": "Hello {{name}}, nice to have you with us.",
            },
            {
                "type": "wait",
                "minutes": 1440,
            },
            {
                "type": "add_tag",
                "tag": "welcomed",
            },
        ],
    },
)
response.raise_for_status()
print(response.json())
```

**TypeScript**

```typescript
const response = await fetch("https://api.smartchat.marketing/v1/automations", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
    "Idempotency-Key": crypto.randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "name": "Welcome after signup",
    "trigger": {
      "type": "signup"
    },
    "steps": [
      {
        "type": "send_message",
        "text": "Hello {{name}}, nice to have you with us."
      },
      {
        "type": "wait",
        "minutes": 1440
      },
      {
        "type": "add_tag",
        "tag": "welcomed"
      }
    ]
  }),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

Response (201):


```json
{
  "object": "automation",
  "id": "aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
  "name": "Welcome after signup",
  "status": "draft",
  "draft": true,
  "trigger": {
    "type": "signup"
  },
  "steps": [
    {
      "type": "send_message",
      "id": "s_1",
      "text": "Hello {{name}}, nice to have you with us.",
      "template": {
        "id": null,
        "status": "draft"
      }
    },
    {
      "type": "wait",
      "id": "s_2",
      "minutes": 1440
    },
    {
      "type": "add_tag",
      "id": "s_3",
      "tag": "welcomed"
    }
  ],
  "rules": {
    "max_per_contact": null,
    "excluded_names": []
  },
  "has_inbound_webhook": false,
  "notices": [],
  "run_count": 0,
  "last_run_at": null,
  "created_at": "2026-10-30T09:41:07Z",
  "updated_at": "2026-10-30T09:41:07Z"
}
```

Verletzt die Automation eine Regel des Katalogs (zum Beispiel hat sie zu viele Schritte), lautet die Antwort [`automation_invalid`](https://docs.smartchat.marketing/de/errors/#automation_invalid) und listet jedes Problem in `errors`.

## 3. Einschalten

Dieser Schritt braucht das Recht `automations:run`. Ohne es lautet die Antwort 403 [`insufficient_scope`](https://docs.smartchat.marketing/de/errors/#insufficient_scope) und `required_scope` ist `automations:run`. Lege einen Schlüssel mit der Stufe **All** an oder hake das Recht an.

**curl**

```bash
curl -X PUT "https://api.smartchat.marketing/v1/automations/aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/status" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "active"
}'
```

**Python**

```python
import os
import requests

response = requests.put(
    "https://api.smartchat.marketing/v1/automations/aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/status",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
    json={
        "status": "active",
    },
)
response.raise_for_status()
print(response.json())
```

**TypeScript**

```typescript
const response = await fetch("https://api.smartchat.marketing/v1/automations/aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/status", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "status": "active"
  }),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

Response (200):


```json
{
  "object": "automation",
  "id": "aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
  "name": "Welcome after signup",
  "status": "active",
  "draft": false,
  "trigger": {
    "type": "signup"
  },
  "steps": [
    {
      "type": "send_message",
      "id": "s_1",
      "text": "Hello {{name}}, nice to have you with us.",
      "template": {
        "id": null,
        "status": "draft"
      }
    },
    {
      "type": "wait",
      "id": "s_2",
      "minutes": 1440
    },
    {
      "type": "add_tag",
      "id": "s_3",
      "tag": "welcomed"
    }
  ],
  "rules": {
    "max_per_contact": null,
    "excluded_names": []
  },
  "has_inbound_webhook": false,
  "notices": [],
  "run_count": 0,
  "last_run_at": null,
  "created_at": "2026-10-30T09:41:07Z",
  "updated_at": "2026-10-30T09:41:07Z"
}
```

Du darfst eine Automation einschalten, auch wenn eine Vorlage darin noch nicht genehmigt ist. Nachrichten, die die Vorlage brauchen, warten, bis sie genehmigt ist. Siehe [Entwürfe und Aktivierung](https://docs.smartchat.marketing/de/concepts/drafts-and-activation/).

## 4. Die Läufe beobachten

**curl**

```bash
curl "https://api.smartchat.marketing/v1/automations/aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/runs?limit=1" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get(
    "https://api.smartchat.marketing/v1/automations/aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/runs",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
    params={
        "limit": "1",
    },
)
response.raise_for_status()
print(response.json())
```

**TypeScript**

```typescript
const response = await fetch("https://api.smartchat.marketing/v1/automations/aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/runs?limit=1", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
  },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

Response (200):


```json
{
  "object": "list",
  "data": [
    {
      "object": "automation_run",
      "id": "run_1a2b3c4d5e6f40718293a4b5c6d7e8f9",
      "automation_id": "aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
      "status": "executed",
      "created_at": "2026-10-30T09:41:07Z"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "url": "/v1/automations/aut_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/runs"
}
```

