Added a new Application Stats resource that surfaces per-application aggregates — rolling 12-month and fiscal-year spend, license utilization, user counts, contract dates, cloud-cost consumption, and recent activity dates — through both a list endpoint and a single-application endpoint. Access requires applications:read, charges:read, and contracts:read permissions.

Added

Application Stats

Get Application Stats

  • An endpoint at /v2/applicationStats to retrieve aggregated stats for every application visible to the caller. One row per application.

Get Application Stats by Application ID

  • An endpoint at /v2/applications/{applicationId}/stats to retrieve the same aggregated stats for a single application.

  • Fields exposed include:

    • Spend (rolling & calendar): last_12_months_spend, last_12_months_ap_spend, last_12_months_expense_spend, year_to_date_spend, monthly_amount
    • Spend (fiscal year): current_fiscal_year_spend, last_fiscal_year_spend, current_and_last_fiscal_year_spend, last_2_fiscal_years_spend
    • Cost per user: cost_per_user
    • Usage: user_count, unique_user_count, unique_active_user_count, active_user_app_count, inactive_user_count, percent_active_licenses, users_not_in_employee_roster
    • Licenses & utilization: purchased_license_count, percent_utilized_licenses
    • Contracts: earliest_active_contract_start_date, renewal_date, last_contract_expiration_date, estimated_renewal_date, estimated_renewal_source, total_contract_value, total_contract_line_value, number_of_active_contracts, contract_status
    • Cloud consumption (populated only for applications connected to a cloud cost integration): percent_consumed, forecast_to_commitment_percentage, previous_day_cost, previous_day_cost_forecast, previous_day_cost_percent_to_forecast, current_week_cost, current_week_cost_forecast, current_week_cost_percent_to_forecast
    • Activity dates: last_transaction_date, last_ap_transaction_date, last_expense_transaction_date, last_monthly_payment_date
    • Audit: zylo_created_at, zylo_modified_at
  • The app_label field is searchable. The id field can be filtered. Results are scoped to applications the caller can see via vues.

Added the external_id field to Contracts to expose the identifier of a contract in its source system.

Added

Contracts

  • Added external_id field to Contracts, exposing the identifier of the contract in its source system.

Added a multipart upload endpoint for submitting contract documents for AI-powered extraction, along with new read-only resources for Company Documents, Pending Contracts, and Pending Contract Line Items. The upload endpoint requires applications:write and contracts:write permissions, and the Contract Assist feature must be enabled. Company Documents requires applications:read and contracts:read permissions.

Added

Pending Contracts

Upload Contract Document

  • An endpoint to upload a single contract document using multipart/form-data. Zylo handles the storage upload on your behalf — no separate PUT step required. After upload, AI-powered contract data extraction begins automatically. Maximum file size: 25 MB. Accepted file types: PDF.

Company Documents

Get Company Documents

  • An endpoint to retrieve a list of company documents. Documents are created automatically when files are uploaded through the Pending Contracts upload endpoint. Use the status field to track processing progress: U (uploading), A (active — extraction complete), or E (error).

Get Company Document by ID

  • An endpoint to retrieve a single company document by ID. Use this to check the processing status of an uploaded document.

Pending Contracts (Query API)

  • The Pending Contracts resource is now available in the Query API with fields including name, number, owner, start_date, end_date, native_currency, native_total_contract_value, billing_frequency, contract_term, notification_period, is_reviewed, source, and more.

Pending Contract Line Items (Query API)

  • The Pending Contract Line Items resource is now available in the Query API with fields including app_name, application_id, line_description, license_type, license_name, start_date, end_date, quantity, unit_price, total_price, and more.

Added a new Application Licenses resource exposing per-license assignment data.

Added

Application Licenses

Get Application Licenses

  • An endpoint to retrieve license assignments across your applications, including id, application_id, name, license_type, active, is_paid_license, external_user_id, last_activity_date, zylo_created_at, and zylo_modified_at.

Get Application License by Id

  • An endpoint to retrieve a single license assignment by its id.

