API Changelog
Breaking changes, new features, and significant updates to epilot APIs. Subscribe via RSS
2026-09-25 Entity API
- New
GET /v1/entity/schemas/{slug}/headendpoint was added for reading the latest version of an entity schema PUT /v1/entity/schemas/{slug}now supports safe concurrent updates: new optionalbase_versionandbase_updated_atquery parameters name the schema version the update is based on, and the endpoint can respond with409when the schema was changed in the meantime
2026-09-25 Integration Toolkit API
POST /v1/erp/updates/events,POST /v2/erp/updates/events, andPOST /v3/erp/updates/eventscan now respond with429when too many requests are made
2026-09-25 Metering API
POST /v2/metering/readingscan now respond with429when too many requests are made
2026-09-24 Workflows Execution API
loop_config.crt_iterationsandloop_config.max_iterationson phases and tasks are now deprecated and will be removed in a future version โ affecting everywhere flow executions, phases, and tasks are read
2026-09-23 Integration Toolkit API
- Conditional entity mappings no longer take
conditional.folds; the rows a conditional mapping is built from are now described by a new requiredconditional.from_rowsinstead โ affecting use case and integration create/update endpoints,POST /v1/erp/updates/direct_simulation, the mapping simulation endpoints, and everywhere use cases and integrations are read (breaking) - Import jobs can now fail with the new
CHUNK_TOO_LARGEerror code, and validation reports the new issue codesCONDITIONAL_TARGET_MODE_UNSUPPORTEDandGROUPING_KEY_IS_SORT_COLUMN, replacingGROUPING_KEY_IS_FOLD_COLUMNโ returned by all/v2/erp/importsendpoints
2026-09-23 Journey Config API
- Journey steps can now be shown to guest users through a new optional
steps[].guestVisiblefield โ accepted when creating or updating a journey configuration or revision and returned wherever journey configurations are read
2026-09-22 Workflows Definition API
edges[].end_typewas removed from flow templates: it is no longer accepted byPOST /v2/flows/templatesandPUT /v2/flows/templates/{flowId}and no longer returned wherever flow templates are read (breaking)
2026-09-22 Workflows Execution API
edges[].end_typewas removed from flow executions: it is no longer returned wherever flow executions are read (breaking)- Workflow stages can now report that they were never reached:
stages[].statusreturns the newNOT_REACHEDvalue fromPOST /v2/flows/executions:portal-searchandPOST /v2/flows/executions:portal-search-batchโ so consumers must be prepared for this additional status - Execution contexts now report by which task they were added, and when and by which task they were promoted or demoted, through new optional
contexts[].added_by_task_id,contexts[].promoted_at,contexts[].promoted_by_task_id, andcontexts[].demoted_by_task_idfields โ accepted onPOST /v2/flows/executionsandPATCH /v2/flows/executions/{execution_id}and returned wherever flow executions are read - Automations can now write their result into a context through a new optional
automation_config.output_contextfield on a task and on the trigger โ accepted onPOST /v2/flows/executions,POST /v2/flows/executions/{execution_id}/tasks, andPATCH /v2/flows/executions/{execution_id}/tasks/{task_id}and returned wherever flow executions are read - Task conditions can now be evaluated against the main context:
tasks[].conditions[].statements[].source.origin_typereturns the newmain_contextvalue โ so consumers must be prepared for this additional value
2026-09-21 Automation API
- New
POST /v1/automation/journey-context:usagesendpoint was added for reading where a journey context is used - Automations can now be executed with inputs for their actions, through a new optional
action_inputsfield โ accepted onPOST /v1/automation/executionsand returned wherever executions are read - Action attachments can now be narrowed down by file name: new optional
actions[].config.attachments[].source_filter.filenameandsource_filter.filename_patternfields โ accepted onPOST /v1/automation/flowsandPUT /v1/automation/flows/{flow_id}and returned wherever flows and executions are read
2026-09-21 Pricing API
POST /v1/public/product-recommendationsnow reports where a recommendation came from through a new optionalsourcefield
2026-09-21 Workflows Definition API
- New
POST /v1/workflows-definition/journey-context:usagesendpoint was added for reading where a journey context is used - Automation tasks in a flow template can now ask for a note when they are executed, restrict which closing reasons may be picked, and have the email they send reviewed before it goes out, through new optional
tasks[].automation_config.allow_execution_note,automation_config.eligible_closing_reason_ids, andautomation_config.email_reviewfields โ accepted onPOST /v2/flows/templatesandPUT /v2/flows/templates/{flowId}and returned wherever flow templates are read POST /v1/workflows/definitionscan now respond with409when the definition conflicts with an existing one
2026-09-21 Workflows Execution API
- The email an automation task sends can now be reviewed before it goes out: new
GET /v2/flows/executions/{execution_id}/tasks/{task_id}/email-previewendpoint for previewing that email, together with a new optionalautomation_config.email_reviewfield โ accepted onPOST /v2/flows/executions,POST /v2/flows/executions/{execution_id}/tasks, andPATCH /v2/flows/executions/{execution_id}/tasks/{task_id}and returned wherever flow executions are read - Automation tasks can now ask for a note when they are executed and restrict which closing reasons may be picked, through new optional
automation_config.allow_execution_noteandautomation_config.eligible_closing_reason_idsfields โ accepted onPOST /v2/flows/executions,POST /v2/flows/executions/{execution_id}/tasks, andPATCH /v2/flows/executions/{execution_id}/tasks/{task_id}and returned wherever flow executions are read POST /v2/flows/executions/{execution_id}/tasks/{task_id}/automation:runnow accepts an optional request body, and it andPOST /v2/flows/executions/{execution_id}/tasks/{task_id}/schedule/run-nowcan respond with409when the run conflicts with the current state
2026-09-18 Audit Log API
- Audit log records now carry a visibility: a new optional
visibilityfield is accepted onPOST /v1/logsfor narrowing a search and returned on each record, andGET /v1/logs/{logId}accepts a matching optionalvisibilityquery parameter
2026-09-18 Journey Config API
- Journey environment variables can now hold a list of links:
typereturns the newList<Link>value with a matchingvalueshape, andGET /v1/journey/environment-variablescan additionally return a map value shape โ so consumers readingGET /v1/journey/environment-variablesandGET /v1/journey/configuration/{id}/environmentmust be prepared for these additional value shapes
2026-09-17 Blueprint Manifest API
- The blueprint patch endpoints were removed:
GETandPOST /v2/blueprint-manifest/blueprints/{blueprint_id}/patches,GET /v2/blueprint-manifest/blueprints/{blueprint_id}/patches/{patch_id},POST /v2/blueprint-manifest/blueprints/{blueprint_id}/patches:detect,POST /v2/blueprint-manifest/blueprints/{blueprint_id}/patches/{patch_id}:apply, andPOST /v2/blueprint-manifest/blueprints/{blueprint_id}/patches/{patch_id}/orgs/{org_id}:retry(breaking) - The v2 blueprint install, export, and publish endpoints were removed:
POST /v2/blueprint-manifest/blueprint:install,POST /v2/blueprint-manifest/blueprints/{blueprint_id}:export, andPOST /v2/blueprint-manifest/blueprints:publish(breaking) POST /v3/blueprint-manifest/blueprints/{blueprint_id}:publishnow accepts optionalname,slug, andversionfields for the blueprint being published
2026-09-17 Document API
- New
POST /v2/templates:validateendpoint was added for validating a document template
2026-09-17 Email Template API
- The
variable_parameters.languagerequest field ofPOST /v1/email-template/templates:replaceandPOST /v1/email-template/templates:replaceAsyncis no longer restricted todeanden
2026-09-16 Entity API
GET /v1/entity:autocompletenow accepts an optionalfromquery parameter
2026-09-16 File API
GET /v1/files/public/{id}/previewnow accepts an optionalkeep_originalquery parameter
2026-09-16 Workflows Execution API
- Task conditions can now be evaluated against the trigger that started the workflow:
tasks[].conditions[].statements[].source.origin_typereturns the newtrigger_sourcevalue, and tasks gained a new optionalautomation_config.input_context.trigger_idnaming that trigger โ accepted onPOST /v2/flows/executions,POST /v2/flows/executions/{execution_id}/tasks, andPATCH /v2/flows/executions/{execution_id}/tasks/{task_id}and returned wherever flow executions are read - Flow executions now report the triggers set up for them through a new optional
configured_triggers, and the trigger that started an execution can be named through a new optionaltrigger.trigger_idโ accepted onPOST /v2/flows/executionsand returned wherever flow executions are read
2026-09-15 Automation API
- Automation flows can now be triggered by Event Catalog events: a new event catalog trigger shape is accepted on
POST /v1/automation/flowsandPUT /v1/automation/flows/{flow_id}and returned wherever flows are read,GET /v1/automation/flowsaccepts a new optionaltrigger_event_namequery parameter for finding the flows a catalog event triggers, and executions report the catalog event as theirtrigger_eventโ so consumers must be prepared for these additional trigger and trigger event shapes - Conditions can now be evaluated against the event that started the automation:
conditions[].statements[].source.originTypeaccepts and returns the neweventvalue - Automations can now loop over the files uploaded in a journey:
loops[].source_typeaccepts and returns the newjourney-file-uploadvalue, together with a new optionalloops[].filter_tagsfor narrowing which files are looped over
2026-09-15 Entity API
- Schema conditions no longer carry
values; which values a condition matches is now described by a new optionaloptionsinstead โ affectingPUT /v1/entity/schemas/{slug}and everywhere schemas are read (breaking) - Capabilities can now declare which fields they manage through a new optional
managed_fieldsfield โ accepted onPOST /v1/entity/schemas/capabilities,PUT /v1/entity/schemas/capabilities/{composite_id}, andPUT /v1/entity/schemas/{slug}, and returned wherever schemas and capabilities are read - New optional
ui_config.custom_tabsfield added to entity schemas, accepted onPUT /v1/entity/schemas/{slug}and returned by the schema read, list and versions endpoints
2026-09-15 Pricing API
- Line items can now carry the inputs an external fee was calculated from, through a new optional
external_fees_metadata.inputsfield on a line item and on its item components โ accepted onPOST /v1/order,PUT /v1/order/{id},POST /v1/pricing:compute, andPOST /v1/public/cart:checkout POST /v1/public/integration/{integrationId}/compute-pricenow accepts an optionalcityfor the address the price is computed for, and reports theinputsthe computation was based on
2026-09-15 User API
- The
languagerequest field ofPOST /v2/users/invite,POST /v2/users/invite:resendEmail, andPOST /v2/users/public/signupis no longer restricted todeanden GET /v2/users/public/checkTokennow reports which login methods are available through a new optionallogin_methodsfield
2026-09-15 Workflows Definition API
- Task conditions can now be evaluated against the trigger that started the workflow:
tasks[].conditions[].statements[].source.origin_typeaccepts and returns the newtrigger_sourcevalue, and tasks gained a new optionalautomation_config.input_context.trigger_idnaming that trigger โ accepted onPOST /v2/flows/templatesandPUT /v2/flows/templates/{flowId}and returned wherever flow templates are read