Skip to content

Merge two accounts

merge.merge_accounts(MergeMergeAccountsParams**kwargs) -> MergeMergeAccountsResponse
POST/v1/accounts/merge

Merges two accounts into one. The primary account retains its ID; the duplicate is soft-deleted.

Required scopes: accounts:update + accounts:delete

Rate limit category: Write

ParametersExpand Collapse
duplicate_id: str

ID of the duplicate record to merge into the primary and then discard.

primary_id: str

ID of the record to keep.

field_resolutions: Optional[Dict[str, FieldResolutions]]

Per-field resolution overrides keyed by attribute slug.

One of the following:
Literal["primary", "duplicate"]
One of the following:
"primary"
"duplicate"
class FieldResolutionsValue:
value: Optional[FieldResolutionsValueValue]
One of the following:
str
float
bool
Sequence[str]
class FieldResolutionsValueValueAddress:
city: Optional[str]

City name.

country: Optional[str]

2-letter ISO 3166-1 alpha-2 country code.

latitude: Optional[float]

Latitude coordinate.

longitude: Optional[float]

Longitude coordinate.

postal_code: Optional[str]

Postal or ZIP code.

state: Optional[str]

State or province.

street: Optional[str]

Street address line 1.

street2: Optional[str]

Street address line 2.

class FieldResolutionsValueValueFullName:
first_name: Optional[str]

The contact’s first name.

last_name: Optional[str]

The contact’s last name.

options: Optional[Options]
multi_select_union: Optional[bool]

When true, multi-select fields are merged by union rather than primary-takes-all.

ReturnsExpand Collapse
class MergeMergeAccountsResponse:
merge: Merge
id: str

Unique identifier for the merge operation.

status: str

Current status of the merge: cleanup_pending, done, or failed.

primary: Primary
id: str

Unique identifier for the entity.

created_at: str

ISO 8601 timestamp of when the entity was created.

fields: Dict[str, PrimaryFields]

Map of field names to their typed values. System fields are prefixed with $ (e.g. $name, $email); custom attributes use their bare slug.

value: Optional[PrimaryFieldsValue]

The field value, or null if unset.

One of the following:
str
float
bool
List[str]
class PrimaryFieldsValueAddress:
city: Optional[str]

City name.

country: Optional[str]

2-letter ISO 3166-1 alpha-2 country code.

latitude: Optional[float]

Latitude coordinate.

longitude: Optional[float]

Longitude coordinate.

postal_code: Optional[str]

Postal or ZIP code.

state: Optional[str]

State or province.

street: Optional[str]

Street address line 1.

street2: Optional[str]

Street address line 2.

class PrimaryFieldsValueFullName:
first_name: Optional[str]

The contact’s first name.

last_name: Optional[str]

The contact’s last name.

value_type: Literal["ADDRESS", "CHECKBOX", "CURRENCY", 12 more]

The data type of the field.

One of the following:
"ADDRESS"
"CHECKBOX"
"CURRENCY"
"DATETIME"
"EMAIL"
"FULL_NAME"
"MARKDOWN"
"MULTI_SELECT"
"NUMBER"
"SINGLE_SELECT"
"SOCIAL_HANDLE"
"TELEPHONE"
"TEXT"
"URL"
"HTML"
relationships: Dict[str, PrimaryRelationships]

Map of relationship names to their associated entities. System relationships are prefixed with $ (e.g. $owner, $contact).

cardinality: str

Whether the relationship is has_one or has_many.

object_type: str

The type of the related object (e.g. account, contact).

values: List[str]

IDs of the related entities.

updated_at: Optional[str]

ISO 8601 timestamp of when the entity was last updated, or null.

external_id: Optional[str]

External identifier for the entity, or null if unset.

summary: Summary
field_write_count: int

Number of attribute fields written onto the primary record.

minimum-9007199254740991
maximum9007199254740991
sync_repointed_count: int

Number of related records re-pointed from the duplicate to the primary.

minimum-9007199254740991
maximum9007199254740991
warnings: List[str]

Non-fatal warnings from the merge (e.g. skipped transfers).

Merge two accounts

from lightfield import Lightfield

client = Lightfield(
    api_key="My API Key",
)
merge_merge_accounts_response = client.merge.merge_accounts(
    duplicate_id="duplicateId",
    primary_id="primaryId",
)
print(merge_merge_accounts_response.merge)
{
  "merge": {
    "id": "id",
    "status": "status"
  },
  "primary": {
    "id": "id",
    "createdAt": "createdAt",
    "fields": {
      "foo": {
        "value": "string",
        "valueType": "ADDRESS"
      }
    },
    "httpLink": "httpLink",
    "relationships": {
      "foo": {
        "cardinality": "cardinality",
        "objectType": "objectType",
        "values": [
          "string"
        ]
      }
    },
    "updatedAt": "updatedAt",
    "externalId": "externalId"
  },
  "summary": {
    "fieldWriteCount": -9007199254740991,
    "syncRepointedCount": -9007199254740991,
    "warnings": [
      "string"
    ]
  }
}
Returns Examples
{
  "merge": {
    "id": "id",
    "status": "status"
  },
  "primary": {
    "id": "id",
    "createdAt": "createdAt",
    "fields": {
      "foo": {
        "value": "string",
        "valueType": "ADDRESS"
      }
    },
    "httpLink": "httpLink",
    "relationships": {
      "foo": {
        "cardinality": "cardinality",
        "objectType": "objectType",
        "values": [
          "string"
        ]
      }
    },
    "updatedAt": "updatedAt",
    "externalId": "externalId"
  },
  "summary": {
    "fieldWriteCount": -9007199254740991,
    "syncRepointedCount": -9007199254740991,
    "warnings": [
      "string"
    ]
  }
}