> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.middesk.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.middesk.com/_mcp/server.

# Changelog

## September 28, 2026

## Monitoring / Webhooks

### Added `lien.continued` and `lien.lapsed` webhook events

UCC Lien Monitoring now supports two new lien events. `lien.continued` fires when a continuation filing extends a monitored lien's `lapse_date`, and `lien.lapsed` fires when an open lien passes its `lapse_date` without a continuation and closes. Both deliver the full lien in `data.object`. A lien that closes by lapsing now sends `lien.lapsed` instead of `lien.terminated`, and `lien.terminated` only covers liens closed by a termination filing. Webhook endpoints created before this change keep their existing event subscriptions, so add `lien.lapsed` and `lien.continued` to an endpoint's `enabled_events` to receive them. [View the lien webhook events](/monitor-activity/events).

## Entity Management / Embedded components

### Added a `highlighted_state` prop to the embedded tax registration intake

The `tax-registration-intake` component accepts an optional `highlighted_state` prop that takes a two-letter US state code, such as `NY`. When the entity has an open registration request for that state, the component pre-selects its tile and moves it to the top of the list, so the flow opens on the state your user already chose in your app. If the state has no open request, the component selects the first open request and keeps the original order. [View the component props](/manage-entities/embed-tax-registration).

## September 7, 2026

## Platform / API

### Added the Sub-Accounts API to the reference

Partner accounts can provision and manage customer accounts over the API. `POST /v1/sub_accounts` creates a sub-account and returns an initial sandbox API key, `GET /v1/sub_accounts` lists and filters them, and `PATCH /v1/sub_accounts/{id}` activates or deactivates one. Deactivating a sub-account makes its API keys return `401` while retaining its data and keys, and re-enabling restores access. `external_id` acts as an idempotency key unique within the parent account, so repeating a create with the same value returns the existing sub-account with `200` instead of creating a duplicate. A sub-account inherits the parent's products by default; set `inherit_products_from_parent` to `false` to manage `products` independently. Separate endpoints list, create, and revoke sub-account API keys; treat every returned key value as a secret and rotate by creating a replacement, cutting traffic over, then revoking the old key. Available to accounts configured for sub-account provisioning. [View the Sub-Accounts API reference](/api-reference/sub-accounts/create-sub-account).

## Web Presence / API

### Added BBB, Trustpilot, and TikTok profiles to web presence results

Web presence analysis discovers and matches Better Business Bureau, Trustpilot, and TikTok profiles and returns them in the `profiles` array on the business with `type` set to `bbb`, `trustpilot`, or `tiktok`. Each source returns its own metadata shape, and `rating` and `rating_count` are platform-specific: BBB reports `average_review_rating` and `review_count`, Trustpilot reports `trust_score` and `rating_count`, and TikTok returns neither. Metadata fields with no value are omitted rather than returned as `null`. Integrations that branch on `profile.type` should tolerate the new values. [View the Profile object reference](/reference/profile).

## Business Verification / API

### Added an attachment option to document download URLs

`GET /v1/documents/{id}/download_url` accepts an optional `disposition` query parameter. Set it to `attachment` to receive a URL that downloads the file instead of rendering it inline, which lets an integration offer a save-to-disk action. Any other value, including omitting the parameter, keeps the existing inline behavior, so no action is required. [View the document download URL reference](/api-reference/documents/get-document-download-url).

### Documented the `parameter` field on error responses

Entries in the `errors` array on an error response can include an optional `parameter` field naming the request parameter the error applies to. Errors that are not tied to a specific parameter omit it, so treat the field as optional when parsing. This documents existing API behavior and requires no changes.

## Credit Risk / API

### Documented the `lien.updated` webhook payload

The `lien.updated` event sent to a webhook endpoint configured through `/v1/webhooks` is now described in the API reference. The event fires on every lien lifecycle transition and delivers the full lien in `data.object`, so read `data.object.status` to determine the new state. `lien.updated` carries no `previous_attributes`. This documents an event that already fires and requires no changes. [View the Lien object reference](/reference/lien).

## Entity Management / API

### Removed the `supported_only` parameter from jurisdiction search

`GET /v1/agent/jurisdictions/search` no longer accepts the `supported_only` query parameter. Requests that still send it are unaffected, and the other filters, including `state`, `tax_type`, `local_only`, and `slug`, are unchanged. Remove the parameter from any integration that sends it. [View the jurisdiction search reference](/api-reference/entity-management/jurisdictions/search-jurisdictions).

## August 31, 2026

## Business Verification / API

### Fixed the submitted address key in business creation examples

Address lines on `POST /v1/businesses` are `address_line1` and `address_line2`. Some examples and the request schema showed `address_line_1` and `address_line_2`, which the API ignores, so an address submitted with the underscored keys was accepted without its street lines. Check any integration built from those examples and send `address_line1` and `address_line2`. [View the connections guide](/verify-business/discover-connections).

## Credit Risk / API

### Added a terminal `failed` status to liens

A lien filing that a state rejects and Middesk does not resubmit ends in `status: failed` with `status_category: failed`. `failed` is terminal, so a lien in this state does not move on to `filed`, `open`, or `closed`. Integrations that branch on lien `status` or `status_category` should tolerate the new value and treat it as an end state. [View the Lien object reference](/reference/lien).

