Enrol a automation
/api/v1/automations/{automation}/enrolParameters
| Name | In | Type | Description |
|---|---|---|---|
automationrequired | path | string | The automation identifier. |
Request body
contact_idstringemailstring
Request
/api/v1/automations/{automation}/enrolcurl -X POST 'https://app.mailyte.com/api/v1/automations/01JBT8XQ2M9WYC3K4F6R7S8T9V/enrol' \
-H 'Authorization: Bearer mk_live_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"contact_id": "<string>",
"email": "<string>"
}'const response = await fetch('https://app.mailyte.com/api/v1/automations/01JBT8XQ2M9WYC3K4F6R7S8T9V/enrol', {
method: 'POST',
headers: {
Authorization: 'Bearer mk_live_YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"contact_id": "<string>",
"email": "<string>"
}),
});
const { data } = await response.json();import requests
response = requests.post(
"https://app.mailyte.com/api/v1/automations/01JBT8XQ2M9WYC3K4F6R7S8T9V/enrol",
headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
json={
"contact_id": "<string>",
"email": "<string>"
},
)
data = response.json()["data"]<?php
$response = Http::withToken('mk_live_YOUR_API_KEY')
->post('https://app.mailyte.com/api/v1/automations/01JBT8XQ2M9WYC3K4F6R7S8T9V/enrol', [
'contact_id' => '<string>',
'email' => '<string>',
]);
$data = $response->json('data');require "net/http"
require "json"
uri = URI("https://app.mailyte.com/api/v1/automations/01JBT8XQ2M9WYC3K4F6R7S8T9V/enrol")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer mk_live_YOUR_API_KEY"
request["Content-Type"] = "application/json"
request.body = {
"contact_id": "<string>",
"email": "<string>"
}.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }Response
Success.
dataobjectidstringautomation_idstringversion_idstringThe version this run entered. It finishes that version even if a newer one is published.
version_numberintegercontactobjectidstringemailstringnamestring
statestringenrolled | running | waiting_time | waiting_event | paused | completed | exited | failedcurrent_node_idstringwake_atstringWhen the engine next picks this run up. UTC.
waiting_eventstringentered_atstringended_atstringexit_reasonstringWhy the run ended early: event:<name>, unsubscribed, archived, goal:<node>.
errorstringcontextobjectThe trigger payload: the event properties, or the list or tag that started the run.
automationobjectPresent on a contact's run list.
idstringnamestringstatestring
summarystringOne plain-language line about this run. Present on a contact's run list.
stepsarray<object>Present when a single run is fetched; omitted from the list.
idintegernode_idstringThe node in the version graph this step belongs to.
node_typestringThe node type, e.g. delay, send_email, trigger, exit_rule.
occurred_atstringoutcomestringenrolled | executed | sending | sent | skipped | deferred | branch | exited | failed | unknownbranch_takenstringmessage_idstringThe sent message, when this step sent one. Ties the step to delivery events.
skipped_reasonstringWhy nothing was sent: suppressed, unsubscribed, marketing_review_pending, rate_limited, not_mailable.
detailsobject
narrativeobjectPresent when a single run is fetched: the steps as sentences, in the contact's local time.
timezonestringtz_sourcestringcontact | organization_default | utcWhere the timezone came from: the contact's own attribute, the organisation default, or UTC.
paragraphsarray<string>One paragraph per local day, plus what never happened after an early exit.
linesarray<object>node_idstringatstringtextstringoutcomestringghostbooleanTrue for a step that never ran because the run ended early.
Returned inside the standard envelope.
Errors
| Status | When |
|---|---|
401 | The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist. |
403 | The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys. |
404 | No such resource in this organization. |
422 | The request was understood but the values were not acceptable. |
429 | Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait. |
Every status, with what causes it and what to do, is on the error reference.