SpecklePy storing unchanged objects multiple times

When I send objects from revit to speckle multiple times without changing them, I can see that speckle is doing some diffing for me because all the items have the same id as the previous commit, so I know the object is only stored once.

However when I send objects to speckle via the python SDK multiple times, all the objects have different ids in the new commit meaning everything is being stored twice.

Here is the python code I used to create this commit

def send_to_speckle(client, transport, STREAM_ID):

    latest_commit = get_latest_commit(client, STREAM_ID)

    latest_commit_obj = get_object(transport, latest_commit.referencedObject)

    obj_id = operations.send(latest_commit_obj, [transport])

    commid_id = client.commit.create(



        message='same objects, right?',


How do I commit to speckle and have specklepy do the diffing for me?

Thanks for your help.