## Agents / API

### Added `business_id` to agent runs and run webhook events

The Run object includes a nullable `business_id` identifying the Middesk business a run is scoped to. It is returned by `GET /v1/runs` and `GET /v1/runs/{id}` and included in the `run.created`, `run.interrupted`, and `run.completed` webhook payloads, so a consumer no longer needs to keep its own thread-to-business mapping. Run events also send an `X-Correlation-ID` header using the business `external_id` when set and the Middesk business id otherwise, matching the `business.updated` convention. `business_id` is `null` on `run.created` when a run starts with an inline `business` payload for a business that does not exist yet; later events for that run carry the id. The field is additive and nullable, so existing consumers need no changes. [View the Run object reference](/reference/run) and [agent webhook events](/work-with-agents/webhooks).

## August 24, 2026

## Onboarding / API

### Added sandbox support for Smart populate website lookups

`POST /v1/prefill/businesses` with `website_url` returns a business profile in sandbox instead of `null`. Sandbox derives the business from the submitted domain, so any domain returns a usable profile, and a domain that maps to a sandbox test business returns that business. `industry_classifications` is `null` unless the account uses enhanced sandbox data. Integrations can exercise the website lookup path before moving to Production. Production behavior is unchanged. [View the Smart populate guide](/accelerate-onboarding/smart-populate).

## Web Presence / API

### Added X profiles to web presence results

Web presence analysis discovers and matches X (formerly Twitter) profiles and returns them in the `profiles` array on the business with `type` set to `x`. Sandbox returns an X profile alongside the other supported platforms. Integrations that branch on `profile.type` should tolerate the new value. [View the Profile object reference](/reference/profile).

## August 17, 2026

## Business Verification / API

### Fixed stale submitted phone numbers and email addresses after an update

The `submitted` object on a Business reflects phone numbers and email addresses sent on a later `PATCH /v1/businesses/{id}`. Previously `submitted.phone_numbers` and `submitted.email_addresses` kept the values from business creation, so a business updated with a new number or address still reported the original one. No integration changes are required. [View the Business object reference](/reference/business).

## Credit Risk / API

### Breaking: Lien packet numbers can no longer contain underscores

Lien filing, batch lien filing, and lien termination requests reject a `packet_number` containing an underscore with a `422` and the message `packet_number cannot contain underscores`. Some state filing offices do not accept underscores in a filer reference. Update any integration that builds `packet_number` from a value that can contain one. Terminations of liens already filed with an underscored packet number are still accepted, and auto-generated packet numbers are unaffected. [View the lien filing guide](/assess-risk/file-lien).

## Platform / API

### Added rate limit responses for sandbox business creation

`POST /v1/businesses` and `POST /v1/business_batches` in sandbox return `429` with a `Retry-After` header when an account exceeds its per-minute business creation limit, and `503` with a `Retry-After` header when the limit cannot be evaluated. Each row in a business batch CSV counts as one business creation. Wait for the number of seconds in `Retry-After` before retrying. Production behavior is unchanged. [View API reference](/api-reference/business-verification/businesses/create-a-business).

### Changed webhook GraphQL payloads to match the Business Risk REST response

For accounts using Business Risk, webhook GraphQL types return the same risk attributes as the REST Business and Website responses, including risky keyword results and a `risk` verdict carrying `status` and `score`. Three changes affect existing subscribers on a Risk order: `risk` returns `status: "unavailable"` with a `reason` when an assessment cannot be produced instead of returning null, `level` and `latestAssessmentId` can be null, and discovered phone numbers join the top-level `phoneNumbers` collection with a `submitted` flag instead of appearing under `website.phoneNumbers`. [View the GraphQL API guide](/build/graphql).

## Agents

### Changed agent automation settings to be self-serve in the Dashboard

Account admins configure how agent findings apply from **Settings > Agents** in the Dashboard instead of contacting their account manager. Choose manual review for every finding, or apply findings automatically above a confidence threshold, and override the choice for an individual orchestrator or specialist agent. The `auto_approve` policy applies findings that meet the threshold rather than every proposed action, and document upload requests always wait for review. [View the interrupt policy guide](/work-with-agents/interrupt-policy).

## August 10, 2026

## Business Verification / API

### Added International Business Verification

Middesk verifies businesses registered outside the United States and returns their registrations in the same format used for US Secretary of State data. Add an `international_business_verification` order when you create a business, optionally supply known registration numbers in the `registrations` array, and use `POST /v1/businesses/{id}/registrations` to add a registration to an existing business. Available to accounts with International Business Verification enabled. [View the international verification guide](/verify-business/international).

### Changed the registration object for international registrations

The registration object now includes `country_code`, `jurisdiction_details`, and `submitted`. For international registrations, `jurisdiction` can return `HOME`, `EXTRA_PROVINCIAL`, `UNKNOWN`, or `null` in addition to `DOMESTIC` and `FOREIGN`; `state`, `source`, `entity_type`, `registered_agent`, and `registration_date` can also be `null`. Confirm your integration tolerates null values on these fields. US registrations are unchanged. [View the Registration object reference](/reference/registration).

