API Changelog
Breaking changes, new features, and significant updates to epilot APIs. Subscribe via RSS
2026-07-27 Integration Toolkit API
- Passing
group_idon events is now supported for parallelization within a batch of events inPOST /v3/erp/updates/events
2026-07-24 Integration Previous Provider API
- New
GET /v2/integration/{type}/providersendpoint added, listing the available previous providers for a given integration type
2026-07-22 Metering API
- New
POST /v2/metering/readings/pruneendpoint added for removing meter readings
2026-07-21 Notification API
- New optional
allowed_channelsfield (email,in_app) added when creating notifications and returned on notification reads; it caps which delivery channels a notification may use, with actual delivery being the intersection of this list and each recipient's own channel preferences (an empty array suppresses all delivery)
2026-07-16 Entity API
- Entity data can now be returned with PII removed: an optional
anonymizequery parameter was added to the entity read endpoints (GET /v1/entity/{slug}/{id}and its v2/v3 variants, plus theactivity,changesets,relations,/v1/entity/activity/{id}, and/v1/entity:autocompleteoperations), and an optionalanonymizerequest-body flag was added toPOST /v1/entity:search,:list, and:export; whentrue, identifiers such as names, emails, phone numbers, and IBANs are replaced with deterministic pseudonyms (anonymization is forced regardless of the flag when the access token was created withanonymize: true) - New optional
data_classificationfield (piiorpublic) added to every entity schema attribute type โ returned by the schema endpoints and settable viaPOST /v1/entity/schemas/attributesโ wherepiialways anonymizes the attribute value in anonymized responses andpublicnever does, overriding the built-in defaults
2026-07-16 File API
- New
GET /v1/files/{id}/textendpoint added, returning the plain-text representation of a file entity (FileText); itsstatusisready(text available),not_readywhile the text is still being prepared, orunsupportedwhen text is unavailable for the file or organization
2026-07-15 Access Token API
- New optional
anonymizeflag added when creating access tokens (POST /v1/access-tokens, including the app-token and assume-token variants); whentrue, all entity data returned to the token is PII-anonymized and the bearer cannot turn it off โ the flag is also returned on token list, create, and delete responses
2026-07-15 Blueprint API
- New
POST /v3/blueprint-manifest/blueprints/{blueprint_id}:publishendpoint added for starting an asynchronous V3 blueprint publication
2026-07-15 Customer Portal API
- New
POST /v2/portal/contract/{id}/resolve-templatesendpoint added โ a POST variant of get-contract that accepts Handlebars templates and returns their resolved output per related meter (templates_output)
2026-07-15 Journey Config API
POST /v1/journey/document:generatenow accepts an optionalcontext_entity_id, resolving entity and relational template variables against that entity when generating the document
2026-07-14 Message API
- New
POST /v2/message/threads:workloadendpoint added, returning the number of open threads assigned directly to each of up to 100 requested users (matching their central-inbox open view) for use in assignment load-balancing
2026-07-14 Webhooks API
- Webhook filter conditions can now be expressed as a single JSONata expression: a new optional
jsonata_expressionfield (max 15000 characters) was added tofilterConditions.conditions[], evaluated against the event payload and passing when the result is truthy, andfield/operationbecame optional โ a condition is now either a classic field + operation comparison or a JSONata expression (the two are mutually exclusive), accepted onPOST/PUT /v1/webhooks/configsand returned in config responses
2026-07-13 File API
- New optional read-only
etagfield (the file's S3 content hash) added to file responses โ on both the file attributes and each entry inversions[]โ across the v1 and v2 file endpoints, letting clients detect real content changes without re-downloading the file
2026-07-13 Webhooks API
- Webhook filter conditions now support six length-based operators (
length_equals,length_not_equals,length_greater_than,length_less_than,length_greater_than_or_equals,length_less_than_or_equals) onfilterConditions.conditions[].operation, letting event delivery be filtered by the item count of a field value (an array yields its length, a missing/null value yields0, any other single value yields1); accepted onPOST/PUT /v1/webhooks/configsand returned in config responses
2026-07-10 Event: Service Meter Reading Added
- New optional
file_idfield added to eachmeter_readingsitem, carrying the entity ID of the photo submitted with that reading; it matches anevent_attachments[].entity_id, so consumers can pair a reading with its attachment deterministically instead of relying on therelation_tags/_tags/mime_type/_created_atheuristics (which remain the fallback whenfile_idis absent)
2026-07-09 Blueprint API
- The
schema,taxonomy,family, andpermissionresource types are no longer accepted by the uniqueness-criteria endpoints (GET/PUT/DELETE /v1/blueprint-manifest/uniqueness-criteria/{resource_type}) and no longer appear in their responses (breaking)
2026-07-09 Integration Toolkit API
- The integration notification rule
typeenum was narrowed โ theconsecutive_failures,first_error,new_error_code,auth_expiry,ack_timeout, andvalidation_surgevalues are no longer accepted on create/update or returned in responses, and the relatedconsecutiverule field was removed from both requests and responses (breaking)
2026-07-09 User API
- New optional
in_app_notification_settingfield added to users โ returned across the/v2/userslist, get,me, invite, and group responses and settable viaPATCH /v2/users/{id}โ controlling per-type in-app notification delivery preferences
2026-07-08 Targeting API
- New
POST /v1/campaign:discoverandPATCH /v1/campaign/{campaign_id}/recipient/{recipient_id}/entity_ui:statusendpoints added for Entity-UI Next Best Actions, along with newentity_ui_status,entity_ui_status_updated_at, andresolutionfields on campaign recipient responses - Each recommended action returned by
POST /v1/campaign:discovercarries annba.ctawhosetypeisjourney,workflow, orflow(a flow template ID); the previousurlCTA type and thenba.cta.labelfield are not part of the response
2026-07-07 App API
- New
PUT,PATCH, andDELETE /v1/public/app/{appId}/proxy/{proxyName}/{path}endpoints added, letting apps forward those HTTP methods through to a registered proxy target - New
changeEmail,changePassword, anddeleteAccountportal extension hook types added, letting apps replace the built-in change-email, change-password, and delete-account flows for portal users - The app proxy configuration (
ApiProxyComponent) gained an optionalheadersmap for injecting request headers server-side, with values resolved from encrypted component options via{{option_key}}interpolation so credentials never reach the client; the proxytargetURL now supports the same{{option_key}}interpolation for per-installation hosts
2026-07-07 Workflows APIs
- New optional
linearflag added to flow templates (settable onPOST/PUT /v2/flows/templates); whentrue, task enablement is computed at runtime from the flow graph โ a task becomes enabled once all its direct predecessors are complete โ overriding any explicit per-task requirements - New optional
linearflag added to flow executions (copied from the flow template when the execution starts); whentrue, task enablement is computed at runtime from the flow graph โ a task becomes enabled once all its direct predecessors are complete โ instead of from each task's explicit requirements
2026-07-04 Call Entity
- New
callentity introduced for tracking customer calls, with anagentrelation and acontactrelation, plusduration(in seconds),recording(link),transcript, andexternal_idattributes
2026-07-03 Customer Portal API
- New optional
password_history_sizefield added to the Cognito password policy (0โ24) across the v2/v3 portal config endpoints, preventing reuse of that many previous passwords (0disables it)
2026-07-03 Deduplication API
POST /v1/deduplicateandPOST /v1/deduplicate/jobnow reject empty input โ the request body must contain at least one merge instruction, each instruction'stoDeletelist must contain at least one id, andtoKeepand everytoDeleteid must be a non-empty string (previously empty arrays and empty strings were accepted) (breaking)
2026-07-03 Metering API
POST /v1/metering/readingsandPOST /v2/metering/readingsnow accept an optionalcreate_ticketquery parameter (defaulttrue); set it tofalsefor authoritative system-driven writes (e.g. ERP inbound) to suppress creation of the manual-intervention review ticket