NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4227 most downloaded on PyPI
Last release 18 days ago
16 Sep 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 55 of 57 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
59 releases · first in 2023
One column per quarter.
Merge Python SDK Release Notes - Version [4.2.0]
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
Merge Python SDK Release Notes - Version [4.1.0]
Adds two new optional fields to the SyncStatus object across all categories:
sync_status_reason — why a SYNCING model is temporarily not progressing (RATE_LIMITED or WAITING_ON_OTHER_MODELS).data_fresh_as_of — the timestamp the model's synced data is current as of.This release upgrades the SDK's code generation, resolves the pydantic v2 deprecation warnings that were polluting customer logs ( #117 ), improves re…
This release upgrades the SDK's code generation, resolves the pydantic v2 deprecation warnings that were polluting customer logs (#117), improves retry and rate-limit handling, and adds optional SDK logging. It also raises the minimum supported Python version to 3.10.
Python 3.10 or later is now required. Support for Python 3.8 and 3.9 has been dropped; the package will not install on those interpreters. Projects on 3.8/3.9 must upgrade Python or remain on the 3.x line of the SDK.
# Before
python = "^3.8"
# After
python = "^3.10"Merge and AsyncMerge now accept an optional logging parameter (a LogConfig dict or a Logger instance). Logging is silent by default, so existing behavior is unchanged unless you opt in.from merge import Merge
client = Merge(
api_key="...",
account_token="...",
logging={"level": "debug", "silent": False},
)smart_union, allow_population_by_field_name, and class-based Config), which emitted DeprecationWarnings on every model use under pydantic v2 and polluted application logs. The pydantic v2 code path now uses ConfigDict with current keys. No code changes are required — the warnings simply stop.These do not require code changes, but may be observable.
Retry backoff now respects rate-limit headers. Retries honor the Retry-After and X-RateLimit-Reset response headers (up to 60 seconds) and use a larger maximum backoff (10s → 60s). This improves handling of 429/5xx responses but can lengthen the worst-case duration of a call that hits repeated retryable errors. The retry count is unchanged (default 2, still configurable via request_options).
Enum members stringify to their value on Python 3.11+. Generated enums now derive from StrEnum. On Python 3.11+, str(SomeEnum.MEMBER), f-strings, and format() return the bare value (e.g. "ADMIN") instead of "SomeEnum.ADMIN". Equality with the string value (member == "ADMIN") and data returned from the API are unaffected — this only matters if you stringify an enum member object directly, for example when logging or building display strings. There is no change on Python 3.10.
Merge Python SDK Release Notes - Version [3.1.0]
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
Merge Python SDK Release Notes - Version [3.1.0a1]
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
Merge Python SDK Release Notes - Version [3.0.1]
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
Merge Python SDK Release Notes - Version [3.0.0]
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
Expand Parameter Type Changes:
Expand parameters changed from large string union enums to individual enum items that accept a single value or a list. Old pre-combined enum values (e.g. TicketsListRequestExpand.ACCOUNT_ASSIGNEES_CREATOR) have been
removed.
# v2.x — single combined enum value
client.ticketing.tickets.list(
expand=TicketsListRequestExpand.ACCOUNT_ASSIGNEES_CREATOR,
)
# v3.x — single item or list of individual items
from merge.resources.ticketing.resources.tickets import TicketsListRequestExpandItem
client.ticketing.tickets.list(
expand=[
TicketsListRequestExpandItem.ACCOUNT,
TicketsListRequestExpandItem.ASSIGNEES,
TicketsListRequestExpandItem.CREATOR,
],
)
# Single expand still works
client.ticketing.tickets.list(expand=TicketsListRequestExpandItem.ACCOUNT)
# Passing a string is unchanged
client.ticketing.tickets.list(expand="account,assignees,creator")
Affected types: all *ListRequestExpand and *RetrieveRequestExpand types have been replaced with *ListRequestExpandItem and *RetrieveRequestExpandItem equivalents across Accounting, ATS, Chat, CRM, File Storage,
HRIS, Knowledge Base, and Ticketing modules. The API request format (?expand=a,b,c) is unchanged — only the Python input shape changed.
ats.candidates.ignore_create Signature Change:
The reason and message keyword arguments were collapsed into a single request body model.
# v2.x
client.ats.candidates.ignore_create(
model_id,
reason=IgnoreCommonModelRequestReason.GENERAL_CUSTOMER_REQUEST,
message="Customer requested ignore",
)
# v3.x
from merge.resources.ats import IgnoreCommonModelRequest, IgnoreCommonModelRequestReason
client.ats.candidates.ignore_create(
model_id,
request=IgnoreCommonModelRequest(
reason=IgnoreCommonModelRequestReason.GENERAL_CUSTOMER_REQUEST,
message="Customer requested ignore",
),
)
IgnoreCommonModelRequestReason also moved from merge.resources.ats.resources.candidates to merge.resources.ats. The top-level category import works in both 2.x and 3.x; only the deep resource-scoped import path was
removed.
Merge Python SDK Release Notes - Version [3.0.0a1]
The per-resource *RequestExpand enums (which baked in every relation combination, e.g. TicketsListRequestExpand.ASSIGNEES_ACCOUNT_CREATOR) have been replaced by *RequestExpandItem enums of single values. Pass a list of items
for multiple relations, or a string for direct control. Wire-level request to Merge is unchanged.
# Before
from merge.resources.ticketing.resources.tickets import TicketsListRequestExpand
client.ticketing.tickets.list(expand=TicketsListRequestExpand.ACCOUNT)
client.ticketing.tickets.list(expand=TicketsListRequestExpand.ASSIGNEES_ACCOUNT_CREATOR)
# After
from merge.resources.ticketing.resources.tickets import TicketsListRequestExpandItem
client.ticketing.tickets.list(expand=TicketsListRequestExpandItem.ACCOUNT)
client.ticketing.tickets.list(expand=[
TicketsListRequestExpandItem.ASSIGNEES,
TicketsListRequestExpandItem.ACCOUNT,
TicketsListRequestExpandItem.CREATOR,
])
# Strings continue to work unchanged
client.ticketing.tickets.list(expand="account")
client.ticketing.tickets.list(expand="account,assignees,creator")Same pattern applies in every category (accounting, ats, crm, hris, filestorage, knowledgebase, chat, ticketing).
Merge Python SDK Release Notes - Version [2.6.4]
Merge Python SDK Release Notes - Version [2.6.3]
ONE_ON_ONE_CHAT, GROUP_CHAT, and MEETING_CHAT conversation types to TypeEnumAccounting: Added quantity and unit_price fields to ExpenseLine and ExpenseLineRequest models
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
Knowledge Base category now included in the SDK!
Adds the following fields to ticketing collection collection_url, remote_created_at and remote_updated_at
collection_url, remote_created_at and remote_updated_atThis release addresses an issue with passthrough when using the Async client AsyncMerge where calls to the passthrough client were failing with the fo
AsyncMerge where calls to the passthrough client were failing with the following error name 'resources_ticketing_resources_passthrough_client_AsyncPassthroughClient' is not defined.This release adds lazy loading of imports to greatly reduce the memory footprint of the SDK. Note the first usage of a client will have additional lat
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
Update nested object return type Dictionaries of objects, or lists of strings and objects will now be typed with the object. For example for the follo
import merge
from merge.client import Merge
merge_client = merge.Merge(api_key=api_key, account_token=account_token)
response = merge_client.filestorage.files.list(page_size=1)
assert response.results
file = response.results[0]
permission = file.permissions[0]
permission will be <class 'merge.resources.filestorage.types.permission.Permission'> instead of <class 'dict'>Reduce memory footprint of the SDK Should resolve issues with memory consumption of the Merge Python SDK. When this version is picked up, users should
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog
AccessLevelEnum need to be updated to TicketAccessLevelEnum in code as well as when importingAdded category_type and status query params on the /tracking-categories endpoint
category_type and status query params on the /tracking-categories endpointstatus query param on the /accounts endpointstatus query param on the /contacts endpointThis release affects all categories.
This release affects all categories.
This release impacts all categories.
This release impacts all categories.
Note this change impacts all categories.
Note this change impacts all categories.
v1.1.2Note this release is limited to a single model across all categories.
Note this release is limited to a single model across all categories.
Note: this release impacts ALL categories
Note: this release impacts ALL categories
isShellData query parametervalue field to avoid breakage when returning variable types.Note: This release impacts all categories
Note: This release impacts all categories
__init__.py, this allows users to access the client via from my_sdk import my_sdk_client as opposed to from my_sdk.client import my_sdk_client.union_naming configuration flag.pyproject.toml.Note: This change impacts all categories.
Note: This change impacts all categories.
value field to avoid breakage when returning variable types.Note: This release only impacts the ACCOUNTING category.
Note: This release only impacts the ACCOUNTING category.
tracking_categories field on submodels was marked as Required.Note - this release impacts all categories. There is no change to the underlying AP; only limited to the SDK usage.
Note - this release impacts all categories. There is no change to the underlying AP; only limited to the SDK usage.
Note: This release impacts all categories. No changes to the underlying API, only includes changes to SDK usage.
Note: This release impacts all categories. No changes to the underlying API, only includes changes to SDK usage.
Note that changes in this release impact all categories!
Note that changes in this release impact all categories!
coverage field on the RemoteFieldAPI objectintegration_specific_config field on the EndUserDetailsRequest objectCRM
Address object field was missing.Ticketing
Note: The changes in this release impact all categories.
Note: The changes in this release impact all categories.
mime_type as a query parameter on FileNote: The changes in this release impact all categories.
Note: The changes in this release impact all categories.
is_in_beta field on the AccountIntegration model with the new and more accurate category_beta_status field.ended_after, ended_before, started_after, and started_before query parameters on the /time-off endpointPermissionRequest modelNote: This change adds improvements to all categories.
Note: This change adds improvements to all categories.
We fix some reported enum serialization issues regarding sending the enum directly rather than the value of the enum itself.
Add support for a RequestOptions object for each generated function within Python SDKs. This parameter is an optional final parameter that allows for configuring timeout, as well as pass in arbitrary data through to the request. RequestOptions is a TypedDict, with optional fields, so there's no need to instantiate an object, just pass in the relevent keys within a dict!
timeout_in_seconds overrides the timeout for this specific requestadditional_body_parameters are expanded into the JSON request bodyadditional_query_parameters are expanded into the JSON query parameters mapadditional_headers are expanded into the request's header mapRemove support for Python 3.7. In order to support newer versions of libraries we depend on (such as typing and typing-extensions), we must move on to Python 3.8. With this change we are also able to:
backports dependency, as cached_property is now included within functoolsNote: This release should have no impacts on SDK usage.
Note: This release should have no impacts on SDK usage.
Note: this release impacts the Accounting, ATS, CRM, and Ticketing categories
Note: this release impacts the Accounting, ATS, CRM, and Ticketing categories
RemoteData object, specifically the data field. The typing is updated from being a list of the RemoteData object to a list of any types.Note: This change is to roll back a bug in the SDK generator. There should be no impact on usage of the SDK or the models/fields available otherwise.
Note: This change is to roll back a bug in the SDK generator. There should be no impact on usage of the SDK or the models/fields available otherwise.
Note: this release impacts the Accounting, CRM, File Storage, and Ticketing categories
Note: this release impacts the Accounting, CRM, File Storage, and Ticketing categories
purchase_orders field to the InvoiceRequest object along with updating some field descriptions.owner field to the Contact object./roles endpoint along with its associated objects.Note: this release only impacts the Accounting category
Note: this release only impacts the Accounting category
currency on the ExpenseLineRequest model and status on the Invoice object.Note: this release only impacts the Accounting category
Note: this release only impacts the Accounting category
Note: We update the version to v1.0.0 for semantic purposes. This SDK has been out of Beta since a much earlier version.
Nothing published for this version
This release makes no changes to our existing SDKs!
This release makes no changes to our existing SDKs!
We update the generator to allow us to internally generate code snippets for better documentation on the docs.merge.dev website. This change is different from v0.2.9 in that it fixes a few issues with the code generation code as well as adds snippets inline as well.
This release makes no changes to our existing SDKs!
This release makes no changes to our existing SDKs!
This change only impacts the Accounting category
This change only impacts the Accounting category
Note this release should have no impact on existing usage of the Merge Python SDK.
Note this release should have no impact on existing usage of the Merge Python SDK.
In the CRM category, we've added support for new query parameters
We update the FileStorage SDK to include new query parameters offered in the Merge FileStorage API
in v0.1.3, we fix GET requests for RemoteFields. However, POSTs were still mistyped creating a bug that would not allow successful POST of RemoteField
Typing was mishandled previously for RemoteField endpoint return objects. We update the schema to support the correct object shape.
Deprecated benefit_plan_type field on the Benefits Common Model
delete_account.create() to delete_account.delete()tracking_categories field to Invoice Common Model with expands supportlist() and retrieve() endpointslist() and retrieve() endpointsbenefit_plan_type field on the Benefits Common Modelremote_created_after query parameter on Attachment Common Modelremote_created_after query parameter on Comments Common ModelThis release supports updating the compatibility of the httpx dependency to be >=0.23.3
httpx dependency to be >=0.23.3File Storage category now included in the SDK!
X-Fern-SDK-VersionAccounting, CRM, and Ticketing categories use the wrong URL prior to this release. We resolve this issue. There should be no change to ATS and HRIS ca
Fix pypi auth for deploy to remote package manager.
Includes swapover from Stainless SDK
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →