Skip to main content

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_expression field (max 15000 characters) was added to filterConditions.conditions[], evaluated against the event payload and passing when the result is truthy, and field/operation became optional โ€” a condition is now either a classic field + operation comparison or a JSONata expression (the two are mutually exclusive), accepted on POST/PUT /v1/webhooks/configs and returned in config responses

2026-07-13 File API

  • New optional read-only etag field (the file's S3 content hash) added to file responses โ€” on both the file attributes and each entry in versions[] โ€” 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) on filterConditions.conditions[].operation, letting event delivery be filtered by the item count of a field value (an array yields its length, a missing/null value yields 0, any other single value yields 1); accepted on POST/PUT /v1/webhooks/configs and returned in config responses

2026-07-10 Event: Service Meter Reading Added

  • New optional file_id field added to each meter_readings item, carrying the entity ID of the photo submitted with that reading; it matches an event_attachments[].entity_id, so consumers can pair a reading with its attachment deterministically instead of relying on the relation_tags/_tags/mime_type/_created_at heuristics (which remain the fallback when file_id is absent)

2026-07-09 Blueprint API

  • The schema, taxonomy, family, and permission resource 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 type enum was narrowed โ€” the consecutive_failures, first_error, new_error_code, auth_expiry, ack_timeout, and validation_surge values are no longer accepted on create/update or returned in responses, and the related consecutive rule field was removed from both requests and responses (breaking)

2026-07-09 User API

  • New optional in_app_notification_setting field added to users โ€” returned across the /v2/users list, get, me, invite, and group responses and settable via PATCH /v2/users/{id} โ€” controlling per-type in-app notification delivery preferences

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