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.
- Perus-URL:
https://api.dmchamp.com/v1 - Todennus: API-avaimesi (katso Todennus)
- Virheet: katso Virheet ja sivutus ja Virheet alta
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, palauttaa404. Katso API toimistoille.
Miten se toimii: ensin luonnos
API on rakennettu siten, ettei mikään käynnisty vahingossa.
- Lue luettelo.
GET /automations/stepslistaa jokaisen käynnistimen, toiminnon ja vaihetyypin, jota voit käyttää, sekä kieliopin kaavion kirjoittamiseen (graph_rules). - Luo luonnos.
POST /automationstallentaa automaation pois päältä. Mikään ei vielä käynnisty. - 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. - Kytke se päälle.
POST /automations/{automationId}/enableon 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, kukinkey-tunnisteellaan (tunnus, jota käytät kaaviossa) japarams-kuvauksellaan, merkittynärequired-kohdassa, missä ne sijaitsevat.api_actions: tämän rajapinnan toiminnot, joita toimintavaihe voi kutsua. Ilmanq-parametria ne palautuvat alueittain ryhmiteltyinä tunnisteina kohdassaapi_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_actionson tasainen luettelo osumista, enintään 60 kappaletta.api_actions_truncatedontrue, 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ä, esimerkiksiq=hubspot. Jokainen niistä kertoo, onko tili yhdistänyt kyseisen sovelluksen (connected), jaconnected_appsluettelee sovellukset, jotka tili on yhdistänyt. app_actions_unavailableontrue, 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, esimerkiksitrigger_1taisend_reminder),type(yksi 8 vaihetyypistä), valinnainenlabelja sen asetukset kohdassadata, 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
sourcejatarget. Ehdosta lähtevät reunat kantavatsourceHandletruetaifalse. Silmukasta lähtevät reunat kantavatbodytaidone. Vastausviiveen odotuksesta lähtevät reunat kantavatrepliedtaitimed_out. Muilla reunoilla ei olesourceHandle; 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": []
}
automationon tallennettu automaatio samassa muodossa kuin Hae automaatio.draftontrue, kun se on kytketty pois päältä. Uusi automaatio on aina luonnos, kunnes otat sen käyttöön, jotenenabled: falsetässä on normaalia, ei virhe.open_pathon paikka, jossa se avautuu sovelluksen rakennustyökalussa.warningsluettelee asiat, joita rakennustyökalu ei voinut viimeistellä, lyhyinä tunnisteina (esimerkiksiagent_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:
- Lue automaatio käyttämällä
GET /automations/{automationId}. - Muuta tarvittavat kohdat kyseisessä kaaviossa.
- Lähetä koko kaavio takaisin, kaikki vaiheet mukaan lukien.
Kun lähetät sen takaisin:
- Pidä jokaisen vaiheen
aliastä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"
}
]
}
modeonlivetodelliselle suoritukselle taisafeturvalliselle 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öinnote: 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.