
# Automations-API

En automatisering er et workflow bestående af trin: en eller flere udløsere, der starter det, efterfulgt af handlinger, betingelser, forsinkelser, AI-trin og resten, forbundet i en graf. Det er den samme automatisering, som du ser og redigerer på siden [Automatiseringer](../automations/automations.md). Denne guide dækker læsning og opbygning af dem via API'et.

- **Base URL**: `https://api.dmchamp.com/v1`
- **Godkendelse**: din API-nøgle (se [Godkendelse](authentication.md))
- **Felter og brødtekster**: hvert parameter og svarfelt findes i [API-reference](reference.md#tag/automations)
- **Fejl**: se [Fejl & Sidetal](errors-and-pagination.md) og [Fejl](#errors) herunder

> **Bureauer:** alle slutpunkter på denne side accepterer `sub_account_id` som en forespørgselsparameter, så du kan læse og opbygge en klients automatiseringer med din bureau-nøgle. Et `sub_account_id`, der ikke er en af dine klientkonti, returnerer `404`. Se [API for bureauer](../agency/api-for-agencies.md).

---

## Hvordan det fungerer: kladde først

API'et er bygget således, at intet starter ved et uheld.

1. **Læs kataloget.** `GET /automations/steps` viser alle udløsere, handlinger og trintyper, du kan bruge, plus grammatikken til at skrive en graf (`graph_rules`).
2. **Opret en kladde.** `POST /automations` gemmer automatiseringen **slået fra**. Intet kører endnu.
3. **Tjek den.** Læs den tilbage, åbn den i editoren (svaret giver dig dens `open_path`), og sørg for, at personen, der ejer kontoen, har set, hvad den gør, og over for hvem.
4. **Slå den til.** `POST /automations/{automationId}/enable` er sit eget kald. Dette er trinnet, der får virkelige ting til at ske: beskeder sendes, poster ændres, værktøjer gives til en AI-agent.

Redigering ændrer aldrig, om en automatisering er slået til eller fra. Det betyder også, at en rettelse til en automatisering, der er **slået til**, træder i kraft med det samme på den aktive automatisering. For at ændre en kørende automatisering sikkert, skal du deaktivere den, redigere den, tjekke den og aktivere den igen.

Hver graf, du sender, gennemgår de samme tjek, som editoren anvender. En graf, den ikke kan åbne eller køre, afvises med en `400`, der præcist angiver, hvad der skal rettes.

### Adgang

- Kontoen skal have Automatiseringer. Uden det returnerer hvert kald på denne side `403`.
- Et teammedlems adgang følger deres **Automatiseringer**-område i [Teamstyring](../settings/team-management.md): læsning (liste, hent, trin, kørsler, mapper) kræver **Vis**, alt der ændrer noget kræver **Rediger**.
- På en klientkonto, hvis abonnement ikke inkluderer oprettelse og redigering af automatiseringer, returnerer skrivekald `403`, præcis som editoren gør i appen.

---

## Slutpunkter

| Opgave | Metode + sti | Explorer |
|---|---|---|
| List automatiseringer | `GET /automations` | [Åbn i API-reference](reference.md#tag/automations/GET/automations) |
| Hent en automatisering med dens graf | `GET /automations/{automationId}` | [Åbn i API-reference](reference.md#tag/automations/GET/automations/{automationId}) |
| Læs trin-kataloget | `GET /automations/steps` | [Åbn i API-reference](reference.md#tag/automations/GET/automations/steps) |
| Opret en automatisering (kladde) | `POST /automations` | [Åbn i API-reference](reference.md#tag/automations/POST/automations) |
| Opdater en automatisering | `PUT /automations/{automationId}` | [Åbn i API-reference](reference.md#tag/automations/PUT/automations/{automationId}) |
| Tænd for den | `POST /automations/{automationId}/enable` | [Åbn i API-reference](reference.md#tag/automations/POST/automations/{automationId}/enable) |
| Sluk for den | `POST /automations/{automationId}/disable` | [Åbn i API-reference](reference.md#tag/automations/POST/automations/{automationId}/disable) |
| Læs kørselshistorikken | `GET /automations/{automationId}/runs` | [Åbn i API-reference](reference.md#tag/automations/GET/automations/{automationId}/runs) |
| List mapper | `GET /automations/folders` | [Åbn i API-reference](reference.md#tag/automations/GET/automations/folders) |
| Opret en mappe | `POST /automations/folders` | [Åbn i API-reference](reference.md#tag/automations/POST/automations/folders) |
| Omdøb en mappe | `PUT /automations/folders/{folderId}` | [Åbn i API-reference](reference.md#tag/automations/PUT/automations/folders/{folderId}) |
| Slet en mappe | `DELETE /automations/folders/{folderId}` | [Åbn i API-reference](reference.md#tag/automations/DELETE/automations/folders/{folderId}) |
| Flyt en automatisering til en mappe | `PUT /automations/{automationId}/folder` | [Åbn i API-reference](reference.md#tag/automations/PUT/automations/{automationId}/folder) |

---

## Læsning af automatiseringer

`GET /automations` returnerer oversigter (ingen trin), senest ændrede først; `folder_id=none` lister dem, der ikke er i en mappe. `GET /automations/{automationId}` tilføjer den fulde `graph`: hvert trin (`nodes[]`) med dets `kind`, `label`, `alias`, `action`, `params` og `config`, samt forbindelserne (`edges[]`) med `from`, `to` og, efter en betingelse eller lignende, `branch`.

```bash
curl "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f?apiKey=YOUR_API_KEY"
```

**Godt at vide**

- **`alias` er måden, senere trin læser et trins output på**, som `${nodes.<alias>.<field>}`. Et trin uden et sådant refereres ved sit id.
- `params` beholdes til ældre læsere; `config` indeholder de samme værdier og mere (en betingelses regler, et AI-trins prompt, en forsinkelses varighed, en handlings slug og parametre).
- **Hemmeligheder er skjulte.** Værdier, der ligner legitimationsoplysninger (webhook-hemmeligheder, tokens, API-nøgler, adgangskoder, headerværdier), kommer tilbage som `"[redacted]"`. Send `"[redacted]"` tilbage uændret, så bevares den gemte værdi.
- **Lange tekster forkortes.** En enkelt tekst, der er længere end ca. 4.000 tegn, afkortes og slutter med en ellipse. Hvis du sender det trin tilbage, skal du først indsætte den fulde tekst igen.
- Hvis automatiseringstjenesten ikke kan nås, får du en `503`, aldrig en tom liste i stedet. En tom liste betyder altid, at der ikke er nogen automatiseringer.

### Trin-kataloget

`GET /automations/steps` returnerer alt, hvad en automatisering kan bygges af: de 8 `node_kinds`, hver trigger med dens indstillinger `fields` og `output_keys`, de indbyggede `actions` med deres parametre, `api_actions` (handlinger i denne API, som et handlingstrin kan kalde), `graph_rules`-grammatikken og `counts`. Dette er, hvad editoren **tilbyder**, ikke hvad kontoen har bygget: tjek det, før du konkluderer, at en trigger eller handling ikke findes.

- Uden `q` kommer de flere hundrede API-handlinger tilbage som etiketter grupperet efter område i `api_actions_by_tag`, og den flade liste er tom.
- Med `q` (et ord, hvor der ikke skelnes mellem store og små bogstaver), er `api_actions` den flade liste af matches, begrænset til 60 (`api_actions_truncated` angiver hvornår). Handlinger for tilsluttede tredjeparts-apps søges også og kommer tilbage i `app_actions`: søg efter appens navn, for eksempel `q=hubspot`. Hver angiver, om kontoen har den app `connected`, og `connected_apps` lister de tilsluttede. `app_actions_unavailable` er `true`, når app-handlingerne ikke kunne søges denne gang; de andre lister er stadig komplette.

---

## Oprettelse og redigering

### Opret en kladde

```bash
curl -X POST "https://api.dmchamp.com/v1/automations?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Price question auto-reply",
    "description": "Replies with the price list when someone asks about prices.",
    "graph": {
      "nodes": [
        { "id": "trigger_1", "type": "trigger", "label": "Incoming message",
          "data": { "trigger": { "kind": "incoming_message", "message_filter_contains": "price" } } },
        { "id": "send_prices", "type": "action", "label": "Send message",
          "data": { "action": { "provider": "native", "slug": "SEND_MESSAGE",
            "params": { "contact_id": "${trigger.contact.id}", "body": "Hi ${trigger.contact.first_name}, here is our price list: https://example.com/prices" } } } }
      ],
      "edges": [{ "source": "trigger_1", "target": "send_prices" }]
    }
  }'
```

```json
{ "success": true, "automation": { "id": "8d2c7f1e-…", "enabled": false, "…": "…" }, "draft": true, "open_path": "/automations/8d2c7f1e-…", "warnings": [] }
```

`draft: true` og `enabled: false` er normale, ikke en fejl: en ny automatisering er altid en kladde, indtil du aktiverer den. `warnings` lister, hvad editoren ikke kunne færdiggøre, som korte etiketter (for eksempel `agent_function:not_linked`).

**Skrivning af grafen.** `graph_rules` fra kataloget er den fulde grammatik. Kort sagt:

- Hver node har et `id` (unikt i grafen), en `type` (en af de 8 [trintyper](#step-kinds)), et valgfrit `label`, og dens indstillinger i `data` under en nøgle opkaldt efter dens type (`data.trigger`, `data.action`, `data.condition`, `data.delay`, `data.ai`, `data.loop`, `data.transform`, `data.respond`).
- En automatisering kræver mindst én trigger. Den aktuelle grammatik tillader op til 10, og automatiseringen starter, når en af dem aktiveres.
- Ethvert andet trin skal kunne nås fra en trigger, og ingen forbindelse må føre tilbage til et tidligere trin.
- Kanter, der forlader en betingelse, bærer `sourceHandle` `true` eller `false`; et loop `body` eller `done`; en Vent på svar-forsinkelse `replied` eller `timed_out`. Andre kanter har ingen.
- Handlings-slugs og parametre kommer fra kataloget. **Gæt aldrig et id** (en agent, et tag, en liste, et stadie): slå det op med API'en først, eller lad feltet stå som `""`, så personen kan vælge det i editoren.
- Positioner er valgfrie; trin uden en position placeres automatisk.
- Værdier fra tidligere trin skrives som `${trigger.<field>}` og `${nodes.<step>.<field>}`. Se [Brug af det, et tidligere trin returnerede](../automations/automations.md#using-what-an-earlier-step-returned) og [Udtryk](../automations/automations.md#expressions).
- Grafen accepteres i to stavemåder: editorens egen (ovenfor) og den, som en læsning svarer med (`kind`, `config`, `from`, `to`, `branch`). Så du kan læse en automatisering, ændre et trin og sende det tilbage.
- **En oprettelse er ikke sikker at gentage blindt.** Hvis en anmodning får timeout, skal du liste dine automatiseringer, før du sender den igen, ellers kan du ende med to kladder.

### Opdatering

`PUT /automations/{automationId}` ændrer `name`, `description` og/eller `graph` (mindst én, eller `400`). En `graph` erstatter **hele** grafen, så arbejd altid ud fra det, der er gemt: læs det, ændr hvad du har brug for, og send hele grafen tilbage.

```bash
curl -X PUT "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Price question auto-reply (EN)" }'
```

- **Behold hver etapes `alias` præcis som du modtog den.** Hvis du ændrer eller fjerner den, bliver enhver reference til den etape tom. Se [Navngivning af dine etaper](../automations/automations.md#naming-your-steps).
- **Lad `"[redacted]"` værdier være, som de er**, og **gendan forkortede tekster** (en tekst, der slutter med en ellipse, blev afkortet i læsningen).
- Om automatiseringen er tændt, ændres aldrig her. Hvis den er tændt, er din rettelse aktiv, så snart den er gemt. Mens den er tændt, afvises en ændring, der ville få den til at udløse sig selv: deaktiver den først.

### Aktiver og deaktiver

`POST /automations/{automationId}/enable` tænder for en automatisering, så den kører på sin trigger fra nu af. Kald den kun, når personen, der ejer kontoen, har set, hvad automatiseringen gør og for hvem, og har givet sit samtykke. Builderen nægter at tænde for en graf, den ikke kan køre (ingen trigger, et loop, en etape der udløser sig selv), med en `400`, der forklarer hvorfor.

```bash
curl -X POST "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/enable?apiKey=YOUR_API_KEY"
```

`POST /automations/{automationId}/disable` sætter den på pause: kørsler, der allerede er i gang, færdiggøres, ingen nye kørsler starter. Deaktivering er altid tilladt. Ingen af kaldene tager en body.

---

## Kørselshistorik

`GET /automations/{automationId}/runs` returnerer kørslerne for én automatisering, nyeste først (`limit` 1 til 50, standard 10): hvornår hver startede og sluttede, hvad der satte den i gang, om den lykkedes, og fejlen når den fejlede. Læsning af automatiseringen fortæller dig, hvad den **ville** gøre; kørselshistorikken fortæller dig, hvad den **gjorde**, og det er den eneste måde at skelne en automatisering, der aldrig har kørt, fra en, der kører og fejler hver gang.

```bash
curl "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/runs?apiKey=YOUR_API_KEY&limit=20"
```

- `mode` er `live` for en rigtig kørsel, eller `safe` for en **Sikker kørsel** fra editoren. En sikker kørsel sender intet, så det er ikke bevis for, at automatiseringen virker i reel brug.
- En tom `runs` liste er et svar, ikke et hul. Svaret indeholder derefter en `note`: enten er triggeren aldrig blevet aktiveret, eller også er automatiseringen slukket.

---

## Mapper

Mapper grupperer kun automatiseringer på listen. De ændrer aldrig, hvad en automatisering gør, eller om den er tændt. Se [Organisering af automatiseringer i mapper](../automations/automations.md#organizing-automations-in-folders).

```bash
curl -X PUT "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/folder?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "folder_id": "f1a2b3c4-5d6e-7f80-91a2-b3c4d5e6f708" }'
```

- Visning af mapper returnerer også `unfiled_count`, hvor mange automatiseringer der ikke er i nogen mappe.
- Et mappenavn er påkrævet, op til 100 tegn, og unikt på kontoen (`409`, `code: "folder_name_taken"`). Du kan også arkivere en automatisering ved at sende `folder_id`, når du opretter den.
- Omdøbning efterlader automatiseringerne, hvor de er.
- **Sletning af en mappe sletter kun mappen.** Dens automatiseringer flyttes til ingen mappe og fortsætter med at køre præcis som før; svaret fortæller, hvor mange der blev flyttet (`moved_to_no_folder`).
- Ved en flytning er `folder_id` påkrævet; send `null` for at tage automatiseringen ud af dens mappe.

---

## Katalog

### Trin-typer

| Type | Hvad det gør |
|---|---|
| `trigger` | Starter automatiseringen, når noget sker. |
| `action` | Kører ét trin: en indbygget handling, en API-handling, en handling fra en forbundet app, en HTTP-anmodning eller en e-mail. |
| `condition` | Opdeler flowet baseret på en regel i en `true` og en `false` gren. |
| `transform` | Kører et lille stykke kode for at omforme data mellem trin. |
| `ai` | Spørger AI'en med en prompt, du skriver. Den kan returnere tekst, separate felter eller vælge en af flere grene. |
| `delay` | Venter i et bestemt tidsrum eller venter på, at kontakten svarer (med en timeout). |
| `loop` | Gentager trinnene indeni for hvert element på en liste. |
| `respond` | Returnerer et svar til webhook-kaldet eller AI-agentens funktionskald, der startede kørslen. |

### Triggers

Dette er de 40 triggere, som kataloget viser i dag, grupperet som bygherren grupperer dem. Kolonnen **Indstillinger** indeholder triggerens egne indstillingsnøgler (`fields`), som indsnævrer, hvornår den udløses. Hver trigger tager også `respect_quiet_hours`, `run_hours`, `reentry` og `stop_on_response`; se [Automatiseringsindstillinger](../automations/automations.md#automation-settings).

**Beskeder**

| Trigger (`kind`) | Udløses når | Indstillinger |
|---|---|---|
| Indgående besked (`incoming_message`) | En kontakt sender en besked på en hvilken som helst kanal. | `campaign` (begrænser den til én AI-agent), `channel`, `message_filter_contains` (nøgleord), `message_filter_regex` (mønster) |
| Ubesvaret opkald (`missed_call`) | Nogen ringer til et af dine WhatsApp Web-numre eller dit eget SMS-nummer, og ingen tager den. | `to_number` |
| Besked leveret (`message_delivered`) | En besked, du har sendt, bekræftes leveret af kanalen. | `channel`, `agent` |
| Besked fejlede (`message_failed`) | En besked, du har sendt, kunne ikke leveres, med fejlen. | `channel`, `agent` |
| Besked sendt (`message_sent`) | Enhver besked forlader din konto: AI'ens, din egen, en udsendelse, en opfølgning. Filtrer den, ellers kører den på dem alle. | `channel`, `sent_by` |
| Opfølgning sendt (`follow_up_sent`) | En automatisk opfølgning sendes ud. | ingen |
| Opfølgning sprunget over (`follow_up_skipped`) | En opfølgning blev holdt tilbage, fordi dens afsendelsesbetingelse fejlede. | ingen |
| Opfølgninger afsluttet (`follow_up_exhausted`) | En kontakt modtog den sidste opfølgning i sekvensen, og intet mere er i kø. | ingen |
| Samtale lukket (`conversation_closed`) | En chat lukkes, med hvordan den sluttede og et resumé. | `channel`, `agent` |
| Udsendelse afsluttet (`broadcast_completed`) | En udsendelse er færdig med at sende, med hvor mange der blev sendt, og hvor mange der fejlede. | ingen |
| Lead-svar sorteret (`outreach_reply_labelled`) | Et svar fra et koldt e-mail-lead sorteres, for eksempel som Interesserede. | `label` |
| Skool-kommentar modtaget (`skool_comment_received`) | Et medlem kommenterer under et Skool-opslag, som en af dine kommentarregler overvåger. | ingen |

**Kontakter**

| Trigger (`kind`) | Udløses når | Indstillinger |
|---|---|---|
| Ny kontakt (`contact_created`) | En ny person kontakter dig for første gang på en hvilken som helst kanal, og også ved import, API'en og kontakter, du opretter manuelt. | ingen |
| Kontakt opdateret (`contact_updated`) | Et kontaktfelt ændres. | `field` |
| Kontakter du tilføjer her (`contact_added`) | Kun for kontakter, du selv placerer i denne automatisering fra siden Kontakter. Én kørsel pr. kontakt. | ingen |
| Tag tilføjet (`tag_applied`) | Et tag tilføjes til en kontakt af din AI-agent, en person, en automatisering eller en import. | `tag_name`, `channel`, `applied_by` |
| Tag fjernet (`tag_removed`) | Et tag fjernes fra en kontakt. | `tag_name`, `channel` |
| Skool-medlem tilmeldt (`skool_member_joined`) | Nogen tilmelder sig et Skool-fællesskab, du ejer eller driver, med deres profil, svar og fit-score. | `group_id`, `create_contact` |
| Skool-medlem kvalificeret (`skool_member_qualified`) | Et nyt Skool-medlems svar scorer på eller over din tærskelværdi. | `min_score` |

**Handler**

| Trigger (`kind`) | Udløses når | Indstillinger |
|---|---|---|
| Handel oprettet (`deal_created`) | En ny handel tilføjes til en af dine pipelines. | `pipeline_id`, `stage_id` |
| Handelsstadie ændret (`deal_stage_changed`) | En handel flyttes til et andet stadie, med angivelse af stadiet, den forlod, og det, den trådte ind i. | `pipeline_id`, `to_stage_id`, `from_stage_id` |
| Handel opdateret (`deal_updated`) | Et handelfelt ændres. | `field` |

**Aftaler**

| Trigger (`kind`) | Udløses når | Indstillinger |
|---|---|---|
| Aftale booket (`appointment_booked`) | En ny aftale bookes. | ingen |
| Aftale annulleret (`appointment_cancelled`) | En booket aftale annulleres. | ingen |
| Aftale flyttet (`appointment_rescheduled`) | En booket aftale flyttes til et andet tidspunkt, med det gamle tidspunkt ved siden af det nye. | `event_id` |
| Før en aftale (`appointment_upcoming`) | Et bestemt tidspunkt før hver bekræftet aftale, til påmindelser. Op til fem påmindelser pr. automatisering. | `offsets_minutes` |

**Opgaver**

| Trigger (`kind`) | Udløses når | Indstillinger |
|---|---|---|
| Opgave oprettet (`task_created`) | En opgave oprettes. | `task_type` |
| Opgave fuldført (`task_completed`) | En opgave flyttes til et fuldført stadie. | ingen |

**Konto**

| Trigger (`kind`) | Udløses når | Indstillinger |
|---|---|---|
| Lav kreditbalance (`low_credit_balance`) | Din kreditbalance falder under din advarselstærskel. | ingen |
| Kanal forbundet (`channel_connected`) | En af dine kanaler er færdig med at oprette forbindelse. | `channel` |
| Kanal afbrudt (`channel_disconnected`) | En af dine kanaler falder ud: logget ud, afbrudt eller afskåret. Et WhatsApp Web-nummer, der genopretter forbindelsen af sig selv, tæller kun, hvis det stadig er nede efter 30 minutter. | `channel` |

**Bureau**

| Trigger (`kind`) | Udløses når | Indstillinger |
|---|---|---|
| Underkonto oprettet (`sub_account_created`) | En ny klientkonto oprettes fra dit dashboard, API'en eller din tilmeldingsside. | ingen |
| Underkonto-aktivitet (`sub_account_event`) | Noget sker på en af dine klientkonti: kreditterne er ved at løbe tør, en kanal opretter forbindelse, en planændring. | `event`, `threshold` |
}
**Generelt og apps**

| Udløser (`kind`) | Aktiveres når | Indstillinger |
|---|---|---|
| Efter tidsplan (`schedule`) | På en cron-tidsplan. | `cron`, `timezone` |
| Webhook (`webhook`) | Et eksternt system kalder automatiseringens webhook-adresse. | `webhook_secret` |
| AI Agent-funktion (`agent_function`) | Din AI-agent kalder denne automatisering som en funktion under en samtale. | `function_name`, `function_description`, `parameters`, `agent_ids`, `campaign_ids` |
| Nyt feed-element (`rss`) | Et nyt element vises i et RSS- eller Atom-feed. | `feed_url` |
| E-mail modtaget (`email_received`) | En e-mail ankommer i din egen forbundne postkasse. | `from_contains`, `subject_contains` |
| App-hændelse (`app_event`) | Noget sker i en forbundet app: en salgsmuligheds-fase ændres, en betaling modtages, en formular indsendes. | `toolkit`, `trigger_slug`, `connected_account_id`, `config` |
| Manuel kørsel (`manual`) | Kun når den startes manuelt. | ingen |

En automatisering kan højst indeholde én udløser af hver type: `webhook`, `app_event`, `agent_function`, `rss`, `schedule`, `email_received`, `appointment_upcoming` og `contact_added`. En udløser, der aktiveres, når en post oprettes, kan ikke parres med den handling, der opretter den samme post, da automatiseringen ville aktivere sig selv.

For at se hvad hver udløser sender videre til efterfølgende trin (`output_keys`) og den fulde liste over handlinger med deres parametre, læs `GET /automations/steps`. [Automationsguiden](../automations/automations.md#triggers) forklarer hver udløser med bygherrens ord.

---

## Fejl

Enhver fejl har den sædvanlige form `{ "success": false, "error_code": <status>, "error": "..." }`. En afvist graf tilføjer `code` og `errors`: `errors` lister hvert problem, én rettelig sætning hver, og `error` er den første. Ret præcis det, der er angivet, og send hele grafen igen. `code` er en af `invalid_graph`, `automation_graph_has_a_cycle`, `self_triggering_automation`, `no_trigger` eller en anden kode fra builderen.

| Status | Hvornår |
|---|---|
| `400` | Grafen blev afvist, et påkrævet felt mangler (`name` eller `graph` ved oprettelse, `folder_id` ved flytning), en opdatering sendte intet at ændre, et id er ikke gyldigt, eller et mappenavn mangler, er tomt eller for langt (`code: "invalid_name"`). |
| `403` | Kontoen har ikke Automatiseringer; en klientkontos plan inkluderer ikke oprettelse og redigering af automatiseringer (kun skrivning); eller teammedlemmets **Automatiseringer**-adgang er for lav. |
| `404` | Ingen automatisering med det id på denne konto, ingen mappe med det id (`code: "folder_not_found"`), eller et `sub_account_id`, der ikke er en af dine klientkonti. |
| `409` | En mappe med det navn findes allerede (`code: "folder_name_taken"`). |
| `413` | Automatiseringen er større end den 1 MB, som builderen accepterer. Flyt stor kode eller data ud af dens etaper. |
| `422` | Builderen afviste anmodningen af en anden årsag. Tjek grafen mod `GET /automations/steps`; at sende den samme anmodning igen hjælper ikke. |
| `503` | Automatiseringsservicen kunne ikke nås. Prøv igen om et øjeblik. Ved oprettelse, list dine automatiseringer først, så du ikke laver et andet udkast. |

::: master-only
## Brug af disse slutpunkter via MCP

Hvert slutpunkt på denne side er også et værktøj til en AI-assistent, som du [forbinder via MCP](../integrations/connect-ai-clients.md), med de samme regler: en ny automatisering er et udkast, indtil den aktiveres, og en redigering af en kørende automatisering er live.

| Værktøj | Slutpunkt |
|---|---|
| `list_automations` | `GET /automations` |
| `get_automation` | `GET /automations/{automationId}` |
| `list_automation_steps` | `GET /automations/steps` |
| `create_automation` | `POST /automations` |
| `update_automation` | `PUT /automations/{automationId}` |
| `enable_automation` | `POST /automations/{automationId}/enable` |
| `disable_automation` | `POST /automations/{automationId}/disable` |
| `list_automation_runs` | `GET /automations/{automationId}/runs` |
| `list_automation_folders` | `GET /automations/folders` |
| `create_automation_folder` | `POST /automations/folders` |
| `rename_automation_folder` | `PUT /automations/folders/{folderId}` |
| `delete_automation_folder` | `DELETE /automations/folders/{folderId}` |
| `move_automation_to_folder` | `PUT /automations/{automationId}/folder` |
:::

---

## Næste skridt

- [Automatiseringer](../automations/automations.md): hvordan udløsere, trin, variabler og kørselshistorik fungerer i bygherren.
- [API for bureauer](../agency/api-for-agencies.md): byg automatiseringer på en klientkonto med `sub_account_id`.
- [API-reference](reference.md): den fulde interaktive slutpunkts-oversigt.
