We have an API endpoint that can update an existing contact record by email address, so you could use this to update existing records. In the case where there is no record with that email, this would instead create a new record:
POST /contacts/v1/contact/createOrUpdate/email/:contact_email - Create a contact if it doesn't exist in a portal already, or update it with the latest property values if it does.