API Changelog
Breaking changes, new features, and significant updates to epilot APIs. Subscribe via RSS
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
2026-07-02 Billing API
- New pricing-information and configuration-history endpoints added for both contracts and billing accounts:
GET /v1/billing/contracts/{id}/pricing_information,GET /v1/billing/contracts/{id}/configuration_history,GET /v1/billing/billing_accounts/{id}/pricing_information, andGET /v1/billing/billing_accounts/{id}/configuration_history - New
invoicebilling event type added โ invoice events can now be created viaPOST /v1/billing/eventsand are returned alongside the other billing event types
2026-07-02 Calendar API
- New user-absence endpoints added: list absent users in a time window (
GET /v1/calendar/absence/users), get a single user's absence (GET /v1/calendar/absence/users/{user_id}), search absence for multiple users at once (POST /v1/calendar/absence:search), search current-moment absence for a batch of users (POST /v1/calendar/absence:search-now, returning anabsent_untiltimestamp marking the end of any active absence), and create, read, update, and delete manual absence adjustments (.../absence/users/{user_id}/adjustments) GET /v1/calendar/absence/users/{user_id}also returns an optionalexternal_calendarsarray listing the user's connected Outlook/Google calendars and each provider'slast_synced_at
2026-07-02 Workflows Definition API
- New optional
limit_warningsarray added to flow templates, listing non-blocking warnings about configuration limits a saved flow exceeds while remaining fully usable POST /v2/flows/templatesandPUT /v2/flows/templates/{flowId}now accept an optionalenforce_limitsquery parameter (defaultfalse); whentrue, size/count limit violations are rejected as400errors instead of being accepted and returned as non-blockinglimit_warnings
2026-07-01 Dashboard API
- New
GET /v1/dashboard/insights/tagsendpoint added, returning the distinct tags used across an organization's saved insights GET /v1/dashboard/dashboardsandGET /v1/dashboard/insightsnow accept filtering, sorting, and pagination query parameters (q,created_by,created_after/created_before,updated_after/updated_before,shared_with,owner,accessible_to,sort,order,limit,offset); insights additionally acceptvisualisation_id,tags, andtags_match- List responses now return a
paginationobject (total,limit,offset,has_more) and always includeresults - New optional
tagsarray field added to insights
2026-07-01 Entity API
- New
userlocation added to taxonomy classifications, so a taxonomy can now be enabled for theuserentity (accepted inenabled_locationsonPOST/PUT /v1/entity/taxonomies,POST /v1/entity/taxonomies/{taxonomySlug}/classifications, and the v2 classification endpoints) - New optional
source_contextobject added to activity-log operations (GET /v1/entity/activity/{id}andGET /v1/entity/{slug}/{id}/activity), reporting the origin and actor behind each change (source,source_label,source_system,source_reference,actor_type,actor_id,effective_at)
2026-07-01 File API
GET /v1/files/public/{id}/previewcan now respond with302(redirect to the original file when a preview cannot be generated) or204(no preview and no redirect target available); clients should handle both in addition to the normal image response
2026-07-01 Message API
- New optional
save_to_entityflag added to file attachments onPOST/PUT /v1/message/messages,POST /v1/message/drafts, and thread endpoints; whenfalse, the file is kept on the message for inline rendering instead of being propagated to the related destination entity (defaults totrue)
2026-07-01 User API
- New optional
tagsarray added to users โ returned across the/v2/usersendpoints (list, get,me, invite, and group responses) and settable viaPATCH /v2/users/{id}
2026-06-30 Blueprint API
- New bulk-install endpoints added for installing one blueprint into many organizations in a single request:
POST /v3/blueprint-manifest/bulk-installs,GET /v3/blueprint-manifest/bulk-installs/{bulk_job_id},GET .../bulk-installs/{bulk_job_id}/targets, andPOST .../bulk-installs/{bulk_job_id}/targets/{destination_org_id}:retryfor retrying an individual failed target - The Terraform-based v2 install, validate, export, and patch endpoints were deprecated in favor of the V3 install engine (
POST /v2/blueprint-manifest/blueprint:install,POST .../blueprints/{blueprint_id}/validate,POST .../blueprints/{blueprint_id}:export, and the.../blueprints/{blueprint_id}/patchesfamily) POST /v3/blueprint-manifest/blueprint:installnow accepts an optionalauto_applyflag; whentrue, the install is applied automatically after the plan and snapshot steps instead of waiting for a separate:continuecall
2026-06-30 Customer Portal API
- New endpoints added to request an asynchronous CSV export of a portal user's contracts, delivery points, and meters, and to poll the export job for a download link once it is ready
- The export request now requires a JSON body specifying the entity
schemaand orderedcolumnsto export (with optionalsearchfilters); thelanguagequery parameter was removed in favor of a body field (breaking)
2026-06-30 Event Catalog API
- New optional
success_criteriafield added to event configurations (returned byGET /v1/eventsandGET /v1/events/{event_name}, settable viaPATCH /v1/events/{event_name}), listing the entity attributes an organization considers required for an event to be complete