Skip to main content

API Changelog

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

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

2026-06-25 Calendar API

  • New DELETE /v1/calendar/sources/outlook/{calendar_id} endpoint added for disconnecting a previously connected Outlook calendar

2026-06-25 Snapshot API

  • New endpoints added to schedule recurring organization snapshots — read, create or update, and delete a per-organization snapshot schedule (GET/PUT/DELETE /v1/org-snapshot-schedule) with a cron expression, timezone, retention window, and excluded resource types

2026-06-25 Integration Toolkit API

  • New integration notification-monitoring endpoints added: GET /v2/integrations/{integrationId}/notifications/history (paginated history of fired and suppressed notifications), GET /v2/integrations/{integrationId}/notifications/status (live per-rule alert state and baseline bands), and POST /v2/integrations/{integrationId}/notifications/test (send a test notification to the calling user)
  • Integration settings now carry an optional notifications configuration object (recipients, delivery channels, alert rules, and digest schedule) on the v1 and v2 create, update, and read endpoints

2026-06-24 File API

  • AI file summaries are now managed as asynchronous jobs: new GET /v1/files/{id}/summary returns the current summary text and status, POST /v1/files/{id}/summary-jobs creates (or returns) the current summary job, and GET /v1/files/{id}/summary-jobs/current and GET /v1/files/{id}/summary-jobs/{job_id} poll job status; the summary response now exposes per-language preview_summary_de/preview_summary_en and short_summary_de/short_summary_en fields
  • The summary_status field was removed from file response objects — read summary state from the new summary endpoints instead (breaking)

2026-06-24 Workflows Execution API

  • New optional read-only error_reason field added to the schedule (DelayedSchedule/RelativeSchedule) of automation and decision tasks across flow execution responses; it is populated when scheduling the task failed (e.g. the referenced date attribute is empty or the resolved fire time is already in the past) and cleared once the task is successfully re-armed

2026-06-24 Event: Location Move Requested

  • The single meter_counter field was replaced by a meter_counters array, so moves involving multiple meter counters are now fully represented (breaking)

2026-06-22 Email Template API

  • POST /v1/email-template/templates/{id}:convertToBuilder now accepts an optional as_copy flag (with an optional name) to convert a template to the visual builder as a new copy, leaving the original template unchanged