Skip to main content

API Changelog

Breaking changes, new features, and significant updates to epilot APIs. Subscribe via RSS

2026-09-03 Email Settings API

  • New AllowedRecipientDomainsSetting email setting type added, restricting which recipient domains may be sent to — accepted on POST /v1/email-settings, POST /v1/email-settings/{id}, and DELETE /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, its min and max, their adjust.value, and applies_when.value accept an environment value, and conditions[].value, min, and max additionally accept an external value — accepted on POST /v1/validation-rules and PATCH /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_chain field 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_type accepts the new sequential and even_distribution values, together with new optional config.candidate_group, config.fallback, config.fallback_assignees, and config.reset_interval fields — accepted on POST /v1/automation/flows and PUT /v1/automation/flows/{flow_id} and returned wherever flows and executions are read
  • Assignment actions additionally accept a new optional config.workload_filter for narrowing which existing workload is counted when picking an assignee

2026-09-02 Integration Toolkit API

  • Integrations can now carry a new optional maps field, accepted on POST/PUT /v1/integrations/{integrationId} and their v2 counterparts and returned wherever integrations are read

2026-09-01 Automation API

  • The language_code field of an automation action's configuration is no longer restricted to de and en — affecting POST /v1/automation/flows and PUT /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_context field describing the graph and its nodes, where every node can be marked optional — accepted on POST /v1/automation/flows and PUT /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, and POST /v2/files/upload) can now respond with 422 when the upload cannot be processed

2026-09-01 Integration Toolkit API

  • The entity sync status endpoint moved from GET /v1/entities/{entityId}/sync-status to GET /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}/environment endpoint added for reading the environment of a journey configuration
  • New GET /v1/journey/environment-variables endpoint added for listing the environment variables available to journeys
  • The settings.embedOptions.lang field is no longer restricted to de, en, and fr — affecting the journey configuration create and update endpoints in v1 and v2

2026-09-01 Partner Directory API

  • The language request field of POST /v2/partners/{id}/invite and POST /v2/partners/{orgId}/users is no longer restricted to de and en

2026-09-01 Meter Counter Entity

  • New ma_lo_id attribute added to the meter_counter entity, carrying the Marktlokation ID of a register

2026-08-31 Blueprint Manifest API

  • POST /v2/blueprint-manifest/jobs/{job_id}:continue no longer accepts the resources_to_ignore and sync_notes request 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_REQUIRED status wherever jobs and manifests are read, and POST /v3/blueprint-manifest/blueprint:install accepts a new optional session_credentials field
  • The language request field of POST /v1/blueprint-manifest/jobs/{job_id}:exportManifest is no longer restricted to de and en

2026-08-31 Environments API

  • Environment values are no longer text-only: the type of an environment accepts the new Text, Number, Boolean, Map, and JSON values, and its value is no longer always a string but takes the shape matching the type — affecting POST /v1/environments and PUT /v1/environments/{key} as well as everywhere environments are read (breaking)
  • PUT /v1/environments/{key} can now respond with 409 when the environment conflicts with the current state

2026-08-28 App API

  • App hooks can now run yearly: the intervals of a component's hook configuration accept the new P1Y value, accepted on POST/PATCH /v1/app-configurations/{appId}/versions/{version}/components and 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, and relationsRestored values on POST /v1/automation/flows and PUT /v1/automation/flows/{flow_id}, and executions report them in trigger_event.operation_type
  • Automation actions can now wait for a journey submission through new optional config.journey_id and config.wait_for_journey_submission fields, accepted when creating or updating a flow and returned wherever flows and executions are read; a waiting execution additionally reports a workflow_wait_context
  • Executions started from a workflow now report who triggered it through a new optional workflow_context.trigger_user_id field, accepted on POST /v1/automation/executions and returned wherever executions are read

2026-08-28 Billing API

  • Pricing configuration history entries now report the installment amount through a new optional installment_amount field, returned by GET /v1/billing/billing_accounts/{id}/configuration_history, GET /v1/billing/billing_accounts/{id}/pricing_information, GET /v1/billing/contracts/{id}/configuration_history, and GET /v1/billing/contracts/{id}/pricing_information

2026-08-28 Entity API

  • The variant_overridable field of schema attributes and capabilities was removed and replaced by a new optional overridable_attribute field — 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, and automation_config.journey_execution fields, accepted on POST /v2/flows/executions, POST /v2/flows/executions/{execution_id}/tasks, and PATCH /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_SUBMISSION status 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 changelog field on PATCH /v1/app-configurations/{appId}/versions/{version}, and POST /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}/freeze and POST /v1/entity/schemas/{slug}/unfreeze are deprecated and will be removed in a future version
  • The latest query parameter of the schema read and list endpoints is deprecated, as are the frozen, latest, and frozen_version fields of schema responses

2026-08-27 Permissions API

  • Grant conditions gained two new types, NotEqualsCondition and NotEqualsCurrentUserCondition, for granting access when a value does not match — accepted on POST /v1/permissions/roles and PUT /v1/permissions/roles/{roleId} and returned wherever roles and grants are read
  • Grant conditions accept a new optional attributes list for applying a condition to several attributes at once; a condition's values must now contain at least one entry (breaking)

2026-08-27 Targeting API

  • New GET /v1/campaign/{campaign_id}/email-stats endpoint 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, and message_entity_id fields, returned wherever recipients are read; GET /v1/campaign/{campaign_id}/recipients additionally accepts an email_status query 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, and email_clicked_links fields

2026-08-27 Partner Entity

  • The partner entity now carries a workflows overview, 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 meter and meter_counters nodes, so consumers can resolve counter identifiers such as external_id from 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 optional filters.search term for searching events and an optional pagination.before cursor for paging backwards; both are echoed back in the query of the response
  • Apps can now be configured through options: a new optional options list accepted on PATCH /v1/app-configurations/{appId}/versions/{version} and returned wherever apps and app configurations are read, where every returned option reports whether it is configured, lifted, sensitive, and when its value was last changed (value_updated_at); components declare through a new optional uses_options flag that they read those options, and accept options.sensitive on POST/PATCH /v1/app-configurations/{appId}/versions/{version}/components
  • New POST /v1/app/{appId}/options/resolve endpoint added for resolving the configured option values of an app
  • The secrets field of app functions is deprecated and will be removed in a future version