Skip to main content

API Changelog

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

2026-07-27 Integration Toolkit API

  • Passing group_id on events is now supported for parallelization within a batch of events in POST /v3/erp/updates/events

2026-07-24 Integration Previous Provider API

  • New GET /v2/integration/{type}/providers endpoint added, listing the available previous providers for a given integration type

2026-07-22 Metering API

  • New POST /v2/metering/readings/prune endpoint added for removing meter readings

2026-07-21 Notification API

  • New optional allowed_channels field (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 anonymize query parameter was added to the entity read endpoints (GET /v1/entity/{slug}/{id} and its v2/v3 variants, plus the activity, changesets, relations, /v1/entity/activity/{id}, and /v1/entity:autocomplete operations), and an optional anonymize request-body flag was added to POST /v1/entity:search, :list, and :export; when true, 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 with anonymize: true)
  • New optional data_classification field (pii or public) added to every entity schema attribute type โ€” returned by the schema endpoints and settable via POST /v1/entity/schemas/attributes โ€” where pii always anonymizes the attribute value in anonymized responses and public never does, overriding the built-in defaults

2026-07-16 File API

  • New GET /v1/files/{id}/text endpoint added, returning the plain-text representation of a file entity (FileText); its status is ready (text available), not_ready while the text is still being prepared, or unsupported when text is unavailable for the file or organization

2026-07-15 Access Token API

  • New optional anonymize flag added when creating access tokens (POST /v1/access-tokens, including the app-token and assume-token variants); when true, 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}:publish endpoint added for starting an asynchronous V3 blueprint publication

2026-07-15 Customer Portal API

  • New POST /v2/portal/contract/{id}/resolve-templates endpoint 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:generate now accepts an optional context_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:workload endpoint 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_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