DM Champ Docs

Automaatioiden API

Automaatio on työnkulku, joka koostuu vaiheista: yhdestä tai useammasta käynnistimestä, jotka aloittavat sen, sekä toiminnoista, ehdoista, viiveistä, tekoälyvaiheista ja muista osista, jotka on yhdistetty kaavioksi. Se on sama automaatio, jonka näet ja jota muokkaat Automaatiot-sivulla. Tämä opas kattaa niiden lukemisen ja rakentamisen API:n kautta.

Kaikki alla olevat esimerkit näyttävät ?apiKey=-kyselymuodon cURL-muodossa ja X-API-Key-otsikon JavaScriptissä ja Pythonissa. Kumpi tahansa toimii jokaisessa päätepisteessä.

Toimistot: jokainen tämän sivun päätepiste hyväksyy sub_account_id-kyselyparametrin, joten voit lukea ja rakentaa asiakkaan automaatioita toimistoavaimellasi. sub_account_id, joka ei ole jokin asiakastileistäsi, palauttaa 404. Katso API toimistoille.


Miten se toimii: ensin luonnos

API on rakennettu siten, ettei mikään käynnisty vahingossa.

  1. Lue luettelo. GET /automations/steps listaa jokaisen käynnistimen, toiminnon ja vaihetyypin, jota voit käyttää, sekä kieliopin kaavion kirjoittamiseen (graph_rules).
  2. Luo luonnos. POST /automations tallentaa automaation pois päältä. Mikään ei vielä käynnisty.
  3. Tarkista se. Lue se takaisin, avaa se rakennustyökalussa (vastaus antaa sinulle sen open_path-tunnisteen) ja varmista, että tilin omistaja on nähnyt, mitä se tekee ja kenelle.
  4. Kytke se päälle. POST /automations/{automationId}/enable on oma kutsunsa. Tämä on vaihe, joka saa todellisia asioita tapahtumaan: viestejä lähetetään, tietueita muutetaan, työkaluja annetaan tekoälyagentille.

Muokkaaminen ei koskaan muuta sitä, onko automaatio päällä vai pois päältä. Tämä tarkoittaa myös sitä, että päällä olevan automaation muokkaus astuu voimaan heti, suoraan käytössä olevaan automaatioon. Jos haluat muuttaa käynnissä olevaa automaatiota turvallisesti, poista se käytöstä, muokkaa sitä, tarkista se ja ota se uudelleen käyttöön.

Jokainen lähettämäsi kaavio käy läpi samat tarkistukset kuin rakennustyökalun pohja. Kaavio, jota se ei voi avata tai suorittaa, hylätään 400-vastauksella, joka listaa tarkalleen, mitä on korjattava.

Käyttöoikeudet

  • Tilillä on oltava Automaatiot-ominaisuus. Ilman sitä jokainen tämän sivun kutsu palauttaa 403.
  • Tiimin jäsenen käyttöoikeudet noudattavat heidän Automaatiot-aluettaan Tiimin hallinnassa: lukeminen (listaus, haku, vaiheet, suoritukset, kansiot) vaatii Näytä-oikeuden, ja kaikki, mikä muuttaa jotakin, vaatii Muokkaa-oikeuden.
  • Asiakastilillä, jonka sopimukseen ei kuulu automaatioiden luominen ja muokkaaminen, kirjoituskutsut palauttavat 403, aivan kuten sovelluksen rakennustyökalu.

Automaatio-objekti

Luettelo palauttaa yhteenvedon jokaisesta automaatiosta ilman sen vaiheita:

{
  "id": "8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f",
  "name": "Price question auto-reply",
  "description": "Replies with the price list when someone asks about prices.",
  "enabled": false,
  "updated_at": "2026-10-27T09:40:00.000Z",
  "trigger_kind": "incoming_message",
  "folder_id": "f1a2b3c4-5d6e-7f80-91a2-b3c4d5e6f708",
  "folder_name": "Sales"
}
Kenttä Merkitys
id Automaation tunniste.
name Mikä sen nimi on luettelossa.
description Yhdestä kolmeen lausetta siitä, mitä se tekee, tai null.
enabled Onko se kytketty päälle. Pois päältä oleva automaatio ei koskaan käynnisty.
updated_at Milloin sitä on viimeksi muutettu.
trigger_kind Mikä sen käynnistää, esimerkiksi incoming_message, schedule, webhook, agent_function tai manual. null kun kaaviossa ei ole vielä käynnistintä.
folder_id, folder_name Kansio, johon se on tallennettu, tai null, jos se ei ole kansiossa.

Yhden automaation lukeminen lisää created_at ja sen graph:

