API Changelog
Breaking changes, new features, and significant updates to epilot APIs. Subscribe via RSS
2026-09-03 Email Settings API
- New
AllowedRecipientDomainsSettingemail setting type added, restricting which recipient domains may be sent to — accepted onPOST /v1/email-settings,POST /v1/email-settings/{id}, andDELETE /v1/email-settings, and returned wherever email settings are read, so consumers must be prepared for this additional setting shape
2026-09-03 Validation Rules API
- Rule condition values can now reference an environment value instead of only a fixed value:
conditions[].value, itsminandmax, theiradjust.value, andapplies_when.valueaccept an environment value, andconditions[].value,min, andmaxadditionally accept an external value — accepted onPOST /v1/validation-rulesandPATCH /v1/validation-rules/{ruleId}and returned wherever rules are read, so consumers must be prepared for these additional shapes
2026-09-03 Core Events
- New optional
_automation_chainfield added to all built-in event payloads, listing the automations that led to the event (up to 100 entries) so consumers can detect and break automation loops; it can also be set when triggering an event through the Event Catalog API and is then carried over to the published event and to every event derived from the resulting entity operation
2026-09-02 Automation API
- Automation assignment actions can now spread work across a group of candidates:
config.assignment_typeaccepts the newsequentialandeven_distributionvalues, together with new optionalconfig.candidate_group,config.fallback,config.fallback_assignees, andconfig.reset_intervalfields — accepted onPOST /v1/automation/flowsandPUT /v1/automation/flows/{flow_id}and returned wherever flows and executions are read - Assignment actions additionally accept a new optional
config.workload_filterfor narrowing which existing workload is counted when picking an assignee
2026-09-02 Integration Toolkit API
- Integrations can now carry a new optional
mapsfield, accepted onPOST/PUT /v1/integrations/{integrationId}and their v2 counterparts and returned wherever integrations are read
2026-09-01 Automation API
- The
language_codefield of an automation action's configuration is no longer restricted todeanden— affectingPOST /v1/automation/flowsandPUT /v1/automation/flows/{flow_id}as well as everywhere flows and executions are read - Automation actions can now be pointed at entities through an entity graph: a new optional
config.graph_contextfield describing the graph and its nodes, where every node can be markedoptional— accepted onPOST /v1/automation/flowsandPUT /v1/automation/flows/{flow_id}and returned wherever flows and executions are read
2026-09-01 File API
- The file upload endpoints (
POST /v1/files,POST /v1/files/upload,POST /v1/files/public/upload,POST /v2/files, andPOST /v2/files/upload) can now respond with422when the upload cannot be processed
2026-09-01 Integration Toolkit API
- The entity sync status endpoint moved from
GET /v1/entities/{entityId}/sync-statustoGET /v1/integrations/entities/{entityId}/sync-status; the old path was removed without deprecation (breaking)
2026-09-01 Journey Config API
- New
GET /v1/journey/configuration/{id}/environmentendpoint added for reading the environment of a journey configuration - New
GET /v1/journey/environment-variablesendpoint added for listing the environment variables available to journeys - The
settings.embedOptions.langfield is no longer restricted tode,en, andfr— affecting the journey configuration create and update endpoints in v1 and v2
2026-09-01 Partner Directory API
- The
languagerequest field ofPOST /v2/partners/{id}/inviteandPOST /v2/partners/{orgId}/usersis no longer restricted todeanden
2026-09-01 Meter Counter Entity
- New
ma_lo_idattribute added to themeter_counterentity, carrying the Marktlokation ID of a register
2026-08-31 Blueprint Manifest API
POST /v2/blueprint-manifest/jobs/{job_id}:continueno longer accepts theresources_to_ignoreandsync_notesrequest fields; the request body now takes the same installation options as the install endpoints (breaking)- Blueprint installations can now ask for a fresh authentication: jobs report a new
REAUTH_REQUIREDstatus wherever jobs and manifests are read, andPOST /v3/blueprint-manifest/blueprint:installaccepts a new optionalsession_credentialsfield - The
languagerequest field ofPOST /v1/blueprint-manifest/jobs/{job_id}:exportManifestis no longer restricted todeanden
2026-08-31 Environments API
- Environment values are no longer text-only: the
typeof an environment accepts the newText,Number,Boolean,Map, andJSONvalues, and itsvalueis no longer always a string but takes the shape matching the type — affectingPOST /v1/environmentsandPUT /v1/environments/{key}as well as everywhere environments are read (breaking) PUT /v1/environments/{key}can now respond with409when the environment conflicts with the current state
2026-08-28 App API
- App hooks can now run yearly: the
intervalsof a component's hook configuration accept the newP1Yvalue, accepted onPOST/PATCH /v1/app-configurations/{appId}/versions/{version}/componentsand returned wherever apps and app configurations are read
2026-08-28 Automation API
- Automation flows can now be triggered by relation changes: trigger operation types accept the new
relationsAdded,relationsRemoved,relationsDeleted,relationsSoftDeleted, andrelationsRestoredvalues onPOST /v1/automation/flowsandPUT /v1/automation/flows/{flow_id}, and executions report them intrigger_event.operation_type - Automation actions can now wait for a journey submission through new optional
config.journey_idandconfig.wait_for_journey_submissionfields, accepted when creating or updating a flow and returned wherever flows and executions are read; a waiting execution additionally reports aworkflow_wait_context - Executions started from a workflow now report who triggered it through a new optional
workflow_context.trigger_user_idfield, accepted onPOST /v1/automation/executionsand returned wherever executions are read
2026-08-28 Billing API
- Pricing configuration history entries now report the installment amount through a new optional
installment_amountfield, returned byGET /v1/billing/billing_accounts/{id}/configuration_history,GET /v1/billing/billing_accounts/{id}/pricing_information,GET /v1/billing/contracts/{id}/configuration_history, andGET /v1/billing/contracts/{id}/pricing_information
2026-08-28 Entity API
- The
variant_overridablefield of schema attributes and capabilities was removed and replaced by a new optionaloverridable_attributefield — affecting the schema, attribute, and capability endpoints in v1 and v2, in both requests and responses (breaking)
2026-08-28 Workflows Execution API
- Workflow tasks can now be set to wait for a journey submission through new optional
automation_config.journey_id,automation_config.wait_for_journey_submission, andautomation_config.journey_executionfields, accepted onPOST /v2/flows/executions,POST /v2/flows/executions/{execution_id}/tasks, andPATCH /v2/flows/executions/{execution_id}/tasks/{task_id}, and returned wherever executions and tasks are read - Workflow steps and tasks report a new
WAITING_FOR_JOURNEY_SUBMISSIONstatus while they wait, returned by all execution, step, and task endpoints and accepted when creating or updating a step or task
2026-08-27 App API
- App versions can now carry release notes through a new optional
changelogfield onPATCH /v1/app-configurations/{appId}/versions/{version}, andPOST /v1/app-configurations/{appId}/versions/{sourceVersion}/clone-to/{targetVersion}accepts an optional request body for setting them while cloning
2026-08-27 Entity API
POST /v1/entity/schemas/{slug}/freezeandPOST /v1/entity/schemas/{slug}/unfreezeare deprecated and will be removed in a future version- The
latestquery parameter of the schema read and list endpoints is deprecated, as are thefrozen,latest, andfrozen_versionfields of schema responses
2026-08-27 Permissions API
- Grant conditions gained two new types,
NotEqualsConditionandNotEqualsCurrentUserCondition, for granting access when a value does not match — accepted onPOST /v1/permissions/rolesandPUT /v1/permissions/roles/{roleId}and returned wherever roles and grants are read - Grant conditions accept a new optional
attributeslist for applying a condition to several attributes at once; a condition'svaluesmust now contain at least one entry (breaking)
2026-08-27 Targeting API
- New
GET /v1/campaign/{campaign_id}/email-statsendpoint added for reading the email delivery statistics of a campaign, reporting how many recipients unsubscribed, opened, and clicked, together with the total number of opens and clicks - Campaign recipients now report how their email was delivered through new optional
email_status,email_status_updated_at,email_send_error,email_bounce_type,email_bounce_subtype,email_bounce_reason,email_complaint_type,email_unsubscribed_at, andmessage_entity_idfields, returned wherever recipients are read;GET /v1/campaign/{campaign_id}/recipientsadditionally accepts anemail_statusquery parameter for filtering by it - Campaign recipients also report how they engaged with the email through new optional
email_open_count,email_first_opened_at,email_last_opened_at,email_click_count,email_first_clicked_at, andemail_clicked_linksfields
2026-08-27 Partner Entity
- The
partnerentity now carries aworkflowsoverview, reporting the workflows running on a partner together with their status, progress, phases, and current task
2026-08-27 Event: Customer Request Submitted
- The event now also carries the meter of a ticket and its counters — new optional
meterandmeter_countersnodes, so consumers can resolve counter identifiers such asexternal_idfrom the event itself; both are absent for customer requests created from a journey
2026-08-26 App API
- App event search (
POST /v1/app-configurations/{appId}/events) now accepts an optionalfilters.searchterm for searching events and an optionalpagination.beforecursor for paging backwards; both are echoed back in thequeryof the response - Apps can now be configured through options: a new optional
optionslist accepted onPATCH /v1/app-configurations/{appId}/versions/{version}and returned wherever apps and app configurations are read, where every returned option reports whether it isconfigured,lifted,sensitive, and when its value was last changed (value_updated_at); components declare through a new optionaluses_optionsflag that they read those options, and acceptoptions.sensitiveonPOST/PATCH /v1/app-configurations/{appId}/versions/{version}/components - New
POST /v1/app/{appId}/options/resolveendpoint added for resolving the configured option values of an app - The
secretsfield of app functions is deprecated and will be removed in a future version