Skip to main content
Breaking change in arize-phoenix-client 2.6.0+ (Python) and arize-phoenix 15.0.0+ (server) client.datasets.create_dataset() now defaults to upsert semantics: if a dataset with the given name already exists, incoming examples are merged into the latest version rather than returning a 409 Conflict. New examples are created; existing examples matched by their stable id are updated. This is a breaking change for callers that relied on the old fail-on-duplicate behavior.

Upsert behavior

  • New dataset — created as before; no behavior change.
  • Existing dataset, no id on examples — examples are appended as new examples in a new version.
  • Existing dataset, id supplied — examples whose id matches an existing example are updated in place; unmatched ids are inserted as new examples.
To opt back in to the strict create-only behavior, pass action="create" directly on the REST endpoint — the Python client does not expose this option, as upsert is now the recommended default.

Supply stable example IDs for deterministic updates

Provide an id field on each example so re-uploads update the same row rather than inserting duplicates: