API Changelog
Breaking changes, new features, and significant updates to epilot APIs. Subscribe via RSS
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
2026-06-30 Webhooks API
- Event replay can now re-run the JSONata transform:
POST /v1/webhooks/configs/{configId}/events/{eventId}/replayand.../events/replay-batchaccept an optionalreapply_transformflag that reconstructs the original pre-transform input and re-runs the full delivery pipeline (defaultfalse, which resends the post-transform payload as-is) - Webhook event responses now include
original_payload(the raw pre-transform input, when available),can_reapply_transform, andcan_reapply_transform_reason; single-event replay can now return422when the original input cannot be reconstructed
2026-06-29 Message API
PUT /v1/message/messagescan now return409 Conflictwhen a draft has been edited by someone else since it was loaded, including the current server version of the message so clients can reload and retry- New optional
updated_byfield added to message and thread responses, recording the user who last edited the message
2026-06-29 Portal User Entity
- New read-only
first_loginandlast_logindate-time attributes added, recording when a portal user first and most recently signed in
2026-06-26 Audit Log API
POST /v1/logsnow acceptsresource_id,resource_type, andactionfilters for narrowing audit-log searches to the resource an event targets and its semantic action name (e.g.blueprint.resource_added); the same three fields are now returned on each log record
2026-06-26 Customer Portal API
- New endpoints added to read and update a portal's mobile app configuration (
GET/PUT /v1/portal/mobile-config), covering app branding, iOS and Android settings, and over-the-air (OTA) update settings - New
POST /v2/portal/entity/{slug}andPATCH /v2/portal/entity/{slug}/{id}endpoints added for creating and updating entities in the portal context
2026-06-26 Integration Toolkit API
- New optional
prevent_indirect_servingfield added to FileProxy use case configuration; whentrue, files too large to be served directly in the proxy response are rejected instead of being served via a temporary S3 redirect, so files never transit epilot's temporary storage
2026-06-25 Entity API
- New optional
qquery parameter added toGET /v1/entity/viewsfor free-text searching saved views by name