Applications

  • Added an application_licenses relationship to retrieve the license assignments for an application.

Application Users

  • Added an application_licenses relationship to retrieve the license assignments for an application user.

Fixed two issues affecting users created via the Create Zylo User endpoint.

Fixed

Zylo Users

  • Resolved an issue where users created via the API could be unable to sign in via SAML.
  • Resolved an issue where users created via the API could be missing their owned applications in their views.

Improved the accuracy of Report Builder queries that combine aggregations (sum, count, avg, min, max) on the primary resource with with joins.

Fixed

Reports API / Query API

  • Reports that aggregated on the primary resource while also joining another resource — for example, "total spend per requestor per application" (grouping payments by email with with: { applications }) — could previously return too many rows with understated per-row totals. The fix restores the intended grouping. If you have saved reports in this shape, you may now see fewer rows with higher per-row aggregates. These are the accurate values.

Changed

Reports API / Query API

  • Queries that use an op field on the primary resource alongside with now require at least one non-op field on the primary to group by. Previously these queries failed with an unclear database error; they now return a 400 Bad Request with guidance:

    When using "op" fields on the primary resource alongside "with", at least one non-"op" field must be provided to group by. Add a non-aggregate field to "fields", or remove "with".

Added a new Company resource for retrieving details about your organization.

Added

Company

Get Company

  • An endpoint to retrieve details about the authenticated user's organization, including company name, default currency, timezone, and more.

Company Fields

The following fields are available in the Company resource:

  • id - Unique identifier for the company
  • name - The name of the company
  • currency - The default currency used by the company (e.g., USD, EUR)
  • timezone - The timezone preference for the company (e.g., America/New_York)
  • employee_roster - The employee roster source for the company
  • employee_roster_integration_id - The integration ID of the employee roster
  • fiscal_year_settings - The fiscal year configuration settings for the company

Added a new Alerts resource for managing notification alerts about contract renewals and application transactions.

Added

Alerts

The Alerts API provides endpoints to create and manage notification alerts that notify users about important events:

Get Alerts

  • An endpoint to retrieve all alerts configured for your company.

Get Alert by ID

  • An endpoint to retrieve a specific alert by its unique identifier.

Create Alert

  • An endpoint to create new alerts for contract renewals or application transactions.
  • Supports three alert types:
    • Renewal alerts - Notify when an application's contract is approaching renewal (7-240 days in advance)
    • Transaction alerts - Notify when application transactions exceed a specified threshold
    • Contract renewal alerts - Notify when a contract is approaching renewal
  • Alerts require at least one email recipient and an owner.
  • Alert delivery method is automatically set to email.

Update Alert

  • An endpoint to modify alert properties like memo, owner, and notification settings.
  • Note: Alert type and associated application/contract cannot be changed after creation.

Delete Alert

  • An endpoint to delete an alert by its unique identifier.

Alert Fields

The following fields are available in the Alerts resource:

  • id - Unique identifier for the alert
  • type - Alert type (renewal, transaction, or contract-renewal)
  • application_id - The application this alert is associated with (for renewal and transaction alerts)
  • contract_id - The contract this alert is associated with (for contract-renewal alerts)
  • owner - Email address of the alert owner
  • method - Alert delivery method (currently email only)
  • settings - Configuration object containing recipients and alert-specific settings (notification periods, thresholds, etc.)
  • memo - Optional note about the alert
  • last_processed_date - Date and time the alert was last processed
  • zylo_created_at - Date and time the alert was created
  • zylo_modified_at - Date and time the alert was last modified

Updatable Fields

The following fields can be modified after alert creation:

  • owner - Change the alert owner
  • settings - Update recipients or alert-specific configuration
  • memo - Update the alert note

Adds a new field to the Applications resource to track when data was last processed.

Added

Applications

  • Added last_processed_date field to show when an application was last processed by its data source.

Fixed an issue in the Integrations resource where some records were not being returned.

Fixed

Integrations

  • Fixed an issue where integrations without a linked application were not being returned by the API. Suite integrations (such as Atlassian) may not have an application_id since they can be related to multiple applications.