Skip to main content

API Changelog

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

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

2026-08-26 Configuration Hub API

  • New endpoints added for the health of an organization's configuration: GET /v1/configs/health for reading the current health, POST /v1/configs/health:scan for starting a new scan, POST /v1/configs/health:cleanup for cleaning up what a scan reported, and POST /v1/configs/health:coverage-request for requesting coverage of a configuration that is not checked yet

2026-08-26 Entity API

  • POST /v1/entity:graph now accepts an optional filter per graph node, for narrowing which entities that node matches

2026-08-26 Integration Toolkit API

  • New GET /v1/entities/{entityId}/sync-status endpoint added for reading how an entity is synced with the connected external system โ€” each reported sync state carries an optional last_operation and last_synced_at, plus optional readings_last_event_id, readings_last_operation, and readings_last_synced_at for meter readings
  • New POST /v1/erp/updates/direct_simulation endpoint added for simulating a direct update payload
  • Use cases can now be configured for direct updates through a new optional configuration.direct field, and configuration.entities[].fields is no longer required โ€” accepted when creating or updating a use case or an integration, returned wherever use cases are read, and also accepted by POST /v1/erp/updates/mapping_simulation and POST /v2/erp/updates/mapping_simulation
  • POST /v3/erp/updates/events now accepts an optional correlation_id per event

2026-08-26 Journey API

  • New optional settings.authGate field added to journey configurations, controlling the authentication a journey requires โ€” accepted when creating and updating a journey configuration in v1 and v2, and returned wherever the journey configuration is read
  • The values of validationRules may now also be arrays where only single values were returned before, so consumers reading a journey configuration must be prepared for both shapes

2026-08-26 Notification API

  • POST /v1/notification/notifications now accepts an optional template_id for creating a notification from a notification template, and an optional skip_user_resolution for delivering to the given recipients without resolving them to users first

2026-08-26 Workflows Execution API

  • agent_execution and agent_execution_id on a workflow task may now be null where an object and a string were previously returned โ€” affecting all flow execution and task responses (breaking)
  • New optional loop_iterations field added to workflow tasks, reporting how often a looping task ran; tasks and phases additionally report an optional analytics.skipped_at when they were skipped, and executions an optional analytics.started_by_org_id

2026-08-25 Blueprint API

  • New POST /v2/blueprint-manifest/jobs/{job_id}:retry endpoint added for retrying a blueprint job that did not finish
  • Job progress now reports why an individual resource failed through new optional error_code and error_data fields on resource_progress โ€” returned by GET /v2/blueprint-manifest/jobs, GET /v2/blueprint-manifest/jobs/{job_id}, the job cancel and continue endpoints, and the bulk-install target endpoints in v3

2026-08-24 Message API

  • Message and thread searches can now be narrowed to a view or to user groups through new optional view and user_groups fields on POST /v1/message/messages:search, POST /v1/message/threads:searchIds, POST /v2/message/threads:search, and POST /v1/message/unread:counts (which takes the view per scope as scopes.view_id); the search term q is no longer required on the message and thread search endpoints

2026-08-21 Integration Toolkit API

  • Use case configuration no longer supports constants, lookups, params_mapping, required_params, file_source, fan_out.split_expression, upload.external_id, and upload.success_when โ€” these fields are no longer accepted when creating or updating a use case or an integration, and are no longer returned by the use case, integration, and use case history endpoints (breaking)
  • Request steps of a use case gained two new optional fields: body_jsonata for building the request body with a JSONata expression, and enabled for switching a single step off; file uploads additionally accept an optional upload.max_total_bytes limit
  • POST /v2/erp/imports now accepts an optional import_id to continue working on an existing import, answers with 200 in that case, and can answer with 404 or 409 when the referenced import cannot be used

2026-08-21 Message API

  • New POST /v1/message/unread:counts endpoint added for retrieving the number of unread messages

2026-08-21 Workflows API

  • Journey tasks can now pass parameters into the journey they open through a new optional context_parameters field โ€” available on the regular, ECP, and installer journey configuration of a task, accepted on POST/PUT /v1/workflows/definitions and POST/PUT /v2/flows/templates, and returned wherever workflow definitions, flow templates, and running workflow executions and tasks are read; PATCH /v2/flows/executions/{execution_id}/tasks/{task_id} also accepts it for the ECP and installer journey of a running task