{
  "id": "8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f",
  "name": "Price question auto-reply",
  "description": "Replies with the price list when someone asks about prices.",
  "enabled": false,
  "created_at": "2026-10-27T09:12:00.000Z",
  "updated_at": "2026-10-27T09:40:00.000Z",
  "trigger_kind": "incoming_message",
  "folder_id": null,
  "folder_name": null,
  "graph": {
    "nodes": [
      {
        "id": "trigger_1",
        "kind": "trigger",
        "label": "Incoming message",
        "alias": "incoming_message",
        "action": "incoming_message",
        "params": { "message_filter_contains": "price" },
        "config": { "kind": "incoming_message", "message_filter_contains": "price" }
      },
      {
        "id": "send_prices",
        "kind": "action",
        "label": "Send message",
        "alias": "send_message",
        "action": "SEND_MESSAGE",
        "params": { "contact_id": "${trigger.contact.id}", "body": "Hi ${trigger.contact.first_name}, here is our price list: https://example.com/prices" },
        "config": { "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": [{ "from": "trigger_1", "to": "send_prices" }]
  }
}

Jokainen vaihe (nodes[]) sisältää:

Kenttä Merkitys
id Vaiheen tunniste, yksilöllinen kaavion sisällä.
kind Vaiheen tyyppi: trigger, action, condition, transform, ai, delay, loop tai respond. Katso Vaihetyypit.
label Rakennustyökalussa vaiheessa näkyvä nimi.
alias Vaiheen viitenimi. Myöhemmät vaiheet lukevat sen tulosteen muodossa ${nodes.<alias>.<field>}. null vaiheessa, jolla ei ole sellaista (siihen viitataan tällöin sen tunnisteella).
action Mitä vaihe tekee: suoritettava toiminto tai käynnistysvaiheessa käynnistimen tyyppi. null muissa vaiheissa.
params Toimintovaiheen toimintoparametrit tai käynnistysvaiheen asetukset. null kaikissa muissa tyypeissä. Säilytetty vanhempia lukijoita varten: config sisältää samat arvot ja enemmän.
config Vaiheen täydelliset asetukset sellaisina kuin rakennustyökalu ne tallentaa, kaikille vaihetyypeille: ehdon säännöt, tekoälyvaiheen kehote, viiveen kesto, toiminnon slug ja parametrit.

Jokaisella yhteydellä (edges[]) on from ja to (vaiheiden tunnisteet) sekä branch, kun se seuraa vaiheen tiettyä haaraa, esimerkiksi true tai false ehdon jälkeen.

Kaksi asiaa config-kohdassa muuttuu ulostulossa:

  • Salaisuudet on piilotettu. Arvot, jotka näyttävät tunnistetiedoilta (webhook-salaisuudet, tunnisteet, API-avaimet, salasanat, otsikkoarvot), palautuvat muodossa "[redacted]". Lähetä "[redacted]" takaisin muuttumattomana, niin tallennettu arvo säilyy.
  • Pitkät tekstit on lyhennetty. Yli 4 000 merkkiä pitkä teksti katkaistaan ja se päättyy ellipsiin. Jos lähetät kyseisen vaiheen takaisin, lisää ensin sen koko teksti takaisin.

Listaa automaatiot

GET /automations palauttaa tilin automaatiot tiivistelminä (ei vaiheita), uusimmasta muokatusta alkaen.

Kyselyparametrit (kaikki valinnaisia): folder_id (vain kyseisen kansion automaatiot, tunniste Listaa kansiot-kohdasta tai none niille, jotka eivät ole kansiossa), sub_account_id.

cURL

curl "https://api.dmchamp.com/v1/automations?apiKey=YOUR_API_KEY&folder_id=none"

JavaScript

const res = await fetch("https://api.dmchamp.com/v1/automations?folder_id=none", {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { automations } = await res.json();

Python

res = requests.get(
    "https://api.dmchamp.com/v1/automations",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"folder_id": "none"},
)
automations = res.json()["automations"]

Vastaus (200)

{ "success": true, "automations": [{ "id": "8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f", "name": "Price question auto-reply", "enabled": false, "...": "..." }] }

Jos automaatiopalveluun ei saada yhteyttä, saat 503-virheen, et koskaan tyhjää listaa sen sijaan. Tyhjä lista tarkoittaa aina, ettei automaatioita ole.


Hae automaatio

GET /automations/{automationId} palauttaa yhden automaation täydellisenä kaaviona: jokaisen vaiheen tyypin, selitteen, aliaksen, toiminnon, parametrit ja asetukset sekä niiden väliset yhteydet.

curl "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f?apiKey=YOUR_API_KEY"
const res = await fetch("https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f", {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { automation } = await res.json();
res = requests.get(
    "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
automation = res.json()["automation"]

Vastaus (200)

{ "success": true, "automation": { "id": "8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f", "name": "Price question auto-reply", "graph": { "nodes": ["..."], "edges": ["..."] } } }

Tunniste, jota ei löydy tältä tililtä, palauttaa 404.


Vaiheluettelo

GET /automations/steps palauttaa kaiken, mistä automaatio voidaan rakentaa:

  • node_kinds: 8 erilaista vaihetyyppiä, joista jokaisella on nimi ja kuvaus.
  • triggers: jokainen käynnistin, joka voi aloittaa automaation, sisältäen sen asetuskentät (fields) ja arvot, jotka se välittää seuraaville vaiheille (output_keys).
  • actions: sisäänrakennetut toiminnot, joita toimintavaihe voi suorittaa, kukin key-tunnisteellaan (tunnus, jota käytät kaaviossa) ja params-kuvauksellaan, merkittynä required-kohdassa, missä ne sijaitsevat.
  • api_actions: tämän rajapinnan toiminnot, joita toimintavaihe voi kutsua. Ilman q-parametria ne palautuvat alueittain ryhmiteltyinä tunnisteina kohdassa api_actions_by_tag, ja tasainen luettelo on tyhjä, koska niitä on useita satoja.
  • graph_rules: kaavion kirjoittamisen kielioppi: kunkin vaihetyypin sisältämä data, jokainen käynnistintyyppi asetuskenttineen, toimintojen tarjoajat, haarojen nimet ja mallisyntaksi. Lue tämä ennen kuin luot tai muokkaat sellaista.
  • counts: kunkin luettelon kokonaismäärät, riippumatta siitä, mitä etsit.

Tämä on se, mitä rakennustyökalu tarjoaa, ei se, mitä tili on rakentanut. Tarkista tämä ennen kuin päättelet, että käynnistin tai toiminto ei ole olemassa.

Kyselyparametrit (kaikki valinnaisia): q, sana, jolla etsitään jokaisesta luettelosta (ei kirjainkokoriippuvainen), ja sub_account_id.

Kun käytössä on q:

  • api_actions on tasainen luettelo osumista, enintään 60 kappaletta. api_actions_truncated on true, kun rajoitus on tullut voimaan. Ensimmäiset osumat sisältävät omat parametrinsa.
  • Myös kolmannen osapuolen sovellusten toiminnot etsitään ja ne palautuvat kohdassa app_actions. Hae sovelluksen nimellä, esimerkiksi q=hubspot. Jokainen niistä kertoo, onko tili yhdistänyt kyseisen sovelluksen (connected), ja connected_apps luettelee sovellukset, jotka tili on yhdistänyt.
  • app_actions_unavailable on true, kun sovellustoimintoja ei voitu tällä kertaa etsiä. Muut luettelot ovat edelleen täydellisiä.
curl "https://api.dmchamp.com/v1/automations/steps?apiKey=YOUR_API_KEY&q=tag"
const res = await fetch("https://api.dmchamp.com/v1/automations/steps?q=tag", {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { triggers, actions, graph_rules } = await res.json();
res = requests.get(
    "https://api.dmchamp.com/v1/automations/steps",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"q": "tag"},
)
catalogue = res.json()

Vastaus (200, lyhennetty)

{
  "success": true,
  "q": "tag",
  "node_kinds": [{ "kind": "trigger", "label": "Trigger", "description": "Starts the automation when an event happens." }],
  "triggers": [
    {
      "kind": "tag_applied",
      "label": "Tag applied",
      "group": "Contacts",
      "fields": ["tag_name", "channel", "applied_by"],
      "output_keys": ["contact.id", "contact.first_name", "..."]
    }
  ],
  "actions": [
    {
      "key": "SET_CONTACT_TAG",
      "label": "Set contact tag",
      "group": "Contacts",
      "provider": "native",
      "params": [{ "key": "contact_id", "required": true }, { "key": "tag", "required": true }]
    }
  ],
  "api_actions": ["..."],
  "app_actions": [],
  "graph_rules": "GRAPH: { nodes: [{ id, type, label?, data }], edges: [{ source, target, sourceHandle? }] } ...",
  "counts": { "node_kinds": 8, "triggers": 40, "actions": 44, "api_actions": 454 }
}

Alla olevat vaihetyyppien ja käynnistimien luettelot on otettu tästä päätepisteestä. Itse päätepiste on aina nykyinen luettelo.


Luo automaatio

POST /automations luo automaation nimen ja kaavion perusteella. Se tallennetaan pois päältä kytkettynä, luonnoksena.

Runko

Kenttä Pakollinen Merkitys
name Kyllä Mikä sen nimi on luettelossa. Lyhyt ja täsmällinen.
description Ei Yksi tai kolme lausetta siitä, mitä se tekee ja milloin se suoritetaan.
graph Kyllä { nodes, edges }, katso alta.
folder_id Ei Kansio, johon se tallennetaan, tunnus Luettelokansioista. Jos jätetään pois tai null, se ei mene mihinkään kansioon.

Kaavio. graph_rules vaiheluettelosta on täydellinen kielioppi. Lyhyesti:

  • Jokaisella solmulla on id (yksilöllinen kaaviossa, esimerkiksi trigger_1 tai send_reminder), type (yksi 8 vaihetyypistä), valinnainen label ja sen asetukset kohdassa data, tyypin mukaan nimetyn avaimen alla: data.trigger = { kind, ... }, data.action = { provider, slug, params }, data.condition = { ... }, data.delay = { seconds }, data.ai = { prompt }, data.loop = { over }, data.transform = { language, code }, data.respond = { status, body, content_type }.
  • Automaatio tarvitsee vähintään yhden käynnistimen. Elävä kielioppi sallii enintään 10, ja automaatio käynnistyy, kun mikä tahansa niistä laukeaa.
  • Jokaisen muun vaiheen on oltava saavutettavissa käynnistimestä, eikä mikään yhteys saa johtaa takaisin aiempaan vaiheeseen.
  • Jokaisella reunalla on source ja target. Ehdosta lähtevät reunat kantavat sourceHandle true tai false. Silmukasta lähtevät reunat kantavat body tai done. Vastausviiveen odotuksesta lähtevät reunat kantavat replied tai timed_out. Muilla reunoilla ei ole sourceHandle; kielioppi luettelee loput.
  • Toimintojen tunnisteet ja parametrit tulevat luettelosta. Älä koskaan arvaa tunnusta (agentti, tunniste, luettelo, vaihe): etsi se ensin rajapinnan kautta tai jätä kenttä ""-arvoksi, jotta käyttäjä voi valita sen rakennustyökalussa.
  • Sijainnit ovat valinnaisia. Vaiheet, joilla ei ole sijaintia, asetellaan automaattisesti.
  • Aiemmista vaiheista saadut arvot kirjoitetaan muodossa ${trigger.<field>} ja ${nodes.<step>.<field>}. Katso Aiemman vaiheen palauttaman arvon käyttäminen ja Lausekkeet automaatio-oppaasta.

Kaavio hyväksytään kahdessa muodossa: rakennustyökalun oma (solmut, joissa on type ja data, reunat, joissa on source ja target, kuten alla) ja se, johon Hae automaatio vastaa (solmut, joissa on kind, config, action, params; reunat, joissa on from, to, branch). Voit siis lukea automaation, muuttaa vaihetta ja lähettää sen takaisin.

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" }]
    }
  }'
const res = await fetch("https://api.dmchamp.com/v1/automations", {
  method: "POST",
  headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Price question auto-reply", graph: { nodes, edges } }),
});
const { automation, draft, open_path, warnings } = await res.json();
res = requests.post(
    "https://api.dmchamp.com/v1/automations",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"name": "Price question auto-reply", "graph": {"nodes": nodes, "edges": edges}},
)
draft = res.json()

Vastaus (201)

{
  "success": true,
  "automation": { "id": "8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f", "name": "Price question auto-reply", "enabled": false, "graph": { "...": "..." } },
  "draft": true,
  "open_path": "/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f",
  "warnings": []
}
  • automation on tallennettu automaatio samassa muodossa kuin Hae automaatio.
  • draft on true, kun se on kytketty pois päältä. Uusi automaatio on aina luonnos, kunnes otat sen käyttöön, joten enabled: false tässä on normaalia, ei virhe.
  • open_path on paikka, jossa se avautuu sovelluksen rakennustyökalussa.
  • warnings luettelee asiat, joita rakennustyökalu ei voinut viimeistellä, lyhyinä tunnisteina (esimerkiksi agent_function:not_linked). Se on tyhjä, kun kaikki on kunnossa.

Luontipyyntöä ei ole turvallista toistaa sokeasti. Jos pyyntö aikakatkaistaan, listaa automaatiosi ennen kuin lähetät sen uudelleen, tai saatat päätyä kahteen luonnokseen.


Päivitä automaatio

PUT /automations/{automationId} muuttaa nimen, kuvauksen ja/tai kaavion. Lähetä vain ne kentät, joita haluat muuttaa.

Runko: name, description, graph (kaikki valinnaisia, vähintään yksi vaaditaan).

graph korvaa koko kaavion, joten työskentele aina tallennetun version pohjalta:

  1. Lue automaatio käyttämällä GET /automations/{automationId}.
  2. Muuta tarvittavat kohdat kyseisessä kaaviossa.
  3. Lähetä koko kaavio takaisin, kaikki vaiheet mukaan lukien.

Kun lähetät sen takaisin:

  • Pidä jokaisen vaiheen alias täsmälleen sellaisena kuin sait sen. Myöhemmät vaiheet viittaavat vaiheeseen sen aliaksen (${nodes.<alias>.<field>}) perusteella. Jos muutat tai poistat sen, jokainen kyseiseen vaiheeseen viittaava kohta jää tyhjäksi. Katso Vaiheiden nimeäminen.
  • Jätä "[redacted]"-arvot ennalleen. Arvo, joka näkyy muodossa "[redacted]", säilyttää tallennetun arvonsa.
  • Palauta lyhennetyt tekstit. Teksti, joka palautui kolmeen pisteeseen päättyvänä, on lyhennetty lukuvaiheessa.

Automaation tilaa (päällä/pois) ei koskaan muuteta tässä. Jos se on päällä, muokkauksesi astuvat voimaan heti, kun ne on tallennettu. Kun automaatio on päällä, muutosta, joka saisi sen käynnistämään itsensä, ei sallita: poista se ensin käytöstä.

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)" }'
// Read, edit, send back the whole graph
const get = await fetch(`https://api.dmchamp.com/v1/automations/${id}`, { headers: { "X-API-Key": "YOUR_API_KEY" } });
const { automation } = await get.json();
const step = automation.graph.nodes.find((n) => n.id === "send_prices");
step.config.params.body = "Hi ${trigger.contact.first_name}, our new price list: https://example.com/prices";
await fetch(`https://api.dmchamp.com/v1/automations/${id}`, {
  method: "PUT",
  headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ graph: automation.graph }),
});
url = f"https://api.dmchamp.com/v1/automations/{automation_id}"
automation = requests.get(url, headers={"X-API-Key": "YOUR_API_KEY"}).json()["automation"]
# ...edit automation["graph"] here, keeping every alias...
requests.put(url, headers={"X-API-Key": "YOUR_API_KEY"}, json={"graph": automation["graph"]})

Vastaus (200): sama muoto kuin luonnissa (automation, draft, open_path, warnings). Jos et lähetä mitään näistä: name, description tai graph, palautetaan 400.


Ota käyttöön ja poista käytöstä

POST /automations/{automationId}/enable kytkee automaation päälle, jolloin se suoritetaan käynnistimestään tästä eteenpäin. Kutsu tätä vasta, kun tilin omistaja on nähnyt, mitä automaatio tekee ja kenelle, ja on suostunut sen kytkemiseen päälle. Rakennustyökalu kieltäytyy kytkemästä päälle graafia, jota se ei voi suorittaa (ei käynnistintä, silmukka, itseään käynnistävä vaihe), ja palauttaa 400-virheen, joka kertoo syyn.

POST /automations/{automationId}/disable kytkee sen pois päältä (keskeyttää sen). Jo käynnissä olevat suoritukset valmistuvat; uusia suorituksia ei aloiteta. Poistaminen käytöstä on aina sallittua.

Kumpikaan kutsu ei vaadi runkoa.

curl -X POST "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/enable?apiKey=YOUR_API_KEY"
await fetch("https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/disable", {
  method: "POST",
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
requests.post(
    "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/enable",
    headers={"X-API-Key": "YOUR_API_KEY"},
)

Vastaus (200): automaatio sellaisena kuin se on nyt tallennettu, samassa muodossa kuin luonnissa, ja draft: false-kentällä käyttöönoton jälkeen.


Suoritushistoria

GET /automations/{automationId}/runs palauttaa yhden automaation suoritukset uusimmasta alkaen: milloin kukin suoritus alkoi ja päättyi, mikä sen käynnisti, onnistuiko se ja mikä virhe tapahtui, jos se epäonnistui. Automaation lukeminen kertoo, mitä se tekisi. Suoritushistoria kertoo, mitä se teki, ja se on ainoa tapa erottaa automaatio, joka ei ole koskaan käynnistynyt, sellaisesta, joka käynnistyy ja epäonnistuu joka kerta.

Kyselyparametrit (kaikki valinnaisia): limit (1–50, oletus 10), sub_account_id.

curl "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/runs?apiKey=YOUR_API_KEY&limit=20"
const res = await fetch("https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/runs?limit=20", {
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { runs, note } = await res.json();
res = requests.get(
    "https://api.dmchamp.com/v1/automations/8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f/runs",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"limit": 20},
)
runs = res.json()["runs"]

Vastaus (200)

{
  "success": true,
  "automation": { "id": "8d2c7f1e-2a3b-4c5d-9e8f-0a1b2c3d4e5f", "name": "Price question auto-reply", "enabled": true, "trigger_kind": "incoming_message" },
  "runs": [
    {
      "id": "run_7f3a",
      "status": "failed",
      "trigger_source": "incoming_message",
      "started_at": "2026-10-27T10:02:11.000Z",
      "finished_at": "2026-10-27T10:02:12.000Z",
      "error": "Contact is on Do Not Disturb list",
      "cancel_reason": null,
      "mode": "live"
    }
  ]
}
  • mode on live todelliselle suoritukselle tai safe turvalliselle suoritukselle (Safe run) editorista. Turvallinen suoritus ei lähetä mitään, joten se ei ole todiste siitä, että automaatio toimii todellisessa käytössä.
  • Tyhjä runs-luettelo on vastaus, ei puute. Vastaus sisältää tällöin note: joko käynnistin ei ole koskaan lauennut tai automaatio on kytketty pois päältä, joten mitään ei ole suoritettu.

Kansiot

Kansiot vain ryhmittelevät automaatioita luettelossa. Ne eivät koskaan muuta automaation toimintaa tai sitä, onko se päällä. Katso Automaatioiden järjestäminen kansioihin.

Listaa kansiot

GET /automations/folders palauttaa kansiot, joista jokainen sisältää tiedon siitä, kuinka monta automaatiota se sisältää, sekä unfiled_count: kuinka monta automaatiota ei ole missään kansiossa.

curl "https://api.dmchamp.com/v1/automations/folders?apiKey=YOUR_API_KEY"
{
  "success": true,
  "folders": [{ "id": "f1a2b3c4-5d6e-7f80-91a2-b3c4d5e6f708", "name": "Sales", "automation_count": 3 }],
  "unfiled_count": 5
}

Luo kansio

POST /automations/folders ja { "name": "Appointment reminders" }. Nimi on pakollinen, enintään 100 merkkiä pitkä, ja sen on oltava yksilöllinen tilillä. Lisää automaatioita kansioon kohdassa Siirrä automaatio tai välitä folder_id, kun luot uuden.

curl -X POST "https://api.dmchamp.com/v1/automations/folders?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Appointment reminders" }'

Vastaus (201): { "success": true, "folder": { "id": "...", "name": "Appointment reminders", "automation_count": 0 } }. Jos nimi on jo toisella kansiolla, palautetaan 409 ja code: "folder_name_taken".

Nimeä kansio uudelleen

PUT /automations/folders/{folderId} ja { "name": "..." }. Kansiossa olevat automaatiot pysyvät paikoillaan.

Vastaus (200): { "success": true, "folder": { ... } }.

Poista kansio

DELETE /automations/folders/{folderId} poistaa vain kansion. Sen sisältämiä automaatioita ei poisteta: ne siirtyvät pois kansiosta ja jatkavat toimintaansa täsmälleen kuten ennenkin.

curl -X DELETE "https://api.dmchamp.com/v1/automations/folders/f1a2b3c4-5d6e-7f80-91a2-b3c4d5e6f708?apiKey=YOUR_API_KEY"
{ "success": true, "deleted": true, "moved_to_no_folder": 3, "message": "Folder deleted. 3 automations were moved to No folder; no automation was deleted." }

Siirrä automaatio kansioon

PUT /automations/{automationId}/folder kohteella { "folder_id": "<folder id>" } tai { "folder_id": null } poistaaksesi sen kansiosta. folder_id on pakollinen. Vain automaation listauspaikka muuttuu.

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" }'

Vastaus (200): { "success": true, "automation_id": "...", "folder_id": "..." }.


Luettelo

Vaihetyypit

Tyyppi Mitä se tekee
trigger Käynnistää automaation, kun jotain tapahtuu.
action Suorittaa yhden vaiheen: sisäänrakennetun toiminnon, API-toiminnon, yhdistetyn sovelluksen toiminnon, HTTP-pyynnön tai sähköpostin.
condition Jakaa kulun säännön perusteella true- ja false-haaroihin.
transform Suorittaa lyhyen koodinpätkän datan muokkaamiseksi vaiheiden välillä.
ai Kysyy tekoälyltä kirjoittamallasi kehotteella. Se voi palauttaa tekstiä, erillisiä kenttiä tai valita yhden useista haaroista.
delay Odottaa tietyn ajan tai odottaa kontaktin vastausta (aikakatkaisulla).
loop Toistaa sisällään olevat vaiheet jokaiselle listan kohteelle.
respond Palauttaa vastauksen webhook-kutsulle tai tekoälyagentin funktiokutsulle, joka käynnisti suorituksen.

Käynnistimet

Nämä ovat 40 käynnistintä, jotka luettelo tällä hetkellä sisältää, ryhmiteltynä samalla tavalla kuin rakentajassa. Asetukset-sarake sisältää käynnistimen omat asetusavaimet (fields), jotka rajaavat sen laukeamista. Jokainen käynnistin ottaa myös parametrit respect_quiet_hours, run_hours, reentry ja stop_on_response; katso Automaatioasetukset.

Viestintä

Käynnistin (kind) Laukeaa kun Asetukset
Saapuva viesti (incoming_message) Kontakti lähettää viestin millä tahansa kanavalla. campaign (rajoittaa yhteen tekoälyagenttiin), channel, message_filter_contains (avainsana), message_filter_regex (malli)
Vastaamaton puhelu (missed_call) Joku soittaa johonkin WhatsApp Web -numeroistasi tai omaan tekstiviestinumeroosi, eikä kukaan vastaa. to_number
Viesti toimitettu (message_delivered) Kanava vahvistaa lähettämäsi viestin toimitetuksi. channel, agent
Viestin lähetys epäonnistui (message_failed) Lähettämäsi viesti ei tullut perille, sisältää virheen. channel, agent
Viesti lähetetty (message_sent) Mikä tahansa viesti lähtee tililtäsi: tekoälyn, sinun, joukkolähetyksen tai jatkotoimenpiteen kautta. Suodata se, tai se suoritetaan kaikille. channel, sent_by
Jatkotoimenpide lähetetty (follow_up_sent) Automaattinen jatkotoimenpide lähtee. ei mitään
Jatkotoimenpide ohitettu (follow_up_skipped) Jatkotoimenpide pidätettiin, koska sen lähetysehto ei täyttynyt. ei mitään
Jatkotoimenpiteet valmiit (follow_up_exhausted) Kontakti sai sarjan viimeisen jatkotoimenpiteen eikä mitään muuta ole jonossa. ei mitään
Keskustelu suljettu (conversation_closed) Keskustelu suljetaan, sisältäen tiedon päättymistavasta ja yhteenvedon. channel, agent
Joukkolähetys valmis (broadcast_completed) Joukkolähetys on valmistunut, sisältäen tiedon lähetettyjen ja epäonnistuneiden määrästä. ei mitään
Liidin vastaus lajiteltu (outreach_reply_labelled) Kylmän sähköpostiliidin vastaus on lajiteltu, esimerkiksi tilaan Kiinnostunut. label
Skool-kommentti vastaanotettu (skool_comment_received) Jäsen kommentoi Skool-julkaisua, jota jokin kommenttisäännöistäsi seuraa. ei mitään

Yhteystiedot

Käynnistin (kind) Laukeaa kun Asetukset
Uusi kontakti (contact_created) Uusi henkilö ottaa yhteyttä ensimmäistä kertaa millä tahansa kanavalla, sekä tuontien, API:n ja käsin lisäämiesi kontaktien kohdalla. ei mitään
Kontakti päivitetty (contact_updated) Kontaktikenttä muuttuu. field
Lisäämäsi kontaktit (contact_added) Vain kontakteille, jotka lisäät tähän automaatioon itse Kontaktit-sivulta. Yksi suoritus per kontakti. ei mitään
Tunniste lisätty (tag_applied) Tunniste lisätään kontaktiin tekoälyagenttisi, henkilön, automaation tai tuonnin toimesta. tag_name, channel, applied_by
Tunniste poistettu (tag_removed) Tunniste poistetaan kontaktilta. tag_name, channel
Skool-jäsen liittyi (skool_member_joined) Joku liittyy omistamaasi tai hallinnoimaasi Skool-yhteisöön, sisältäen profiilin, vastaukset ja sopivuuspisteet. group_id, create_contact
Skool-jäsen hyväksytty (skool_member_qualified) Uuden Skool-jäsenen vastausten pisteet ylittävät kynnysarvosi. min_score

Kaupat

Käynnistin (kind) Laukeaa kun Asetukset
Kauppa luotu (deal_created) Uusi kauppa lisätään johonkin putkistostasi. pipeline_id, stage_id
Kaupan vaihe muuttui (deal_stage_changed) Kauppa siirtyy eri vaiheeseen, nimeten vaiheen josta se lähti ja johon se saapui. pipeline_id, to_stage_id, from_stage_id
Kauppa päivitetty (deal_updated) Kaupan kenttä muuttuu. field

Tapaamiset

Käynnistin (kind) Laukeaa kun Asetukset
Tapaaminen varattu (appointment_booked) Uusi tapaaminen on varattu. ei mitään
Tapaaminen peruttu (appointment_cancelled) Varattu tapaaminen on peruttu. ei mitään
Tapaaminen siirretty (appointment_rescheduled) Varattu tapaaminen siirtyy toiseen ajankohtaan, näyttäen vanhan ja uuden ajan. event_id
Ennen tapaamista (appointment_upcoming) Asetettu aika ennen jokaista vahvistettua tapaamista, muistutuksia varten. Jopa viisi muistutusta per automaatio. offsets_minutes

Tehtävät

Käynnistin (kind) Laukeaa kun Asetukset
Tehtävä luotu (task_created) Tehtävä on luotu. task_type
Tehtävä suoritettu (task_completed) Tehtävä on siirretty suoritettu-vaiheeseen. ei mitään

Tili

Käynnistin (kind) Laukeaa kun Asetukset
Alhainen saldo (low_credit_balance) Saldosi laskee hälytyskynnyksen alapuolelle. ei mitään
Kanava yhdistetty (channel_connected) Yhden kanavasi yhdistäminen valmistuu. channel
Kanava katkaistu (channel_disconnected) Yksi kanavistasi katkeaa: uloskirjautuminen, linkityksen poisto tai yhteyskatkos. WhatsApp Web -numero, joka yhdistyy uudelleen itsestään, lasketaan vain, jos se on edelleen alhaalla 30 minuutin kuluttua. channel

Toimisto

Käynnistin (kind) Laukeaa kun Asetukset
Alitili luotu (sub_account_created) Uusi asiakastili luodaan hallintapaneelista, API:n kautta tai rekisteröitymissivultasi. ei mitään
Alitilin toiminta (sub_account_event) Jotain tapahtuu yhdellä asiakastileistäsi: saldo vähissä, kanavan yhdistyminen, suunnitelman muutos. event, threshold

Yleiset ja sovellukset

Käynnistin (kind) Aktivoituu kun Asetukset
Aikataulun mukaan (schedule) Cron-aikataulun mukaisesti. cron, timezone
Webhook (webhook) Ulkoinen järjestelmä kutsuu automaation webhook-osoitetta. webhook_secret
AI-agentin funktio (agent_function) AI-agenttisi kutsuu tätä automaatiota funktiona keskustelun aikana. function_name, function_description, parameters, agent_ids, campaign_ids
Uusi syöte-elementti (rss) Uusi kohde ilmestyy RSS- tai Atom-syötteeseen. feed_url
Sähköposti vastaanotettu (email_received) Sähköposti saapuu yhdistettyyn postilaatikkoosi. from_contains, subject_contains
Sovellustapahtuma (app_event) Jotain tapahtuu yhdistetyssä sovelluksessa: kaupan vaihe muuttuu, maksu saapuu, lomake lähetetään. toolkit, trigger_slug, connected_account_id, config
Manuaalinen ajo (manual) Vain kun se käynnistetään käsin. ei mitään

Automaatio voi sisältää enintään yhden käynnistimen kullekin tyypille webhook, app_event, agent_function, rss, schedule, email_received, appointment_upcoming ja contact_added. Käynnistintä, joka aktivoituu tietuetta luotaessa, ei voi yhdistää toimintoon, joka luo saman tietueen, koska automaatio käynnistäisi itsensä.

Tietoa siitä, mitä kukin käynnistin välittää seuraaville vaiheille (output_keys), sekä täydellinen luettelo toiminnoista parametreineen löytyy kohdasta GET /automations/steps. Automaatio-opas selittää jokaisen käynnistimen rakentajan näkökulmasta.


Virheet

Jokaisella virheellä on tavallinen muoto { "success": false, "error_code": <status>, "error": "..." }. Hylätty graafi lisää code ja errors:

{
  "success": false,
  "error_code": 400,
  "code": "invalid_graph",
  "error": "<the first problem, as one sentence>",
  "errors": ["<the first problem, as one sentence>", "<the next problem>"]
}

errors luettelee jokaisen ongelman, kukin yhtenä korjattavana lauseena, ja error on ensimmäinen niistä. Korjaa täsmälleen se, mitä on lueteltu, ja lähetä koko graafi uudelleen. code on jokin seuraavista: invalid_graph, automation_graph_has_a_cycle, self_triggering_automation, no_trigger tai muu rakentajan koodi.

Tila Milloin
400 Graafi hylättiin (katso yllä), pakollinen kenttä puuttuu (name tai graph luonnissa, folder_id siirrossa), päivitys ei lähettänyt muutettavaa tietoa, automaation tai kansion tunnus ei ole kelvollinen, tai kansion nimi puuttuu, on tyhjä tai liian pitkä (code: "invalid_name").
403 Tilillä ei ole automaatioita; asiakastilin tilaus ei sisällä automaatioiden luomista ja muokkaamista (vain kirjoitus); tai tiimin jäsenen Automaatiot-oikeudet ovat liian alhaiset (Näytä lukemista varten, Muokkaa kirjoittamista varten).
404 Tällä tilillä ei ole automaatiota kyseisellä tunnuksella, ei kansiota kyseisellä tunnuksella (code: "folder_not_found"), tai sub_account_id ei ole yksi asiakastileistäsi.
409 Samanniminen kansio on jo olemassa (code: "folder_name_taken").
413 Automaatio on suurempi kuin rakentajan sallima 1 Mt. Siirrä suuri koodi tai data pois sen vaiheista.
422 Rakentaja hylkäsi pyynnön muusta syystä. Tarkista graafi kohdan GET /automations/steps mukaisesti; saman pyynnön lähettäminen uudelleen ei auta.
503 Automaatiopalveluun ei saatu yhteyttä. Yritä hetken kuluttua uudelleen. Jos olet luomassa uutta, listaa ensin automaatiosi, jotta et luo toista luonnosta.

Näiden päätepisteiden käyttäminen MCP:n kautta

Jokainen tämän sivun päätepiste on myös työkalu AI-avustajalle, jonka yhdistät MCP:n kautta, samoilla säännöillä: uusi automaatio on luonnos, kunnes se otetaan käyttöön, ja muokkaus käynnissä olevaan automaatioon astuu voimaan välittömästi.

Työkalu Päätepiste
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

Seuraavat vaiheet

  • Automaatiot: miten käynnistimet, vaiheet, muuttujat ja ajohistoria toimivat rakentajassa.
  • API toimistoille: rakenna automaatioita asiakastilille käyttäen sub_account_id.
  • API-viite: täydellinen interaktiivinen päätepisteiden selain.