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, 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
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), andPOST /v2/integrations/{integrationId}/notifications/test(send a test notification to the calling user) - Integration settings now carry an optional
notificationsconfiguration 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}/summaryreturns the current summary text and status,POST /v1/files/{id}/summary-jobscreates (or returns) the current summary job, andGET /v1/files/{id}/summary-jobs/currentandGET /v1/files/{id}/summary-jobs/{job_id}poll job status; the summary response now exposes per-languagepreview_summary_de/preview_summary_enandshort_summary_de/short_summary_enfields - The
summary_statusfield 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_reasonfield added to theschedule(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_counterfield was replaced by ameter_countersarray, so moves involving multiple meter counters are now fully represented (breaking)
2026-06-22 Email Template API
POST /v1/email-template/templates/{id}:convertToBuildernow accepts an optionalas_copyflag (with an optional name) to convert a template to the visual builder as a new copy, leaving the original template unchanged