Skip to main content

API Changelog

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

2026-07-08 Targeting API

  • New POST /v1/campaign:discover and PATCH /v1/campaign/{campaign_id}/recipient/{recipient_id}/entity_ui:status endpoints added for Entity-UI Next Best Actions, along with new entity_ui_status, entity_ui_status_updated_at, and resolution fields on campaign recipient responses
  • Each recommended action returned by POST /v1/campaign:discover carries an nba.cta whose type is journey, workflow, or flow (a flow template ID); the previous url CTA type and the nba.cta.label field are not part of the response

2026-07-07 App API

  • New PUT, PATCH, and DELETE /v1/public/app/{appId}/proxy/{proxyName}/{path} endpoints added, letting apps forward those HTTP methods through to a registered proxy target
  • New changeEmail, changePassword, and deleteAccount portal 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 optional headers map for injecting request headers server-side, with values resolved from encrypted component options via {{option_key}} interpolation so credentials never reach the client; the proxy target URL now supports the same {{option_key}} interpolation for per-installation hosts

2026-07-07 Workflows APIs

  • New optional linear flag added to flow templates (settable on POST/PUT /v2/flows/templates); when true, 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 linear flag added to flow executions (copied from the flow template when the execution starts); when true, 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 call entity introduced for tracking customer calls, with an agent relation and a contact relation, plus duration (in seconds), recording (link), transcript, and external_id attributes

2026-07-03 Customer Portal API

  • New optional password_history_size field added to the Cognito password policy (0โ€“24) across the v2/v3 portal config endpoints, preventing reuse of that many previous passwords (0 disables it)

2026-07-03 Deduplication API

  • POST /v1/deduplicate and POST /v1/deduplicate/job now reject empty input โ€” the request body must contain at least one merge instruction, each instruction's toDelete list must contain at least one id, and toKeep and every toDelete id must be a non-empty string (previously empty arrays and empty strings were accepted) (breaking)

2026-07-03 Metering API

  • POST /v1/metering/readings and POST /v2/metering/readings now accept an optional create_ticket query parameter (default true); set it to false for 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, and GET /v1/billing/billing_accounts/{id}/configuration_history
  • New invoice billing event type added โ€” invoice events can now be created via POST /v1/billing/events and 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 an absent_until timestamp 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 optional external_calendars array listing the user's connected Outlook/Google calendars and each provider's last_synced_at

2026-07-02 Workflows Definition API

  • New optional limit_warnings array added to flow templates, listing non-blocking warnings about configuration limits a saved flow exceeds while remaining fully usable
  • POST /v2/flows/templates and PUT /v2/flows/templates/{flowId} now accept an optional enforce_limits query parameter (default false); when true, size/count limit violations are rejected as 400 errors instead of being accepted and returned as non-blocking limit_warnings

2026-07-01 Dashboard API

  • New GET /v1/dashboard/insights/tags endpoint added, returning the distinct tags used across an organization's saved insights
  • GET /v1/dashboard/dashboards and GET /v1/dashboard/insights now 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 accept visualisation_id, tags, and tags_match
  • List responses now return a pagination object (total, limit, offset, has_more) and always include results
  • New optional tags array field added to insights

2026-07-01 Entity API

  • New user location added to taxonomy classifications, so a taxonomy can now be enabled for the user entity (accepted in enabled_locations on POST/PUT /v1/entity/taxonomies, POST /v1/entity/taxonomies/{taxonomySlug}/classifications, and the v2 classification endpoints)
  • New optional source_context object added to activity-log operations (GET /v1/entity/activity/{id} and GET /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}/preview can now respond with 302 (redirect to the original file when a preview cannot be generated) or 204 (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_entity flag added to file attachments on POST/PUT /v1/message/messages, POST /v1/message/drafts, and thread endpoints; when false, the file is kept on the message for inline rendering instead of being propagated to the related destination entity (defaults to true)

2026-07-01 User API

  • New optional tags array added to users โ€” returned across the /v2/users endpoints (list, get, me, invite, and group responses) and settable via PATCH /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, and POST .../bulk-installs/{bulk_job_id}/targets/{destination_org_id}:retry for 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}/patches family)
  • POST /v3/blueprint-manifest/blueprint:install now accepts an optional auto_apply flag; when true, the install is applied automatically after the plan and snapshot steps instead of waiting for a separate :continue call

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 schema and ordered columns to export (with optional search filters); the language query parameter was removed in favor of a body field (breaking)

2026-06-30 Event Catalog API

  • New optional success_criteria field added to event configurations (returned by GET /v1/events and GET /v1/events/{event_name}, settable via PATCH /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}/replay and .../events/replay-batch accept an optional reapply_transform flag that reconstructs the original pre-transform input and re-runs the full delivery pipeline (default false, 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, and can_reapply_transform_reason; single-event replay can now return 422 when the original input cannot be reconstructed

2026-06-29 Message API

  • PUT /v1/message/messages can now return 409 Conflict when 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_by field added to message and thread responses, recording the user who last edited the message

2026-06-29 Portal User Entity

  • New read-only first_login and last_login date-time attributes added, recording when a portal user first and most recently signed in

2026-06-26 Audit Log API

  • POST /v1/logs now accepts resource_id, resource_type, and action filters 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} and PATCH /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_serving field added to FileProxy use case configuration; when true, 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 q query parameter added to GET /v1/entity/views for free-text searching saved views by name