## Credit Risk / API

### Clarified the collateral contract for lien filing

Lien filing requests take `collateral` as a string describing the assets that secure the lien. `collateral_type` is a categorization Middesk returns on the lien object, not a request input. The lien filing and lien search guides now show the string form and list the `collateral_type` values returned in responses. [View the lien filing guide](/assess-risk/file-lien).

## August 3, 2026

## Risk Assessment API

### Added Risk Assessment response schemas

The Risk Assessments API now documents the full assessment response, including `dimensions`, `identifier_assessments`, `score`, `level`, `title`, `description_markdown`, and the business snapshot link. Use the guide to retrieve the scored assessment behind a Business `risk` verdict. [View Risk Assessment API guide](/business-risk/risk-assessments).

### Changed phone identifier assessment resource types

Phone identifier assessments now use `resource.type: "phone_number"` so the value matches the Business `phone_numbers[]` sub-resource developers join against. Existing assessment snapshots keep their stored value; use the identifier risk guide for the current resource type vocabulary. [View identifier risk guide](/business-risk/identifier-risk).

### Added sandbox support for Risk orders

Sandbox Risk orders can now complete with deterministic sample assessments, so developers can test Risk order completion and Risk Assessment API retrieval without production data. Use the Risk guide to order Risk and fetch the resulting assessment. [View Risk guide](/business-risk).

## July 20, 2026

## Credit Risk / API

### Added jurisdiction validation to lien filing requests

Lien filing requests now reject unsupported jurisdictions before submission. Use the credit product jurisdiction coverage guide to confirm where lien filing, lien search, bankruptcy, litigation, criminal, and tax lien products are supported. [View jurisdiction coverage](/assess-risk/jurisdiction-coverage).

## June 26, 2026

## Platform / API

### Added webhook event schemas for business webhook payloads

Webhook event schemas let you configure which fields Middesk sends in the `data.object` of business webhook events while preserving the existing event envelope. Use the API or Dashboard schema builder to create, validate, and preview schemas before saving. [View webhook guide](/build/webhooks).

## Monitoring / API

### Added Business Timeline API for registration events

The Business Timeline API returns chronological Secretary of State registration events for a Business, including changes to status, addresses, names, and people. Use it to power monitoring, review, and audit workflows that need registration-history context. [View Timeline guide](/monitor-activity/timeline).

## April 27, 2026

## API

### Deprecated: `orders[].package` field

The `orders[].package` field is deprecated in favor of `orders[].product`. Requests that include `orders[].package` will continue to work but will return a deprecation warning in the response. Update your integration to use `orders[].product`, as `orders[].package` will be removed in a future release.

## March 5, 2026

## Dashboard

### Enhanced Sandbox Preview

New enhanced sandbox mode available in Technology Preview. Define custom test businesses and use pre-built scenario templates to simulate specific verification outcomes directly from the Dashboard. [Request access](https://www.middesk.com/contact-sales) or view the [enhanced sandbox guide](/enhanced-sandbox).

## February 18, 2026

## Agents

### Agents API

New API to retrieve specific agent details or a list of available agents on your account. Each agent has a defined type and set of capabilities for resolving business verification signals. [View API reference](/api-reference/agents/agents/list-agents).

### Threads API

New API to create and manage agent threads. A thread holds context and history for agent work, typically associated with a `business_id`. Use threads to maintain state across multiple agent runs for the same Business. [View API reference](/api-reference/agents/threads/create-an-agent-thread).

### Runs API

New API to execute an agent within a thread. A run produces steps and artifacts that provide a full audit trail of the agent's work, including confidence scores and source references. Runs support an interrupt pattern for human-in-the-loop workflows. [View API reference](/api-reference/agents/runs/create-an-agent-run).

## December 18, 2025

## Onboarding

### Autocomplete API

New Autocomplete API returns real-time, structured business suggestions based on partial name input—including names, addresses, people, and entity type. Integrate directly into your frontend to help users quickly find and select businesses during onboarding. [View integration guide](/accelerate-onboarding/autocomplete).

### Smart populate API

New synchronous API returns real-time business data—including names, addresses, people, entity type, last 4 digits of EIN, website, and industry classifications. Use it to instantly pre-fill onboarding fields after a user selects a business from autocomplete. [View integration guide](/accelerate-onboarding/smart-populate).

### Business Enrichment Orders

New asynchronous Business Enrichment Order returns business attributes with higher fill rates for web analysis, industry classification, and other data—without triggering verification or audit. Use it to pre-populate onboarding fields when you need broader coverage than Smart populate provides. [View integration guide](/accelerate-onboarding/business-enrichment).

## API

### GraphQL GA

GraphQL API is now generally available for all accounts. [View API reference](/build/graphql).

## December 4, 2025

## API

### GraphQL Preview

New GraphQL API available in Technology Preview. Query business verification data with nested relationships in a single request, reducing typical workflows from 3-5 sequential calls to one declarative query. [Request access](mailto:info@middesk.com) or view the [GraphQL API reference](/build/graphql).