2026-08-20 Access Token API

  • Access tokens now report when they expire through a new optional expires_at field, returned by GET /v1/access-tokens, POST /v1/access-tokens, and DELETE /v1/access-tokens/{id}

2026-08-20 Billing API

  • Configuration history entries are now one of several typed rows distinguished by change_type โ€” an installment amount change or a contract pricing change โ€” instead of a single flat shape; the fields that were previously always present (changed_at, created_at, entity_id, entity_type, event_id, new_value, org_id, schema_version, source) and the optional context, effective_at, previous_value, source_label, source_reference, and source_system fields are no longer part of the common row, so consumers must read them from the specific row type โ€” affecting GET /v1/billing/billing_accounts/{id}/configuration_history, GET /v1/billing/contracts/{id}/configuration_history, and the pricing information endpoints (breaking)
  • Contract pricing changes are now tracked in the configuration history: change_type accepts and returns the new contract_pricing_changed value, and a new optional history_change_types query parameter lets several change types be requested at once on all four configuration history and pricing information endpoints
  • Pricing information (GET /v1/billing/contracts/{id}/pricing_information and GET /v1/billing/billing_accounts/{id}/pricing_information) now returns the full base_prices and working_prices lists of a contract, reports a tariff_type for each base and working price, and accepts a new optional include_history query parameter for returning the configuration history along with it

2026-08-20 Journey Config API

  • New optional stepperType field added to journey steps, controlling how a step is presented in the journey stepper โ€” accepted when creating and updating a journey configuration in v1 and v2, and returned wherever the journey configuration is read

2026-08-20 Event: Customer Request Submitted

  • The event is now triggered from an automation instead of an entity operation โ€” the operation, activity_id, activity_type, and trigger_entity fields were removed, and _event_source and _trigger_source_type are now always automation (breaking)
  • ticket, event_attachments, _trigger_source_type, and _trigger_source are now always present; event_attachments is always sent but may be empty when the request carries no files, and _trigger_source identifies the automation execution and action that triggered the request

2026-08-19 App API

  • Apps can now declare functions โ€” a new optional list accepted on PATCH /v1/app-configurations/{appId}/versions/{version} and returned wherever apps and app configurations are read, together with a new function custom action type that lets a component reference one of those functions; APP_FUNCTION is accepted as a componentType filter on GET /v1/app and as an event source on POST /v1/app-events and POST /v1/app-configurations/{appId}/events
  • The sandbox custom action type was removed โ€” configuration.type no longer accepts sandbox on POST/PATCH /v1/app-configurations/{appId}/versions/{version}/components and it is no longer returned on the app, app-configuration, and public component read endpoints (breaking)
  • App components can now authenticate with basic auth โ€” configuration.auth_type accepts and returns the new basic value, so consumers must be prepared for this additional value
  • New optional query request parameter added to the app proxy endpoints (GET/POST/PUT/PATCH/DELETE /v1/public/app/{appId}/proxy/{proxyName}/{path}) for passing a query string on to the proxied request

2026-08-19 Integration Toolkit API

  • New endpoints added for managing the documentation of an integration: GET /v1/integrations/{integrationId}/documentation for listing documents, and GET/PUT/DELETE /v1/integrations/{integrationId}/documentation/{docId} for reading, storing, and removing a single document
  • New DELETE /v2/erp/imports/{importId} endpoint added for deleting an import

2026-08-19 Meter Counter Entity

  • The megawatt units of the meter_counter unit attribute were corrected from mw and mWh to MW and MWh โ€” the old lowercase values are no longer accepted (breaking)

2026-08-18 Configuration Hub API

  • New POST /v1/configs/sync-jobs/{id}/cancel endpoint added for cancelling a running configuration sync job

2026-08-18 Customer Portal API

  • POST /v3/portal/partner/invite no longer accepts the represents_contact_list request field (breaking)

2026-08-18 Workflows Execution API

  • New optional match_normalizations field added to workflow task conditions, reporting the normalizations applied when a condition value is matched โ€” returned by all flow execution and task endpoints